| 查询参数 | 是否必填 | 说明 |
|---|---|---|
paymentBrand | O | 您计划向用户提供的指定支付品牌。传入该参数后,响应将返回该支付品牌下可用的支付方式及支付信息。 |
cardBIN | O | 用户计划用于支付的指定卡 BIN。传入该参数后,响应将返回该卡 BIN 下可用的支付方式及支付信息。 |
Currency | O | 用户计划用于支付的指定币种。传入该参数后,响应将返回该币种下可用的支付方式及支付信息。 |
Tokenize | O | 布尔类型字段,用于查询支持令牌化的支付方式。取值为 true 时,将返回支持令牌化的支付方式及支付信息。 |
cardBIN、paymentBrand、currency 的优先级进行响应。paymentMethod.paymentBrandList.paymentInfo 展示支付方式列表,以及每种支付方式需要填写的支付信息。paymentMethod.paymentBrandList.authenticationInfo。 详情请参阅 Authentication(认证) 章节。| paymentBrandList 中的键名 | EVO Cloud API 中的字段名 | ISO 规范 |
|---|---|---|
| Country(Delivery Address 中) | userInfo.deliveryAddress.country | ISO-3166-1 alpha-3,例如 SGP。 |
| State or Province(Delivery Address 中) | userInfo.deliveryAddress.stateOrProvince | ISO-3166-2,例如 North East。 |
| Country(Billing Address 中) | userInfo.billingAddress.country | ISO-3166-1 alpha-3,例如 SGP。 |
| State or Province(Billing Address 中) | userInfo.billingAddress.stateOrProvince | ISO-3166-2,例如 North East。 |
| Body 参数 | 是否必填 | 说明 |
|---|---|---|
merchantTransInfo | M | 支付的参考信息,包括唯一的 merchantTransID,以及表示您发起请求时间的 merchantTransTime。 |
transAmount | M | 支付的币种(currency)和金额(value)。金额必须符合该币种的最小单位规则。 |
paymentMethod | M | 使用 paymentMethod.type 指定支付方式类型,例如 e-wallet 或 card,并携带上一步收集的对应支付信息。 |
transInitiator | M | 发起交易的设备信息。 |
storeInfo | O | 补充的门店信息。当您的门店在 EVO Cloud 中配置了多个 MCC 时,需通过该字段指明本次支付使用的 MCC。 |
tradeInfo | O | 当 paymentMethod.e-wallet.paymentBrand 为 Alipay 时必填,用于说明本次支付的详细信息。 |
userInfo | O | 买家的详细信息。如果您能获取用户信息,请传入该参数,有助于 EVO Cloud 进行反洗钱和欺诈检测,并提升支付成功率。 |
validTime | O | 当 paymentMethod.type 为 e-wallet 时适用,表示订单的有效时间(分钟)。支付只能在该时间之前完成。如对该值有特殊要求,请联系 EVO Cloud 客户经理获取详情和建议。 |
returnURL | O | 用户完成或取消支付后,跳转回您页面的 URL。 |
Webhook | O | 接收通知的 URL。传入该参数后,支付成功时将收到 EVO Cloud 的通知。 |
Metadata | O | 您可在请求中自定义的参考信息,会在响应中原样返回。除 GET 请求外,响应中的 metadata 与您请求中的 metadata 相同;GET 响应中的 metadata 与 POST 请求中的 metadata 相同;通知中的 metadata 也与 POST 请求中的 metadata 相同。 |
paymentMethod.type:请求中设置为 e-wallet。paymentMethod.e-wallet.paymentBrand:用户选择的电子钱包支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.e-wallet.subOpenID:用户在您的微信小程序中的用户 ID。当用户在您的微信小程序(transInitiator.platform 为 MINI)中使用微信支付(paymentMethod.e-wallet.paymentBrand 为 WeChat_Pay)时必填。用户登录您的微信小程序时可获取该 ID。paymentMethod.e-wallet.subAppID:微信分配的 APP ID。当用户在您的微信小程序(transInitiator.platform 为 MINI)或客户端 APP(transInitiator.platform 为 APP)中使用微信支付(paymentMethod.e-wallet.paymentBrand 为 WeChat_Pay)时必填。您在微信注册小程序或 APP 时可获取该 ID。paymentMethod.e-wallet.mobilePhone:用户在电子钱包中注册的手机号。当用户使用 TrueMoney 钱包支付时必填。paymentMethod.type:请求中设置为 card。paymentMethod.card.encryptedCardInfo:加密后的卡信息。如果您使用 EVO Cloud 客户端方案对用户卡信息进行安全加密,前端会从 EVO Cloud SDK 获取该值,您需要将其发送到服务端,再由服务端将原始数据转发给 EVO Cloud。paymentMethod.card.cardInfo:卡信息明文数据。如果您收集并向 EVO Cloud 发送卡片明文数据,需要在该对象中传入 cardNumber、expiryDate、cvc(可选)和 holderName。对于部分银联借记卡,expiryDate 也是可选的。paymentMethod.card.encryptedCardInfo 和 paymentMethod.card.cardInfo,将以 paymentMethod.card.cardInfo 为准。)paymentMethod.type:请求中设置为 onlineBanking。paymentMethod.onlineBanking.paymentBrand:支付方式的支付品牌,必填。请求中设置为 UnionPay。paymentMethod.onlineBanking.encryptedCardInfo:加密后的卡信息。如果您使用 EVO Cloud 客户端方案对用户卡信息进行安全加密,前端会从 EVO Cloud SDK 获取该值,您需要将其发送到服务端,再由服务端将原始数据转发给 EVO Cloud。paymentMethod.onlineBanking.cardInfo:卡信息明文数据。如果您收集并向 EVO Cloud 发送卡片明文数据,可选择在该对象中传入 cardNumber。paymentMethod.onlineBanking.encryptedCardInfo 和 paymentMethod.onlineBanking.cardInfo,将以 paymentMethod.onlineBanking.cardInfo 为准。)paymentMethod.type:请求中设置为 onlineBanking。paymentMethod.onlineBanking.paymentBrand:用户选择的网银支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.type:请求中设置为 points。paymentMethod.points.paymentBrand:用户选择的积分支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.type:请求中设置为 bankTransfer。paymentMethod.bankTransfer.paymentBrand:用户选择的银行转账支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.bankTransfer.name:用户的名和姓。当 paymentBrand 为 Bank_Transfer_JPN 或 PayEasy 时,需要在该对象中传入 givenName 和 familyName。对象详情请参阅《EVO Cloud API 规范》。paymentMethod.bankTransfer.mobilePhone:用户手机号。当 paymentBrand 为 Bank_Transfer_JPN 或 PayEasy 时必须传入。paymentMethod.type:请求中设置为 buyNowPayLater。paymentMethod.buyNowPayLater.paymentBrand:用户选择的先买后付支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。userInfo.name:用户姓名。当 paymentBrand 为 Paidy 时必须传入。userInfo.shippingAddressCity:用户所在城市名称。当 paymentBrand 为 Paidy 时必须传入。userInfo.shippingAddressLine1:用户所在的楼宇名称和房间号。当 paymentBrand 为 Paidy 时必须传入。userInfo.shippingAddressLine2:用户所在的区域、地号及地号扩展信息。当 paymentBrand 为 Paidy 时必须传入。userInfo.shippingAddressState:用户所在的州或都道府县名称。当 paymentBrand 为 Paidy 时必须传入。userInfo.shippingAddressPostalCode:用户地址所属的邮政编码。当 paymentBrand 为 Paidy 时必须传入。userInfo.shippingAddressCountry:用户所在国家名称。当 paymentBrand 为 Paidy 时必须传入。paymentMethod.type:请求中设置为 carrierBilling。paymentMethod.carrierBilling.paymentBrand:用户选择的运营商代扣支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.type:请求中设置为 prepaidCard。paymentMethod.prepaidCard.paymentBrand:用户选择的预付卡支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.prepaidCard.prepaidNumber:预付卡卡号。使用预付卡支付时必须传入。paymentMethod.type:请求中设置为 cash。paymentMethod.cash.paymentBrand:用户选择的现金支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。paymentMethod.type:请求中设置为 googlePay。paymentMethod.googlePay.paymentBrand:用户选择的 Google Pay™️ 支付品牌,必填。完整支付品牌列表请参阅《EVO Cloud API 规范》。action 对象,您可以直接进入步骤 7,根据 result.code 和 payment.status 向用户展示支付结果。action 对象发送到前端页面或客户端 APP,然后进入下一步。action 对象的响应示例:action 对象,需要根据 action.type 执行下一步操作。| Action 类型 | 说明 | 后续步骤 |
|---|---|---|
threeDSRedirect | 适用于 3DS 1 或 3DS 2 认证场景,此时 paymentMethod.type 为 card,authentication.type 为 threeDSPage 或 threeDSIntegrator。 | 使用同一响应中的 action.threeDSData,将用户跳转到其他网站完成 3DS 1 或 3DS 2 认证。详情请参阅 Authentication(认证)章节。 |
threeDSIdentify | 适用于 3DS 2 认证场景,此时 paymentMethod.type 为 card,authentication.type 为 threeDSIntegrator。 | 使用同一响应中的 action.threeDSData,将用户跳转到其他网站完成 3DS 2 无感认证(frictionless)。详情请参阅 Authentication(认证)章节。 |
threeDSChallenge | 适用于 3DS 2 认证场景,此时 paymentMethod.type 为 card,authentication.type 为 threeDSIntegrator。 | 使用同一响应中的 action.threeDSData,将用户跳转到其他网站完成 3DS 2 挑战认证(challenge)。详情请参阅 Authentication(认证)章节。 |
inputMobilePhone | 适用于 SecurePlus 认证,此时 paymentMethod.type 为 card,authentication.type 为 SecurePlus。 | 在支付页面展示输入框,请用户输入手机号并提交给 EVO Cloud。详情请参阅 Authentication(认证)章节。 |
inputSMSCode | 适用于 SecurePlus 认证,此时 paymentMethod.type 为 card,authentication.type 为 SecurePlus。 | 在支付页面展示输入框,请用户输入手机收到的短信验证码并提交给 EVO Cloud。详情请参阅 Authentication(认证)章节。 |
redirectUser | 适用于需要跳转的支付和认证场景,涉及以下支付方式和支付品牌: (a) PC WEB 上的 Alipay、Alipay+ 和 JkoPay。 (b) 移动端 WAP 上的 Alipay、Alipay+、Alipay HK、微信支付和 Jkopay。 (c) 微信公众号中的微信支付。 (d) PC WEB 和移动端 WAP 上的银联 SecurePay。 | 使用 action.redirectData.method 指定的 HTTP 方法,将用户跳转到 action.redirectData.url。如果 action.redirectData.method 为 POST 且存在 action.redirectData.parameter,需将 parameter 对象中的子字段作为 POST 请求的表单数据。用户随后会跳转到对应页面,根据 PSP 的要求完成后续操作。用户完成支付后,会通过 HTTP GET 或 POST 跳转回您的 returnURL。您可以忽略该跳转,也可以在获取支付结果前向用户展示加载页面。1. 您可以选择从服务端向 EVO Cloud 接口 /g2/v1/payment/mer/{sid}/payment 发起 HTTP GET 请求获取支付结果。详情请参阅步骤 6。2. 或者等待通知 Webhook 获取支付结果。详情请参阅 After Payment(支付后处理)章节。 |
redirectInIframe | 适用于使用 AlipayHK 商户账户在 PC WEB 上进行的电子钱包支付,包括用户使用 AlipayHK 钱包 APP 和 Alipay 钱包 APP 支付。 | 在支付页面渲染一个 iframe,并在 iframe 中使用 action.redirectData.method 指定的 HTTP 方法跳转到 action.redirectData.url。如果 action.redirectData.method 为 POST 且存在 action.redirectData.parameter,需将 parameter 对象中的子字段作为 POST 请求的表单数据。随后 iframe 中会展示二维码,用户需使用电子钱包 APP 扫码支付。1. 您可以选择从服务端向 EVO Cloud 接口 /g2/v1/payment/mer/{sid}/payment 发起 HTTP GET 请求获取支付结果。详情请参阅步骤 6。2. 或者等待通知 Webhook 获取支付结果。详情请参阅 After Payment(支付后处理)章节。 |
presentQRCode | 适用于在 PC WEB 上使用微信支付的电子钱包支付。 | 使用 action.qrData 对象中的数据渲染二维码。随后向用户展示二维码,用户需使用电子钱包 APP 扫码支付。1. 您可以选择从服务端向 EVO Cloud 接口 /g2/v1/payment/mer/{sid}/payment 发起 HTTP GET 请求获取支付结果。详情请参阅步骤 6。2. 或者等待通知 Webhook 获取支付结果。详情请参阅 After Payment(支付后处理)章节。 |
invokeWallet | 适用于: (a) 在钱包 APP 和小程序中使用微信支付或支付宝的电子钱包支付。 (b) 在钱包 APP 中使用银联 SecurePay。 | 1. 使用 action.walletData.paymentString 调起钱包 SDK,切换到钱包 APP。请 参阅微信支付 APP 支付集成指南、支付宝 APP 支付集成指南或银联 APP 内支付集成指南。您也可以选择使用 EVO Cloud SDK 实现相同功能,详情请参阅《EVO Cloud SDK 集成指南》。用户随后会切换到钱包 APP,并在其中完成后续支付操作。2. 用户完成支付后,会通过您调起 SDK 时指定的回调函数跳转回来。您可以在获取支付结果前向用户展示加载页面。 3. 您可以选择从服务端向 EVO Cloud 接口 /g2/v1/payment/mer/{sid}/payment 发起 HTTP GET 请求获取支付结果。详情请参阅步骤 6。4. 或者等待通知 Webhook 获取支付结果。详情请参阅 After Payment(支付后处理)章节。 |
presentEcontext | 适用于现金支付和银行转账。 | 在支付页面展示 action.econtext 对象中的文本,请用户完成后续支付流程。如果返回了 action.econtext.instructionURL 字段,也可以在支付页面展示该链接以引导用户。 |
action.redirectData.method 为 GET,将用户跳转到 action.redirectData.url。curl {action.redirectData.url}action.redirectData.method 为 POST 且存在 action.redirectData.parameter,例如用户在 PC WEB 或移动端 WAP 上使用银联 SecurePay 支付时,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 类似,但您需要在支付页面渲染的 iframe 内发起 HTTP GET 或 POST 请求。建议将 iframe 尺寸设置为 200x200 px。action.qrData 对象中的数据渲染二维码并展示给用户。action.qrData 包含以下内容:action.qrData.qrCode 时会返回该字段。2017-07-17T13:42:40+01:00。| 参数 | 是否必填 | 说明 |
|---|---|---|
| merchantTransID | M | 待查询支付的 merchantTransInfo.merchantTransID。 |
action 对象,与步骤 3 类似,需要执行后续步骤才能完成支付。您需要将 action 对象发送到前端页面或客户端 APP,然后返回步骤 4 执行所需操作。action 对象,您可以进入步骤 7,根据 result.code 和 payment.status 向用户展示支付结果。payment 对象,展示本次支付的详细信息:payment.status:本次请款的状态,必填,取值可为 Verifying、Verified、Pending、Authorised、Cancelling、Cancelled、Capturing、Captured、Refunding、Refunded、Partial Refunded 或 Failed。详情请参阅《EVO Cloud API 规范》。payment.failureCode:支付的错误码,当 payment.status 为 Failed 时返回。payment.failureReason:支付的错误信息,当 payment.status 为 Failed 时返回。payment.transAmount:支付的币种和金额,必填,从您的请求中原样返回。payment.merchantTransInfo:支付的参考信息对象,必填,由您的服务端生成,从您的请求中原样返回。payment.evoTransInfo:支付的参考信息对象,必填,由 EVO Cloud 生成。包含 evoTransID、evoTransTime、traceNum(可选),以及部分 PSP(如 Visa 或 Mastercard)的 retrievalReferenceNum。payment.pspTransInfo:请款的参考信息对象,可选, 由 PSP 生成。包含 pspTransID、pspTransTime 和 authorizationCode。如果 PSP 返回了这些信息,EVO Cloud 会将其转发给您的服务端。payment.billingAmount 和 payment.billingFXRate:用户账单币种及金额,以及 payment.transAmount.currency 与 payment.billingAmount.currency 之间的汇率(如有)。如果 PSP 返回了这些信息,EVO Cloud 会将其转发给您的服务端。适用于 PSP 进行货币转换的部分电子钱包支付场景,或您开通 DCC 功能的部分银行卡支付场景。详情请联系 EVO Cloud 客户经理。payment.convertTransAmount 和 payment.convertTransFXRate:交易发送至 PSP 时,EVO Cloud 根据 transAmount 及 transAmount.currency 到其他币种的汇率计算出的币种和金额,以及 payment.transAmount.currency 与 payment.convertTransAmount.currency 之间的汇率。当您在 EVO Cloud 开通货币转换功能且本次请款使用了货币转换时,会提供该汇率。详情请联系 EVO Cloud 客户经理。result.code 和 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 取值以及可向用户展示的推荐提示语,请参阅*《EVO Cloud API 规范》附录*。result.code 为 S0000,您需要检查 payment.status 来判断支付状态并告知用户。| 状态 | 说明 |
|---|---|
| Authorised | 用于银行卡交易,表示交易授权已成功完成,等待请款(商户可提交撤销)。 |
| Captured | 银行卡交易表示授权和请款均已成功完成;电子钱包交易表示交易已成功完成。 |
| Failed | 支付失败。 |
payment.status 取值及说明,请参阅《EVO Cloud API 规范》中的 payment.status。