| Query parameter | Required | Description |
|---|---|---|
paymentBrand | O | The specific Payment Brand which you intend to provide to user. With this parameter, you will get the available payment method(s) and payment information for this specific Payment Brand in response. |
cardBIN | O | The specific card BIN which the user intends to use to pay. With this parameter, you will get the available payment method(s) and payment information for this specific card BIN in response. |
Currency | O | The specific currency which the user intends to use to pay. With this parameter, you will get the available payment method(s) and payment information for this specific currency in response. |
Tokenize | O | The Boolean filed. Used to indicate Inquiry the payment method which support tokenization. With the value true, you will get the payment method(s) and payment information which support tokenization. |
cardBIN, paymentBrand, and then currency.paymentMethod.paymentBrandList.paymentInfo to provide the list of payment methods and the required payment information for each payment method.paymentMethod.paymentBrandList.authenticationInfo. See chapter Authentication for more details.| Key name in paymentBrandList | Field name in EVO Cloud API | ISO specification |
|---|---|---|
| Country (in Delivery Address) | userInfo.deliveryAddress.country | ISO-3166-1 alpha-3. For example, SGP. |
| State or Province(in Delivery Address) | userInfo.deliveryAddress.stateOrProvince | ISO-3166-2. For example, North East. |
| Country (in Billing Address) | userInfo.billingAddress.country | ISO-3166-1 alpha-3. For example, SGP. |
| State or Province(in Billing Address) | userInfo.billingAddress.stateOrProvince | ISO-3166-2. For example, North East. |
| Body parameter | Required | Description |
|---|---|---|
merchantTransInfo | M | The reference for the payment, including a unique merchantTransID and merchantTransTime to specify the time you initiate the request. |
transAmount | M | The currency and value of the payment. The value must follow the currency's minor unit. |
paymentMethod | M | Use paymentMethod.type to specify different payment method type, such as e-wallet or card payment, with different payment information that you collect in the previous step. |
transInitiator | M | The information of device to initiate the transaction. |
storeInfo | O | The supplemental store information. When your store is assigned with multiple MCCs in EVO Cloud, this field is required to indicate which MCC you are using for this payment. |
tradeInfo | O | This field is required when paymentMethod.e-wallet.paymentBrand is Alipay to indicate the detailed information about this payment. |
userInfo | O | Detailed information about the buyer. Specify this parameter if you can obtain the information from the user. This helps EVO Cloud laundering and fraud detection, and increases payment success rates. |
validTime | O | This is applied when paymentMethod.type is e-wallet to indicate the effective time (minutes) of the order. The payment can only be executed before the time. If you have any special requirements for this value definition, please contact EVO Cloud account manager for details and suggestion. |
returnURL | O | The URL to redirect your customer back to after your customer completes or cancels the payment. |
Webhook | O | The URL to receive notification. Specify this to get the notification from EVO Cloud after the payment succeeds. |
Metadata | O | A self-defined reference information that you can specify in the request, and will be echoed back in the response. The metadate message in the response is the same as the metadata in your request message, except of GET request. The metadata in GET response message is the same as the metadata in the POST request message. And the metadata in the notification is the same as the metadata in the POST request message. |
paymentMethod.type: Set as e-wallet in your request.paymentMethod.e-wallet.paymentBrand: The Payment Brand of the e-wallet that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.e-wallet.subOpenID: The user ID for the user in your WeChat mini-program, required when the user pays with WeChat Pay (paymentMethod.e-wallet.paymentBrand is WeChat_Pay) in your WeChat mini-program (transInitiator.platform is MINI). Get this ID when the user logins your WeChat mini-program.paymentMethod.e-wallet.subAppID: The APP ID assigned by WeChat, required when the user pays with WeChat Pay (paymentMethod.e-wallet.paymentBrand is WeChat_Pay) in your WeChat mini-program (transInitiator.platform is MINI) or your client APP (transInitiator.platform is APP). Get this ID when you register your mini-program or APP to WeChat.paymentMethod.e-wallet.mobilePhone: The user's mobile number registered in E-wallet, required when the user pays with TrueMoney wallet.paymentMethod.type: Set as card in your request.paymentMethod.card.encryptedCardInfo: The encrypted card information. If you use EVO Cloud client-side solution to securely encrypt your user's card details, your frontend will get the value from EVO Cloud SDK, and you need to send it to your host, then your host needs to forward the original data to EVO Cloud.paymentMethod.card.cardInfo: The raw data of the card information. If you collect and send raw card data to EVO Cloud, you need to specify the cardNumber, expiryDate, and cvc (optional) and holderName in this object. For some of the UnionPay debit cards, the expiryDate is also optional.paymentMethod.card.encryptedCardInfo and paymentMethod.card.cardInfo are present, paymentMethod.card.cardInfo will be applied.)paymentMethod.type: Set as onlineBanking in your request.paymentMethod.onlineBanking.paymentBrand: The Payment Brand of the payment method, required. Set as UnionPay in your request.paymentMethod.onlineBanking.encryptedCardInfo: The encrypted card information. If you use EVO Cloud client-side solution to securely encrypt your user's card details, your frontend will get the value from EVO Cloud SDK, and you need to send it to your host, then your host needs to forward the original data to EVO Cloud.paymentMethod.onlineBanking.cardInfo: The raw data of the card information. If you collect and send raw card data to EVO Cloud, it is optional to specify the cardNumber in this object.paymentMethod.onlineBanking.encryptedCardInfo and paymentMethod.onlineBanking.cardInfo are present, paymentMethod.onlineBanking.cardInfo will be applied.)paymentMethod.type: Set as onlineBanking in your request.paymentMethod.onlineBanking.paymentBrand: The Payment Brand of the online banking that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.type: Set as points in your request.paymentMethod.points.paymentBrand: The Payment Brand of the points payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.type: Set as bankTransfer in your request.paymentMethod.bankTransfer.paymentBrand: The Payment Brand of the bank transfer payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.bankTransfer.name: This field indicates the given name and family name of the user. You need to specify the givenName and familyName in this object when the paymentBrand is Bank_Transfer_JPN or PayEasy. See the details of this object in EVO Cloud API Specification.paymentMethod.bankTransfer.mobilePhone: The user's mobile number. This field must be sent when the paymentBrand is Bank_Transfer_JPN or PayEasy.paymentMethod.type: Set as buyNowPayLater in your request.paymentMethod.buyNowPayLater.paymentBrand: The Payment Brand of the buy now pay later payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.userInfo.name: The user’s name. This field must be sent when the paymentBrand is Paidy.userInfo.shippingAddressCity: The name of the city that users live in. This field must be sent when the paymentBrand is Paidy.userInfo.shippingAddressLine1: The building name and apartment number that the user lives in. This field must be sent when the paymentBrand is Paidy.userInfo.shippingAddressLine2: The district, land number, and land number extension that users live in. This field must be sent when the paymentBrand is Paidy.userInfo.shippingAddressState: The name of the state or prefecture that users live in. This field must be sent when the paymentBrand is Paidy.userInfo.shippingAddressPostalCode: The postal code that the user's address belongs to. This field must be sent when the paymentBrand is Paidy.userInfo.shippingAddressCountry: The name of the country that users live in. This field must be sent when the paymentBrand is Paidy.paymentMethod.type: Set as carrierBilling in your request.paymentMethod.carrierBilling.paymentBrand: The Payment Brand of the carrier billing payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.type: Set as prepaidCard in your request.paymentMethod.prepaidCard.paymentBrand: The Payment Brand of the prepaid card payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.prepaidCard.prepaidNumber: Prepaid card number. This field must be sent when prepaid card payment.paymentMethod.type: Set as cash in your request.paymentMethod.cash.paymentBrand: The Payment Brand of the cash payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.paymentMethod.type: Set as googlePay in your request.paymentMethod.googlePay.paymentBrand: The Payment Brand of the Google Pay™️ payment that the user chooses to pay with, required. See the full list of all the payment brands in EVO Cloud API Specification.action object in the response, you can go to Step 7 to use the result.code and payment.status to present the payment result to your user.action object to your frontend page or client APP, then proceed to the next step.action object requiring a redirection:action object in the payment response (/g2/v1/payment/mer/{sid}/payment), you need to follow the action.type to conduct the next step.| Type of the action | Description | Next steps |
|---|---|---|
threeDSRedirect | This is applied to 3DS 1 or 2 when processing authentication in which paymentMethod.type is card and authentication.type is threeDSPage or threeDSIntegrator. | Redirect the user to another website to complete the 3DS 1 or 2 authentication with action.threeDSData in the same response. See chapter Authentication for more details. |
threeDSIdentify | This is applied to 3DS 2 when processing authentication in which paymentMethod.type is card with authentication.type is threeDSIntegrator. | Redirect the user to another website to complete the 3DS 2 frictionless authentication with action.threeDSData in the same response. See chapter Authentication for more details. |
threeDSChallenge | This is applied to 3DS 2 when processing authentication in which paymentMethod.type is card with authentication.type is threeDSIntegrator. | Redirect the user to another website to complete the 3DS 2 challenge authentication with action.threeDSData in the same response. See chapter Authentication for more details. |
inputMobilePhone | This is applied to SecurePlus authentication for paymentMethod.type is card and authentication.type is SecurePlus. | Present an input box on your payment page to ask the user to input the mobile phone number and submit it to EVO Cloud. See chapter Authentication for more details. |
inputSMSCode | This is applied to SecurePlus authentication for paymentMethod.type is card and authentication.type is SecurePlus. | Present an input box on your payment page to ask the user to input the SMS code received on the mobile phone and submit it to EVO Cloud. See chapter Authentication for more details. |
redirectUser | This is applied to payment and authentication when redirection is required. The following payment methods and Payment Brands are applied: (a) Alipay, Alipay+ and JkoPay on PC WEB. (b) Alipay, Alipay+, Alipay HK, WeChat Pay and Jkopay on Mobile WAP. (c) WeChat Pay in WeChat official account. (d) UnionPay SecurePay on PC WEB and Mobile WAP. | Redirect the user to the action.redirectData.url with HTTP method specified in action.redirectData.method. If action.redirectData.method is POST and action.redirectData.parameter exists, specify the sub field(s) in the parameter object as the form data of the POST request. The user is then redirected to a page where they need to take additional action, depending on the PSP. After the user completes the payment, the user is redirected back to your returnURL with an HTTP GET or POST. You can ignore this redirection, or optionally display a loading page to the user before you get the payment result. 1. You can optionally make an HTTP GET request from your server to EVO Cloud endpoint /g2/v1/payment/mer/{sid}/payment to get the payment result. See Step 6 result for more details. 2. Or you can wait for the notification webhook to know the payment result. See chapter After Payment for more details. |
redirectInIframe | This is applied to E-Wallet payment on PC WEB with AlipayHK merchant account, including user paying with AlipayHK wallet APP and Alipay wallet APP. | Render an iframe on your payment page and perform a redirection in the iframe to the action.redirectData.url with HTTP method specified in action.redirectData.method. If action.redirectData.method is POST and action.redirectData.parameter exists, specify the sub field(s) within the parameter object as the form data of the POST request. The user is then prompted with a QR code in the iframe which the user needs to scan and pay with the E-Wallet APP. 1. You can optionally make an HTTP GET request from your server to EVO Cloud endpoint /g2/v1/payment/mer/{sid}/payment to get the payment result. See Step 6 for more details. 2. Or you can wait for the notification webhook to know the payment result. See chapter After Payment for more details. |
presentQRCode | This is applied to E-Wallet payment on PC WEB using WeChat Pay. | Render the QR code with the data specified by action.qrData object. The user is then prompted with a QR code which the user needs to scan and pay with the E-Wallet APP. 1. You can optionally make an HTTP GET request from your server to EVO Cloud endpoint /g2/v1/payment/mer/{sid}/payment to get the payment result. See Step 6 for more details. 2. Or you can wait for the notification webhook to know the payment result. See chapter After Payment for more details. |
invokeWallet | This is applied to: (a) E-Wallet payment in wallet APP and mini-program using WeChat Pay or Alipay. (b) SecurePay of UnionPay in wallet APP. | 1. Invoke the wallet SDK with action.walletData.paymentString to trigger the switch to the wallet APP. See WeChat Pay In-APP pay integration guide or Alipay APP payment integration guide or UnionPay In-APP integration guide. Or you can choose EVO Cloud SDK to realize the same function. See EVO Cloud SDK Integration Guide for more details. The user is then switched to wallet APP where the user needs to take additional action to complete the payment. 2. After the user completes the payment, the user will be redirected back by the callback function you specify when invoking the SDK. You can optionally display a loading page to the user before you get the payment result. 3. You can optionally make an HTTP GET request from your server to EVO Cloud endpoint /g2/v1/payment/mer/{sid}/payment to get the payment result. See Step 6 for more details. 4. Or you can wait for the notification webhook to know the payment result. See chapter After Payment for more details. |
presentEcontext | This is applied to cash payment and bank transfer. | Present the texts in the object action.econtext on your payment page to ask the user to complete the follow-up payment process. If the field action.econtext.instructionURL is returned you can also present it on your payment page to guide user. |
action.redirectData.method is GET, redirect the user to the action.redirectData.url.curl {action.redirectData.url}action.redirectData.method is POST and action.redirectData.parameter exists, for example, if the user is performing the payment with SecurePay for UnionPay on PC WEB or Mobile WAP, here is an example of action.redirectData.parameter:{
"accNo": "ZgTg0d4%2BWJeM7GBq9EbxjSu0wvQQYpS8%2F%2B9NJ848bx1tLlqWc%2FbtUSzFiMaKaFHNEJMT3PPvv8RY8C9lcOeoWJpFBUA4en%2FSw2OlqY%2Fmj1zcikLMg5O4XgO8aqELQUDZNin1mtlkDGx1%2B%2FR9NNX4a%2F2E8x2%2Fme4haxUdO%2BVY76v7edaj30pR2n%2BbLfB70pDnc9XisZrL5cNPE9Wj83Mirh2rLwEtreS%2FktCYqzpopLEcu115sd%2BJOdj1E0z3Bp2x5EBLrdiz714kOV0FmY7HQz0UfwV3MnY7PofuQ7MwnilYYnTsFBcTKxNpSwAZlZAB0eSijnFpIG3tYjnIephVFg%3D%3D",
"accessType": "1",
"acqInsCode": "YOUR_ACQUIRER_IIN",
"backUrl": "https%3A%2F%2F%7BEVO_Cloud_DOMAIN_NAME.com%7D%2FpspNotify%2FUPI%2F%7BYOUR_ACQUIRER_IIN%7D",
"bizType": "000201",
"certId": "69798631478",
"channelType": "07",
"currencyCode": "840",
"encoding": "UTF-8",
"encryptCertId": "69026275926",
"frontUrl": "https%3A%2F%2FYOUR_COMPANY.com%2FRETURNURL",
"merAbbr": "AbbrName",
"merCatCode": "5411",
"merId": "999290058120001",
"merName": "This is your merchant name",
"orderId": "YOUR_TRANS_ID",
"payTimeout": "20211231183059",
"signMethod": "01",
"signature": "EashQx%2F4eLvGenbKThFNeqssyg6tSXlj5mT3GbF2ll9TV8ObzqYpMd%2Fl2Ymv0UKkWOi05QeRM9c2UajjzAM92CUGp8KhVkfcK4BUH1BXNgAWAEZwB8ZLLuMPvnTQZJ%2F03HQ6hOeyIXOCE1lOm4HlL9n5B5bg2ACRFpxK%2FmGVPZ%2FuGumAMyEWq5%2B8HwRlcTBepzDYNuSqCLegofT7bTAQZIELf%2BjxKSgV3D3cCI9PwOg44uFlRwSdtg%2Fr0FnIh%2BhQTVDgY0ttJm99GWYwJIKzdsEdN9tihpgxJVoxveoJBwll2M6mrv7THXMFvI3p3zFCpLIjU%2FxqvvUQmViYC3lniA%3D%3D",
"txnAmt": "1000",
"txnSubType": "01",
"txnTime": "20211231083059",
"txnType": "01",
"version": "5.1.0"
}redirectUser action, but you need to initiate the HTTP GET or POST request within the iframe rendered on your payment page. It is suggested to set the iframe size to 200x200 px.action.qrData object and prompt it to your user. The details of action.qrData include:action.qrData.qrCode is not returned.2017-07-17T13:42:40+01:00.| Parameter | Required | Description |
|---|---|---|
| merchantTransID | M | The merchantTransInfo.merchantTransID of the requesting payment. |
action object in the response, similar with Step 3, additional steps are required to complete the payment. You need to send the action object to your frontend page or client APP, then proceed to the next step. Back to Step 4 to perform the required action.result.code and payment.status to present the payment result to your user.payment object in the response to show the details of this payment:payment.status: The status of this capture, required, can be Verifying, Verified, Pending, Authorised, Cancelling, Cancelled, Capturing, Captured, Refunding, Refunded, Partial Refunded or Failed. See EVO Cloud API Specification for more details.payment.failureCode: The error code for the payment, which will be returned when the payment.status is Failed.payment.failureReason: The error message for the payment, which will be returned when the payment.status is Failed.payment.transAmount: The currency and value of the payment, required. It is echoed back from your request.payment.merchantTransInfo: The object that is a reference for the payment, required and generated by your host. It is echoed back from your request.payment.evoTransInfo: The object that is a reference for the payment, required and generated by EVO Cloud. It contains evoTransID, evoTransTime and traceNum (optional) and retrievalReferenceNum for some PSPs such as Visa or Mastercard.payment.pspTransInfo: The object that is a reference for the capture, optional and generated by the PSP. It contains pspTransID, pspTransTime and authorizationCode. EVO Cloud forwards this information from PSP to your host if PSP returns.payment.billingAmount and payment.billingFXRate: The user's billing currency and value of the payment, and the FX rate between payment.transAmount.currency and payment.billingAmount.currency, if has. EVO Cloud forwards this information from PSP to your host if PSP returns. This is applied to some E-Wallet payment scenarios when PSP conducts the currency conversion, or to some card payment scenarios when you enable the DCC feature. You can contact EVO Cloud account manager for more details.payment.convertTransAmount and payment.convertTransFXRate: The currency and value calculated by EVO Cloud based on transAmount and the FX rate from transAmount.currency to a different currency when the transaction is sent out to PSP, and the FX rate between payment.transAmount.currency and payment.convertTransAmount.currency. The FX rate will be provided if you enable currency conversion feature in EVO Cloud and this capture applies currency conversion. You can contact EVO Cloud account manager for more details.result.code and payment.status to inform the user of the payment status.| Result Code | Description |
|---|---|
S0000 | Success |
V0008 | Field {} is not applied with {...} |
C0004 | Request resource merchantTransID {XXX} not exist |
C0006 | Request resource vault ID {XXX} not exist |
C0008 | Request resource paymentMethod token {XXX} not exist |
B0005 | Unsupported function {XXX}, please check your profile setup in EVO Cloud |
B0012 | Invalid transaction status {XXX} to complete the request |
B0019 | Authentication required, please ask user to input authentication info |
B0021 | {Payment / Tokenization} failed due to user authentication results with high risk, please ask user to try again |
result.code values and recommended messages that you can present to your user, see Appendix in EVO Cloud API Specification.result.code is S0000, you need to check the payment.status to judge and inform your user the payment status.| Status | Description |
|---|---|
| Authorised | Used for card transaction, means the transaction authorization is successfully completed and pending for Capture (merchant can submit cancel). |
| Captured | If card transaction, means transaction authorization and capture are successfully completed; If e-wallet transaction, means transaction is successfully completed. |
| Failed | Payment failed. |
payment.status values and description, see payment.status in EVO Cloud API Specification.