Skip to content

Conversation

@iemyashasvi
Copy link

@iemyashasvi iemyashasvi commented Nov 5, 2025

Description

FiservEMEA Connector Integration with Authorize, Psync, Refunds, Rsync ,Void ,Capture Flows

Motivation and Context

Additional Changes

  • This PR modifies the API contract
  • This PR modifies application configuration/environment variables

How did you test it?

Tested Using GRPC Curls

Authorize Request
grpcurl -plaintext \
 -H 'x-connector: fiservemea' \
 -H 'x-auth: <REDACTED>' \
 -H 'x-api-key: <REDACTED>' \
 -H 'x-key1: <REDACTED>' \
 -H 'x-merchant-id: <REDACTED>' \
 -H 'x-tenant-id: <REDACTED>' \
 -d '{
   "request_ref_id": {"id": "testfes_7f2E1"},
   "amount": 1001,
   "currency": "EUR",
   "payment_method": {
     "card": {
       "credit": {
         "card_number": {"value": "4111111111111111"},
         "card_exp_month": {"value": "03"},
         "card_exp_year": {"value": "30"},
         "card_cvc": {"value": "737"},
         "card_network": "VISA"
       }
     }
   },
   "connector_customer_id": "test_customer_123",
   "return_url": "https://www.example.com/return",
   "capture_method": "MANUAL",
   "address": {},
   "auth_type": "NO_THREE_DS",
   "enrolled_for_3ds": false,
   "request_incremental_authorization": false,
   "minor_amount": 1000,
   "browser_info": {
     "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
     "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
     "language": "en-US",
     "color_depth": 24,
     "screen_height": 1080,
     "screen_width": 1920,
     "java_enabled": false
   }
 }' localhost:8000 ucs.v2.PaymentService/Authorize

Response

{
 "transactionId": {
   "id": "<REDACTED_TXN_ID>"
 },
 "status": "AUTHORIZED",
 "networkTxnId": "<REDACTED_NETWORK_TXN_ID>",
 "responseRefId": {
   "id": "<REDACTED_RESPONSE_REF_ID>"
 },
 "rawConnectorResponse": {
   "value": "{\"type\":\"transactionResponse\",\"clientRequestId\":\"<REDACTED>\",\"apiTraceId\":\"<REDACTED>\",\"ipgTransactionId\":\"<REDACTED>\",\"orderId\":\"testfes_7f2E1\",\"transactionType\":\"PREAUTH\",\"paymentToken\":{\"reusable\":true,\"declineDuplicates\":false,\"brand\":\"VISA\",\"type\":\"PAYMENT_CARD\"},\"transactionOrigin\":\"ECOM\",\"paymentMethodDetails\":{\"paymentCard\":{\"expiryDate\":{\"month\":\"03\",\"year\":\"2030\"},\"bin\":\"411111\",\"last4\":\"1111\",\"brand\":\"VISA\"},\"paymentMethodType\":\"PAYMENT_CARD\",\"paymentMethodBrand\":\"VISA\"},\"merchantId\":\"<REDACTED>\",\"transactionStatus\":\"APPROVED\",\"approvalCode\":\"<REDACTED>\",\"schemeTransactionId\":\"<REDACTED>\",\"processor\":{\"referenceNumber\":\"<REDACTED>\",\"authorizationCode\":\"<REDACTED>\",\"responseCode\":\"00\",\"responseMessage\":\"Function performed error-free\"}}"
 },
 "statusCode": 200,
 "responseHeaders": {
   "access-control-allow-headers": "Authorization, origin, x-requested-with, accept, content-type, Client-Request-Id, Api-Key, Timestamp, Message-Signature",
   "access-control-allow-methods": "GET, PUT, POST, DELETE, PATCH",
   "access-control-allow-origin": "https://prod.emea.api.fiservapps.com",
   "cache-control": "no-cache, no-store, must-revalidate",
   "content-type": "application/json",
   "date": "Wed, 05 Nov 2025 19:02:54 GMT",
   "strict-transport-security": "max-age=63072000; includeSubdomains"
 },
 "connectorMetadata": {
   "token_reusable": "true"
 },
 "state": {
   "connectorCustomerId": "test_customer_123"
 },
 "rawConnectorRequest": {
   "value": "{\"body\":{\"merchantTransactionId\":\"testfes_7f2E1\",\"order\":{\"orderId\":\"testfes_7f2E1\"},\"paymentMethod\":{\"paymentCard\":{\"expiryDate\":{\"month\":\"03\",\"year\":\"30\"},\"number\":\"<REDACTED_CARD_NUMBER>\",\"securityCode\":\"<REDACTED>\"}},\"requestType\":\"PaymentCardPreAuthTransaction\",\"transactionAmount\":{\"currency\":\"EUR\",\"total\":\"10.00\"}},\"headers\":{\"Api-Key\":\"<REDACTED>\",\"Client-Request-Id\":\"<REDACTED>\",\"Content-Type\":\"application/json\",\"Message-Signature\":\"<REDACTED>\",\"Timestamp\":\"<REDACTED>\",\"via\":\"HyperSwitch\"},\"method\":\"POST\",\"url\":\"https://prod.emea.api.fiservapps.com/sandbox/ipp/payments-gateway/v2/payments\"}"
 }
}


Capture Request
grpcurl -plaintext \
 -H "x-connector: fiservemea" \
 -H "x-auth: <REDACTED>" \
 -H "x-api-key: <REDACTED>" \
 -H "x-key1: <REDACTED>" \
 -H "x-merchant-id: <REDACTED>" \
 -H "x-tenant-id: <REDACTED>" \
 -d '{
   "transaction_id": { "id": "<REDACTED_TXN_ID>" },
   "request_ref_id": { "id": "fiservemea_capture_001" },
   "amount_to_capture": 1000,
   "currency": "EUR"
 }' \
 localhost:8000 ucs.v2.PaymentService/Capture


Response

{
 "transactionId": {
   "id": "<REDACTED_CAPTURE_TXN_ID>"
 },
 "status": "CHARGED",
 "responseRefId": {
   "id": "<REDACTED_RESPONSE_REF_ID>"
 },
 "statusCode": 200,
 "responseHeaders": {
   "access-control-allow-headers": "Authorization, origin, x-requested-with, accept, content-type, Client-Request-Id, Api-Key, Timestamp, Message-Signature",
   "access-control-allow-methods": "GET, PUT, POST, DELETE, PATCH",
   "access-control-allow-origin": "https://prod.emea.api.fiservapps.com",
   "cache-control": "no-cache, no-store, must-revalidate",
   "client-request-id": "<REDACTED_CLIENT_REQUEST_ID>",
   "content-type": "application/json",
   "date": "Wed, 05 Nov 2025 18:58:52 GMT",
   "strict-transport-security": "max-age=63072000; includeSubdomains"
 },
 "rawConnectorRequest": {
   "value": "{\"body\":{\"requestType\":\"PostAuthTransaction\",\"transactionAmount\":{\"currency\":\"EUR\",\"total\":\"10.00\"}},\"headers\":{\"Api-Key\":\"<REDACTED>\",\"Client-Request-Id\":\"<REDACTED>\",\"Content-Type\":\"application/json\",\"Message-Signature\":\"<REDACTED>\",\"Timestamp\":\"<REDACTED>\",\"via\":\"HyperSwitch\"},\"method\":\"POST\",\"url\":\"https://prod.emea.api.fiservapps.com/sandbox/ipp/payments-gateway/v2/payments/<REDACTED_TXN_ID>\"}"
 }
}

Psync Request
grpcurl -plaintext \
 -H "x-connector: fiservemea" \
 -H "x-auth: <REDACTED>" \
 -H "x-api-key: <REDACTED>" \
 -H "x-key1: <REDACTED>" \
 -H "x-merchant-id: <REDACTED>" \
 -H "x-tenant-id: <REDACTED>" \
 -d '{
   "transaction_id": {
     "id": "<REDACTED_TXN_ID>"
   },
   "request_ref_id": {
     "id": "test_fiservemea_psync_001"
   },
   "currency": "USD"
 }' \
 localhost:8000 \
 ucs.v2.PaymentService/Get

Response

{
 "transactionId": {
   "id": "<REDACTED_TXN_ID>"
 },
 "status": "AUTHORIZED",
 "networkTxnId": "<REDACTED_NETWORK_TXN_ID>",
 "responseRefId": {
   "id": "<REDACTED_RESPONSE_REF_ID>"
 },
 "rawConnectorResponse": {
   "value": "{\"type\":\"transactionResponse\",\"clientRequestId\":\"<REDACTED_CLIENT_REQUEST_ID>\",\"apiTraceId\":\"<REDACTED_TRACE_ID>\",\"ipgTransactionId\":\"<REDACTED>\",\"orderId\":\"<REDACTED_ORDER_ID>\",\"transactionType\":\"PREAUTH\",\"paymentToken\":{\"last4\":\"1111\",\"brand\":\"VISA\"},\"transactionOrigin\":\"ECOM\",\"paymentMethodDetails\":{\"paymentCard\":{\"expiryDate\":{\"month\":\"03\",\"year\":\"2030\"},\"bin\":\"411111\",\"last4\":\"1111\",\"brand\":\"VISA\"},\"paymentMethodType\":\"PAYMENT_CARD\",\"paymentMethodBrand\":\"VISA\"},\"terminalId\":\"<REDACTED_TERMINAL_ID>\",\"merchantId\":\"<REDACTED_MERCHANT_ID>\",\"merchantTransactionId\":\"<REDACTED_ORDER_ID>\",\"transactionTime\":<REDACTED_TIMESTAMP>,\"approvedAmount\":{\"total\":10,\"currency\":\"EUR\",\"components\":{\"subtotal\":10}},\"transactionAmount\":{\"total\":10,\"currency\":\"EUR\",\"components\":{\"subtotal\":10}},\"transactionResult\":\"APPROVED\",\"approvalCode\":\"<REDACTED_APPROVAL_CODE>\",\"transactionState\":\"AUTHORIZED\",\"schemeTransactionId\":\"<REDACTED_SCHEME_TXN_ID>\",\"processor\":{\"referenceNumber\":\"<REDACTED_REF_NUM>\",\"authorizationCode\":\"<REDACTED_AUTH_CODE>\",\"responseCode\":\"00\",\"responseMessage\":\"Function performed error-free\",\"avsResponse\":{\"streetMatch\":\"NO_INPUT_DATA\",\"postalCodeMatch\":\"NO_INPUT_DATA\"},\"securityCodeResponse\":\"NOT_PROCESSED\"},\"additionalDetails\":{\"additionalResponseData\":{}}}"
 },
 "statusCode": 200,
 "responseHeaders": {
   "access-control-allow-headers": "Authorization, origin, x-requested-with, accept, content-type, Client-Request-Id, Api-Key, Timestamp, Message-Signature",
   "access-control-allow-methods": "GET, PUT, POST, DELETE, PATCH",
   "access-control-allow-origin": "https://prod.emea.api.fiservapps.com",
   "cache-control": "no-cache, no-store, must-revalidate",
   "client-request-id": "<REDACTED_CLIENT_REQUEST_ID>",
   "content-type": "application/json",
   "date": "Wed, 05 Nov 2025 18:58:04 GMT",
   "strict-transport-security": "max-age=63072000; includeSubdomains"
 },
 "rawConnectorRequest": {
   "value": "{\"body\":null,\"headers\":{\"Api-Key\":\"<REDACTED>\",\"Client-Request-Id\":\"<REDACTED>\",\"Content-Type\":\"application/json\",\"Message-Signature\":\"<REDACTED>\",\"Timestamp\":\"<REDACTED>\",\"via\":\"HyperSwitch\"},\"method\":\"GET\",\"url\":\"https://prod.emea.api.fiservapps.com/sandbox/ipp/payments-gateway/v2/payments/<REDACTED_TXN_ID>\"}"
 }
}

Refund Request
grpcurl -plaintext \
 -H 'x-connector: fiservemea' \
 -H 'x-auth: <REDACTED>' \
 -H 'x-api-key: <REDACTED>' \
 -H 'x-key1: <REDACTED>' \
 -H 'x-merchant-id: <REDACTED>' \
 -H 'x-tenant-id: <REDACTED>' \
 -d '{
   "request_ref_id": {"id": "test_fiservemea_refund_001"},
   "refund_id": "<REDACTED_REFUND_ID>",
   "transaction_id": {"id": "<REDACTED_TXN_ID>"},
   "payment_amount": 1000,
   "currency": "EUR",
   "minor_payment_amount": 1000,
   "refund_amount": 500,
   "minor_refund_amount": 100,
   "reason": "Customer requested partial refund"
 }' localhost:8000 ucs.v2.PaymentService/Refund


Response

{
 "transactionId": {},
 "refundId": "<REDACTED_REFUND_ID>",
 "status": "REFUND_SUCCESS",
 "rawConnectorResponse": {
   "value": "{\"type\":\"transactionResponse\",\"clientRequestId\":\"<REDACTED_CLIENT_REQUEST_ID>\",\"apiTraceId\":\"<REDACTED_TRACE_ID>\",\"ipgTransactionId\":\"<REDACTED>\",\"orderId\":\"<REDACTED_ORDER_ID>\",\"transactionType\":\"RETURN\",\"paymentToken\":{\"reusable\":true,\"declineDuplicates\":false,\"brand\":\"VISA\",\"type\":\"PAYMENT_CARD\"},\"transactionOrigin\":\"ECOM\",\"paymentMethodDetails\":{\"paymentCard\":{\"expiryDate\":{\"month\":\"03\",\"year\":\"2030\"},\"bin\":\"411111\",\"last4\":\"1111\",\"brand\":\"VISA\"},\"paymentMethodType\":\"PAYMENT_CARD\",\"paymentMethodBrand\":\"VISA\"},\"terminalId\":\"<REDACTED_TERMINAL_ID>\",\"merchantId\":\"<REDACTED_MERCHANT_ID>\",\"transactionTime\":1762369329,\"approvedAmount\":{\"total\":1.00,\"currency\":\"EUR\",\"components\":{\"subtotal\":1.00}},\"transactionAmount\":{\"total\":1.00,\"currency\":\"EUR\",\"components\":{\"subtotal\":1.00}},\"transactionStatus\":\"APPROVED\",\"approvalCode\":\"<REDACTED_APPROVAL_CODE>\",\"schemeTransactionId\":\"<REDACTED_SCHEME_TXN_ID>\",\"processor\":{\"referenceNumber\":\"<REDACTED_REFERENCE_NUMBER>\",\"authorizationCode\":\"<REDACTED_AUTH_CODE>\",\"responseCode\":\"00\",\"responseMessage\":\"Function performed error-free\",\"avsResponse\":{\"streetMatch\":\"NO_INPUT_DATA\",\"postalCodeMatch\":\"NO_INPUT_DATA\"},\"taxRefundData\":{}},\"additionalDetails\":{\"additionalResponseData\":{\"schemeECI\":\"7\"}}}"
 },
 "statusCode": 200,
 "responseHeaders": {
   "access-control-allow-headers": "Authorization, origin, x-requested-with, accept, content-type, Client-Request-Id, Api-Key, Timestamp, Message-Signature",
   "access-control-allow-methods": "GET, PUT, POST, DELETE, PATCH",
   "access-control-allow-origin": "https://prod.emea.api.fiservapps.com",
   "cache-control": "no-cache, no-store, must-revalidate",
   "client-request-id": "<REDACTED_CLIENT_REQUEST_ID>",
   "content-type": "application/json",
   "date": "Wed, 05 Nov 2025 19:02:09 GMT",
   "strict-transport-security": "max-age=63072000; includeSubdomains"
 },
 "rawConnectorRequest": {
   "value": "{\"body\":{\"requestType\":\"ReturnTransaction\",\"transactionAmount\":{\"currency\":\"EUR\",\"total\":\"1.00\"}},\"headers\":{\"Api-Key\":\"<REDACTED>\",\"Client-Request-Id\":\"<REDACTED>\",\"Content-Type\":\"application/json\",\"Message-Signature\":\"<REDACTED>\",\"Timestamp\":\"<REDACTED>\",\"via\":\"HyperSwitch\"},\"method\":\"POST\",\"url\":\"https://prod.emea.api.fiservapps.com/sandbox/ipp/payments-gateway/v2/payments/<REDACTED_TXN_ID>\"}"
 }
}

Rsync Request
grpcurl -plaintext \
 -H 'x-connector: fiservemea' \
 -H 'x-auth: <REDACTED>' \
 -H 'x-api-key: <REDACTED>' \
 -H 'x-key1: <REDACTED>' \
 -H 'x-merchant-id: <REDACTED>' \
 -H 'x-tenant-id: <REDACTED>' \
 -d '{
   "request_ref_id": {"id": "fiservemea_rsync_001"},
   "transaction_id": {"id": "<REDACTED_TXN_ID>"},
   "refund_id": "<REDACTED_REFUND_ID>"
 }' localhost:8000 ucs.v2.RefundService/Get

Response

{
 "transactionId": {},
 "refundId": "<REDACTED_REFUND_ID>",
 "status": "REFUND_SUCCESS",
 "responseRefId": {
   "id": "<REDACTED_RESPONSE_REF_ID>"
 },
 "rawConnectorResponse": {
   "value": "{\"type\":\"transactionResponse\",\"clientRequestId\":\"<REDACTED_CLIENT_ID>\",\"apiTraceId\":\"<REDACTED_TRACE_ID>\",\"ipgTransactionId\":\"<REDACTED>\",\"orderId\":\"<REDACTED_ORDER_ID>\",\"transactionType\":\"RETURN\",\"paymentToken\":{\"last4\":\"1111\",\"brand\":\"VISA\"},\"transactionOrigin\":\"ECOM\",\"paymentMethodDetails\":{\"paymentCard\":{\"expiryDate\":{\"month\":\"03\",\"year\":\"2030\"},\"bin\":\"411111\",\"last4\":\"1111\",\"brand\":\"VISA\"},\"paymentMethodType\":\"PAYMENT_CARD\",\"paymentMethodBrand\":\"VISA\"},\"terminalId\":\"<REDACTED>\",\"merchantId\":\"<REDACTED>\",\"transactionTime\":1762369329,\"approvedAmount\":{\"total\":1,\"currency\":\"EUR\",\"components\":{\"subtotal\":1}},\"transactionAmount\":{\"total\":1,\"currency\":\"EUR\",\"components\":{\"subtotal\":1}},\"transactionResult\":\"APPROVED\",\"approvalCode\":\"<REDACTED>\",\"transactionState\":\"CAPTURED\",\"schemeTransactionId\":\"<REDACTED>\",\"processor\":{\"referenceNumber\":\"<REDACTED>\",\"authorizationCode\":\"<REDACTED>\",\"responseCode\":\"00\",\"responseMessage\":\"Function performed error-free\",\"avsResponse\":{\"streetMatch\":\"NO_INPUT_DATA\",\"postalCodeMatch\":\"NO_INPUT_DATA\"}},\"additionalDetails\":{\"additionalResponseData\":{}}}"
 },
 "statusCode": 200,
 "responseHeaders": {
   "access-control-allow-headers": "Authorization, origin, x-requested-with, accept, content-type, Client-Request-Id, Api-Key, Timestamp, Message-Signature",
   "access-control-allow-methods": "GET, PUT, POST, DELETE, PATCH",
   "access-control-allow-origin": "https://prod.emea.api.fiservapps.com",
   "cache-control": "no-cache, no-store, must-revalidate",
   "client-request-id": "<REDACTED_CLIENT_ID>",
   "content-type": "application/json",
   "date": "Wed, 05 Nov 2025 19:02:36 GMT",
   "strict-transport-security": "max-age=63072000; includeSubdomains"
 },
 "rawConnectorRequest": {
   "value": "{\"body\":null,\"headers\":{\"Api-Key\":\"<REDACTED>\",\"Client-Request-Id\":\"<REDACTED>\",\"Content-Type\":\"application/json\",\"Message-Signature\":\"<REDACTED>\",\"Timestamp\":\"<REDACTED>\",\"via\":\"HyperSwitch\"},\"method\":\"GET\",\"url\":\"https://prod.emea.api.fiservapps.com/sandbox/ipp/payments-gateway/v2/payments/<REDACTED_REFUND_ID>\"}"
 }
}

Void Request
grpcurl -plaintext \
 -H 'x-connector: fiservemea' \
 -H 'x-auth: <REDACTED>' \
 -H 'x-api-key: <REDACTED>' \
 -H 'x-key1: <REDACTED>' \
 -H 'x-merchant-id: <REDACTED>' \
 -H 'x-tenant-id: <REDACTED>' \
 -d '{    
   "transaction_id": {"id": "84634339893"},          
   "request_ref_id": {"id": "test_fiservemea_void_001"},              
   "cancellation_reason": "Void - Cancelling authorized payment",
   "currency": "EUR",
   "all_keys_required": false
 }' \
 localhost:8000 ucs.v2.PaymentService/Void

Response

{
  "transactionId": {
    "id": "84634339954"
  },
  "status": "VOIDED",
  "responseRefId": {
    "id": "93275cfa-f1b0-476e-9a60-55a77e306de4"
  },
  "statusCode": 200,
  "responseHeaders": {
    "access-control-allow-headers": "Authorization, origin, x-requested-with, accept, content-type, Client-Request-Id, Api-Key, Timestamp, Message-Signature",
    "access-control-allow-methods": "GET, PUT, POST, DELETE, PATCH",
    "access-control-allow-origin": "https://prod.emea.api.fiservapps.com",
    "access-control-max-age": "3628800",
    "cache-control": "no-cache, no-store, must-revalidate",
    "client-request-id": "93275cfa-f1b0-476e-9a60-55a77e306de4",
    "connection": "keep-alive",
    "content-security-policy": "default-src 'self' *.googleapis.com *.klarna.com *.masterpass.com *.mastercard.com *.npci.org.in *.aws.fisv.cloud 'unsafe-eval' 'unsafe-inline'; frame-ancestors 'self'; connect-src 'self' *.aws.fisv.cloud",
    "content-type": "application/json",
    "date": "Wed, 05 Nov 2025 19:03:39 GMT",
    "expires": "0",
    "pragma": "no-cache",
    "rdwr_response": "allowed",
    "set-cookie": "__uzmd=<REDACTED>; HttpOnly; path=/; Expires=Wed, 06-May-26 19:03:38 GMT; Max-Age=15724800; SameSite=Lax",
    "strict-transport-security": "max-age=63072000; includeSubdomains",
    "transfer-encoding": "chunked",
    "x-content-type-options": "nosniff",
    "x-frame-options": "SAMEORIGIN",
    "x-xss-protection": "1; mode=block"
  },
  "rawConnectorRequest": {
    "value": "{\"body\":{\"requestType\":\"VoidTransaction\"},\"headers\":{\"Api-Key\":\"<REDACTED>\",\"Client-Request-Id\":\"93275cfa-f1b0-476e-9a60-55a77e306de4\",\"Content-Type\":\"application/json\",\"Message-Signature\":\"<REDACTED>\",\"Timestamp\":\"1762369418559\",\"via\":\"HyperSwitch\"},\"method\":\"POST\",\"url\":\"https://prod.emea.api.fiservapps.com/sandbox/ipp/payments-gateway/v2/payments/84634339893\"}"
  }
}

Diff Checks

Auth image
Refund image
Capture image
Void image

@iemyashasvi iemyashasvi self-assigned this Nov 5, 2025
@iemyashasvi iemyashasvi requested review from a team as code owners November 5, 2025 19:31
@iemyashasvi iemyashasvi force-pushed the fiservemea-grace-implementation branch from 99b6e45 to b696798 Compare November 10, 2025 10:54
@iemyashasvi iemyashasvi force-pushed the fiservemea-grace-implementation branch from 8b8cdb3 to 60cdb3a Compare November 11, 2025 07:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants