1. Payment
Merchant Connect API
  • 版本记录
  • Integration Guide
    • EC Payment
      • Merchant API
        • Overview
        • Payment
        • Payment Methods
        • Response code
        • After Payment
          • Capture
          • Cancel
          • Refund
          • Cancel or Refund
          • Accept Notification
        • Features
          • Account Status Inquiry (ASI)
          • COF
          • Multi-Currency Transaction
          • Recurring
          • Smart Routing
          • Transaction Retry
          • Payout
          • Authentication
            • 3D Secure
            • FIDO Authentication
            • Authentication only
            • Authorization only
          • Tokenization
            • Gateway Tokenization
            • Create a gateway token
            • Network Tokenization
            • Pay with gateway token
            • Manage token
            • Network Token update notification
            • Card Based Network Token
    • In-store Payment
      • Merchant API (线下卡支付)
        • ZPK
          • ZPK
        • Payment
          • Payment
        • After Payment
          • Capture
          • Cancel
          • Refund
          • Cancel or Refund
          • Accept Notification
      • Merchant API(QR)
        • Payment
          • CPM
          • MPM
          • MPM static QR code
        • After Payment
          • Capture
          • Cancel
          • Refund
          • Cancel or Refund
          • Accept Notification
  • API Explorer
    • API Rules
  • PaymentMethod
    • PaymentMethod
      POST
    • PaymentMethod
      PUT
    • PaymentMethod
      GET
    • PaymentMethod
      DELETE
  • FXRateInquiry
    • FXRateInquiry
      POST
    • FXRateInquiry
      GET
  • Payment
    • Payment
      POST
    • Payment
      GET
    • Payment
      PUT
  • Payout
    • Payout
      POST
    • Payout
      GET
  • Capture
    • Capture
      POST
    • Capture
      GET
  • Cancel
    • Cancel
    • Cancel
  • Refund
    • Refund
    • Refund
  • Cryptogram
    • Cryptogram
    • Cryptogram
  • CancelOrRefund
    • Cancel or Refund
    • Cancel or Refund
  • Notification
    • Notification for PaymentMethod
    • Notification for Payment
    • Notification for Capture
    • Notification for Cancel
    • Notification for Refund
    • Notification for DataSubmission
    • Notification for MPM Static QR Code
    • Notification for Token Status Update
    • Notification for Settlement
    • Notification for Reversal
    • Notification for Cryptogram
    • Notification for Payout
  • HealthCheck
    • HealthCheck
  • ZPK
    • ZPK
  • 附录
    • Product Code
    • Result Code
    • Appendix: Payment Method Variant
    • Appendix: Payment Brands
  • Coupon Write-off
    • Coupon Write-off
  • Coupon Reversal
    • Coupon Reversal
  1. Payment

CPM

步骤 1:获取可用支付方式#

当收银员准备在终端上收款时,获取可用支付方式列表。
我们强烈建议调用以下接口,确保始终向用户展示最新的支付方式列表,但此步骤为可选步骤。您也可以缓存接口响应,每周更新一次。
您可以从服务端向 EVO Payment 以下接口发起 HTTP GET 请求:
/g2/v1/payment/mer/{sid}/paymentMethod
并指定以下任一参数:
查询参数是否必填说明
paymentBrandO您计划向用户提供的指定支付品牌。传入该参数后,响应将返回该支付品牌下可用的支付方式及支付信息。
CurrencyO用户计划用于支付的指定币种。传入该参数后,响应将返回该币种下可用的支付方式及支付信息。
每次请求只允许使用以上一个参数。如果同时传入多个参数,系统将按照 paymentBrand、currency 的优先级进行响应。
如果未指定任何查询参数,系统将根据您与 EVO Payment 的接入情况,返回全部支付方式及需要收集的支付信息。
以下是不带任何查询参数的请求示例:
响应中的 paymentBrandList 数组包含可用支付方式列表,每种支付方式包含以下字段:
1.
brandName:支付方式的品牌名称。
2.
brandImage:支付方式的 Logo 图片 URL,用于在支付页面展示 Logo。
3.
paymentScenario:该支付方式支持的支付场景。
4.
promotionInfo:该支付方式支持的优惠活动名称列表。
更多详情请参阅《EVO Payment API 规范》。
以下是响应示例:
如果您希望在终端上展示支付方式的 Logo,可以使用 paymentMethod.paymentBrandList.brandImage。

步骤 2:收集用户付款码#

在 CPM 场景下,您需要扫描用户手机上展示的付款码,获取用户付款码的原始数据。

步骤 3:发起支付#

获取付款码原始数据后,您需要向 EVO Payment 发起支付请求。
您可以从服务端向 EVO Payment 以下接口发起 HTTP POST 请求:
/g2/v1/payment/mer/{sid}/payment
并指定以下参数:
Body 参数是否必填说明
merchantTransInfoM支付的参考信息,包括唯一的 merchantTransID,以及表示您发起请求时间的 merchantTransTime。
transAmountM支付的币种(currency)和金额(value)。金额必须符合该币种的最小单位规则。
paymentMethodM使用 paymentMethod.type 指定支付方式类型,例如 e-wallet 或 card,并携带上一步收集的对应支付信息。
transInitiatorM发起交易的设备信息。
storeInfoO补充的门店信息。当您的门店在 EVO Payment 中配置了多个 MCC 时,需通过该字段指明本次支付使用的 MCC。
tradeInfoO当 paymentMethod.e-wallet.paymentBrand 为 Alipay 时必填,用于说明本次支付的详细信息。
WebhookO接收通知的 URL。传入该参数后,支付成功时将收到 EVO Payment 的通知。
MetadataO您可在请求中自定义的参考信息,会在响应中原样返回。除 GET 请求外,响应中的 metadata 与您请求中的 metadata 相同;GET 响应中的 metadata 与 POST 请求中的 metadata 相同;通知中的 metadata 也与 POST 请求中的 metadata 相同。
paymentMethod 对象的更多说明:
A. 用户选择电子钱包支付时:
1.
paymentMethod.type:请求中设置为 e-wallet。
2.
paymentMethod.e-wallet.paymentBrand:用户付款码的原始数据。
以下是使用 Alipay 发起 10 USD 支付的示例:
如果响应中没有返回 action 对象,您可以直接进入步骤 5,根据 result.code 和 payment.status 向用户展示支付结果。
部分 CPM 交易需要用户在钱包 APP 中通过密码、指纹或 Face ID 等方式确认支付。此时,您需要提示用户确认支付,并向 EVO Payment 查询支付结果。
以下是返回需要跳转的 action 对象的响应示例:

步骤 4:查询支付结果#

当 payment.status 为 Pending 时,如果您未使用 Accept Notification(接收通知)Webhook,可以向 EVO Payment 发起请求查询支付结果。
您可以从服务端向 EVO Payment 以下接口发起 HTTP GET 请求:
/g2/v1/payment/mer/{sid}/payment
并指定以下参数:
查询参数是否必填说明
merchantTransIDM待查询支付的 merchantTransInfo.merchantTransID。
查询支付结果示例:
如果响应中返回了 result 对象,您可以进入步骤 5,根据 result.code 和 payment.status 向用户展示支付结果。
如果支付已完成,响应中会返回 payment 和 paymentMethod 对象,展示本次支付的详细信息:
1.
payment.status:本次请款的状态,必填,取值可为 Pending、Cancelling、Cancelled、Captured、Refunding、Refunded、Partial Refunded 或 Failed。详情请参阅《EVO Payment API 规范》。
2.
payment.failureCode:支付的错误码,当 payment.status 为 Failed 时返回。
3.
payment.failureReason:支付的错误信息,当 payment.status 为 Failed 时返回。
4.
payment.transAmount:支付的币种和金额,必填,从您的请求中原样返回。
5.
payment.merchantTransInfo:支付的参考信息对象,必填,由您的服务端生成,从您的请求中原样返回。
6.
payment.evoTransInfo:支付的参考信息对象,必填,由 EVO Payment 生成。包含 evoTransID、evoTransTime、traceNum(可选),以及部分 PSP(如 Visa 或 Mastercard)的 retrievalReferenceNum。
7.
payment.pspTransInfo:请款的参考信息对象,可选,由 PSP 生成。包含 pspTransID、pspTransTime 和 authorizationCode。如果 PSP 返回了这些信息,EVO Payment 会将其转发给您的服务端。
8.
payment.billingAmount 和 payment.billingFXRate:用户账单币种及金额,以及 payment.transAmount.currency 与 payment.billingAmount.currency 之间的汇率(如有)。如果 PSP 返回了这些信息,EVO Payment 会将其转发给您的服务端。适用于 PSP 进行货币转换的部分电子钱包支付场景,或您开通 DCC 功能的部分银行卡支付场景。详情请联系 EVO Payment 客户经理。
9.
payment.convertTransAmount 和 payment.convertTransFXRate:交易发送至 PSP 时,EVO Payment 根据 transAmount 及 transAmount.currency 到其他币种的汇率计算出的币种和金额,以及 payment.transAmount.currency 与 payment.convertTransAmount.currency 之间的汇率。当您在 EVO Payment 开通货币转换功能且本次请款使用了货币转换时,会提供该汇率。详情请联系 EVO Payment 客户经理。
10.
paymentMethod.e-wallet.paymentBrand:本次支付实际使用的支付品牌,EVO Payment 会通过付款码进行识别。
11.
paymentMethod.e-wallet.walletName:支付品牌为 Alipayplus 时的子钱包名称。
以下是支付成功的响应示例:

步骤 5:展示支付结果#

用户确认支付后,您可以根据 result.code 和 payment.status 告知用户支付状态。
Result CodeDescription
S0000Success
V0008Field {} is not applied with {...}
C0004Request resource merchantTransID {XXX} not exist
B0005Unsupported function {XXX}, please check your profile setup in EVO Payment
B0006Unsupported payment brand {XXX}, please check your profile setup in EVO Payment
B0033The transaction was rejected for security violation
I0111Payment Code expired or error
其他可能的 result.code 取值以及可向用户展示的推荐提示语,请参阅*《EVO Payment API 规范》附录*。
如果 result.code 为 S0000,您需要检查 payment.status 来判断支付状态并告知用户。
状态说明
Captured银行卡交易表示授权和请款均已成功完成;电子钱包交易表示交易已成功完成。
Failed支付失败。
其他可能的 payment.status 取值及说明,请参阅《EVO Payment API 规范》中的 payment.status。

异常处理#

向 EVO Payment 发起 HTTP POST 请求时:建议请求发送后至少等待 45 秒。如果在该时间内未收到响应,需要按照步骤 6 发起请求,向 EVO Payment 查询结果。
向 EVO Payment 发起 HTTP GET 请求时:您可以多次发起请求直至获取结果,建议每次后续请求前至少等待 45 秒。如果多次请求后仍无法获取结果,可以根据您的请款模式发起 Cancel(撤销)或 Refund(退款)请求来取消该笔支付。详情请参阅 After Payment(支付后处理)章节。
上一页
Accept Notification
下一页
MPM
Built with