产品概述
EVO Payment 提供原始信用交易(Original Credit Transaction,OCT),适用于退税、线上游戏等多种业务场景。
工作原理
下图描述了出款(Payout)的完整流程。
步骤 1:检查银行卡是否可用
EVO Payment 支持在发起原始信用交易之前,通过零金额授权交易验证银行卡。详情请参阅“账户状态查询(ASI)”章节。该步骤为可选步骤。
步骤 2:收集用户出款信息
根据 API 规范收集用户的出款信息,然后发送到您的服务端。请注意,如果用户选择使用银行卡,商户必须满足 PCI DSS 合规要求。您可以通过以下 2 种方式收集卡信息:
- 使用 EVO Payment 客户端方案对用户卡信息进行安全加密。
该方式可确保您满足 PCI DSS 合规要求,您只需提交 PCI DSS 自评估问卷 A(SAQ A)。详情请参阅《EVO Payment SDK 集成指南》。
- 收集并发送卡片明文数据。
该方式要求您按照 PCI DSS 自评估问卷 D(SAQ D)评估自身的 PCI DSS 合规情况,这是范围最广的自我认证形式。在原始信用交易场景中,用户只需发送卡号或加密后的卡号。
步骤 3:发起出款
- 仅有出款交易时
用户选择银行卡并提交所需出款信息后,您需要向 EVO Payment 发起出款请求。您可以从服务端向 EVO Payment 以下接口发起 HTTP POST 请求:
/g2/v1/payment/mer/{sid}/payout
并指定以下参数:
| Body 参数 | 是否必填 | 说明 |
|---|---|---|
| merchantTransInfo | M | 出款的参考信息,包括唯一的 merchantTransID,以及表示您发起请求时间的 merchantTransTime。 |
| transAmount | M | 出款的币种和金额。金额必须符合该币种的最小单位规则。 |
| paymentMethod | M | 使用 paymentMethod.type 指定出款方式类型(例如 card),并携带上一步收集的对应出款信息。 |
| transInitiator | M | 发起交易的设备信息。 |
| tradeInfo | M | 用于说明原始信用交易的具体场景。 |
| senderInfo | M | 向收款卡汇款的付款人详细信息。如果您能获取该信息,请传入,有助于 EVO Payment 进行反洗钱和欺诈检测,并提升出款成功率。 |
| recipientInfo | M | 接收付款人资金的收款人详细信息。如果您能获取该信息,请传入,有助于提升出款成功率。 |
| webhook | O | 接收通知的 URL。传入该参数后,出款成功时将收到 EVO Payment 的通知。 |
| metadata | O | 您可在请求中自定义的参考信息,会在响应中原样返回。除 GET 请求外,响应中的 metadata 与您请求中的 metadata 相同;GET 响应中的 metadata 与 POST 请求中的 metadata 相同;通知中的 metadata 也与 POST 请求中的 metadata 相同。 |
paymentMethod 对象的更多说明:
以下以银行卡场景为例:
paymentMethod.type:请求中设置为 card。
paymentMethod.card.payoutCardInfo.cardNumber:设置为收款人的卡号。
tradeInfo 对象的更多说明:
tradeInfo.tradeType:
该字段用于定义原始信用交易的具体场景,不同场景需要使用不同的取值。目前 EVO Payment 支持以下四种有效取值:
Funds_Disbursement:用于退税、代发工资、游戏充值等。
Online_Gambling_Payout:用于线上游戏。
Account_Transfer:用于 P2P 场景中同一人名下两个账户之间的原始信用交易。
Personal_Transfer:用于 P2P 场景中两个人之间的原始信用交易。
以下是使用 Visa 卡发起 10 USD 出款的示例:
curl-X POST https://{DOMAIN_NAME.com}/g2/v1/payment/mer/{sid}/payout \
-H "Content-Type: application/json" \
-H "DateTime: 2021-12-31T08:30:59+0800" \
-H "MsgID: 2d21a5715c034efb7e0aa383b885fc7a" \
-H "SignType: SHA256" \
-H "Authorization: YOUR_MESSAGE_SIGNATURE" \
-d'{
"transInitiator": {
"platform": "WEB"
},
"merchantTransInfo": {
"merchantTransID": "{{merchantTransID}}",
"merchantTransTime": "{{merTransTime}}"
},
"tradeInfo": {
"tradeType": "Account_Transfer",
"purposeOfPayment": "13"
},
"transAmount": {
"currency": "HKD",
"value": "1.00"
},
"paymentMethod": {
"type": "card",
"card": {
"payoutCardInfo": {
"cardNumber": "5204730000009725"
}
}
},
"senderInfo": {
"name": {
"firstName": "test1",
"middleName": "test2",
"lastName": "test3"
},
"address": {
"street": "UL",
"city": "UA",
"stateOrProvince": "LA",
"country": "USA"
},
"dateOfBirth": "20000415",
"accountNumber": "123456",
"accountType": "Card_Account"
},
"recipientInfo": {
"name": {
"firstName": "ABC",
"middleName": "DFG",
"lastName": "QWE"
},
"address": {
"street": "AC",
"city": "YU",
"stateOrProvince": "AL",
"country": "USA"
}
},
"webhook": "",
"metadata": "123"
}以下是响应示例:
{
"metadata": "123",
"paymentMethod": {
"payoutCard": {
"first6No": "476134",
"fundingType": "credit",
"issuingCountry": "SGP",
"last4No": "0019",
"paymentBrand": "Visa",
"productID":"N"
},
"isNetworkToken": false
},
"payout": {
"evoTransInfo": {
"evoTransID": "pay_250904100221000118184371",
"evoTransTime": "2025-09-04T02:02:21Z",
"retrievalReferenceNum": "524710336595",
"traceNum": "336595"
},
"merchantTransInfo": {
"merchantTransID": "T509041756951340689",
"merchantTransTime": "2025-09-04T10:02:20+08:00"
},
"pspTransInfo": {
"authorizationCode": "016407",
"pspTransTime": "2025-09-04T02:02:20Z",
"pspTransID":"MCS0X349T0908",
"retrievalReferenceNum": "524710336595"
},
"status": "Success",
"transAmount": {
"currency": "HKD",
"value": "1.00"
}
},
"pspData": {
"merchantID": "OCT000415123456",
"name": "Visa"
},
"result": {
"code": "S0000",
"message": "Success",
"pspMessage": "Approved or completed successfully",
"pspResponseCode": "00"
}
}- P2P 场景中的 OCT 交易
在 P2P 场景中,如果用户选择通过两个请求完成转账,需要先发送一笔 AFT(Account Funding Transaction,账户注资交易)请求(POST Payment),再发送一笔 OCT 请求(POST Payout)。OCT 请求必须在请求 URL 中关联 AFT 请求的 merchantTransID,以便关联必要的信息。
以下是 P2P 场景中 OCT 的请求 URL 示例(merchantTransID 的值仅为示例,该 merchantTransID 属于 AFT 交易):
/g2/v1/payment/mer/{sid}/payout?merchantTransID=T509091757387259148
步骤 4:展示出款结果
用户确认出款后,您可以根据 result.code 和 payout.status 告知用户出款状态。
| Result code | Description |
|---|---|
| S0000 | Success |
| V0008 | Field { } is not applied with |
| C0004 | Request resource merchantTransID {XXX} not exist |
| B0005 | Unsupported function {XXX}, please check your profile setup in EVO Payment |
| B0006 | Unsupported payment brand {XXX}, please check your profile setup in EVO Payment |
| B0033 | The transaction was rejected for security violation |
其他可能的 result.code 取值以及可向用户展示的推荐提示语,请参阅《EVO Payment API 规范》附录。
查询出款详情
用户可以发送 GET Payout 请求获取出款的详细信息。
您可以从服务端向 EVO Payment 以下接口发起 HTTP GET 请求(merchantTransID 的值仅为示例,该 merchantTransID 属于您要查询的出款交易):
/g2/v1/payment/mer/{sid}/payout?merchantTransID=T509091757387259148
响应内容与 POST Payout 的响应相同。

