请求方式:POST
Content-Type: text/plain
数据内容:payload
响应方式:http status=200接收成功;否则会延迟多次补发通知
payload数据为加密后的数据,请用GEP公钥解密,解密方法参考解密流程。
接口地址
商户提供通知地址,找技术支持申请配置
明文参数
序号 | 域名 | 变量名 | 必填 | 长度 | 备注 |
---|---|---|---|---|---|
01 | 类型 | type | M | String | 交易手续费 : trade_fee 3ds通知 : card_3ds_otp 交易结果通知 : card_transaction_v2 卡操作结果通知 : type_card_operate |
02 | 数据报文 | data | M | JsonObject | 数据内容 |
序号 | 域名 | 变量名 | 必填 | 长度 | 备注 |
---|---|---|---|---|---|
01 | 卡唯一编号 | cardId | M | String(128) | |
02 | 收费类型 | opType | M | int | 详见附录: 收费类型 |
03 | 收费凭证 | receiptNo | M | String | |
04 | 交易ID | recordNo | M | String | |
05 | 用户号 | userNo | M | String | |
06 | 收费币种 | realCcy | M | String | 收费币种 |
07 | 收费金额 | realFee | M | String | 收费金额 |
08 | 时间 | createAt | M | String | yyyy-MM-dd HH :mm:ss |
序号 | 域名 | 变量名 | 必填 | 长度 | 备注 |
---|---|---|---|---|---|
01 | OTP验证码 | otp | M | String | OTP验证码 |
02 | 卡号唯一ID | cardId | M | String | 卡号唯一编号 |
03 | 卡号 | cardNo | M | String | 掩码展示 |
04 | 交易币种 | transactionCurrency | M | String | 交易币种 |
05 | 交易金额 | transactionAmount | M | String | 交易金额 |
06 | 商户名称 | merchantName | M | String | 商户名称 |
交易结果通知 type = card_transaction_v2
序号 | 域名 | 变量名 | 必填 | 长度 | 备注 |
---|---|---|---|---|---|
1. | 记录编号 | recordNo | String | M | 记录编号 |
2. | 原记录编号 | originRecordNo | String | O | 原记录编号 |
3. | 卡唯一编号 | cardId | String | M | 卡id |
4. | 交易发生时间 | transTime | String | M | 交易发生时间 |
5. | 交易币种 | transCurrency | String | M | 交易币种 |
6. | 交易币种金额 | transCurrencyAmt | Number | M | 交易币种金额 |
7. | 卡本币种 | localCurrency | String | M | 卡币种 |
8. | 卡本币种金额 | localCurrencyAmt | Number | M | 卡本币种交易金额 |
9. | 授权码 | approvalCode | String | O | 授权码 |
10. | 商户名称 | merchantName | String | M | 商户名称 |
11. | 商户MCC | merchantCategoryCode | String | O | 商户MCC |
12. | 商户国家 | merchantCountryCode | String | O | 商户国家 |
13. | 跨境类型 | crossBoardType | String | O | 0:境内 1:境外 |
14. | 交易类型 | commonTransType | int | M | 1:消费 2:冲正 3:退款 4:清算差额 5:冲正后请款 7:强制清算 |
15. | 交易状态 | commonTransStatus | int | M | 1:批准 2:拒绝 3:已清算 |
16. | 交易响应码 | commonRespCode | String | M | 详见附录:交易响应码 |
17. | 交易响应码描述 | commonRespCodeDesc | String | M | 详见附录:交易响应码 |
18. | 资金类型 | fundsType | int | M | 0:常规卡 1:共享卡 2:账户 |
19. | 资金方向 | fundsDirection | int | M | 0:扣款 1:退款 |
20. | 清算金额 | settleAmount | Number | C | 清算金额(commonTransType=1或7,且commonTransStatus=3时才有值) |
21. | 清算时间 | settleTime | String | O | commonTransStatus=3时有值 |
卡操作结果通知 type = type_card_operate
序号 | 域名 | 变量名 | 必填 | 长度 | 备注 |
---|---|---|---|---|---|
01. | 服务系统返回的单号 | orderId | M | String | 订单唯一订单号 |
02. | 卡编号 | cardId | O | String | 卡唯一编号 |
03. | 卡组编号 | groupId | O | String | 卡组唯一编号 |
04. | 请求流水号 | userReqNo | M | String | 客户上送的流水号 |
05. | 订单类型 | opType | M | int | 0开卡 1充值 3销卡4退款 |
06. | 订单状态 | status | M | int | 状态:2 成功 3失败 |
07. | 状态描述 | statusDesc | M | String | 状态描述 |
08. | 订单金额 | amount | M | Number | 金额,注意开附属卡时为限额(0不限);销卡时为销卡金额 |
09. | 手续费 | fee | M | Number | 手续费,注意开卡时为合计费用 |
10. | 卡信息 | cardInfo | O | JSON | opType=0且cardId不为空的时候存在 |
11. | 创建时间 | createAt | M | String | 创建的时间,格式yyyy-MM-dd HH :mm:ss |
cardInfo数据说明
序号 | 域名 | 变量名 | 必填 | 长度 | 备注 |
---|---|---|---|---|---|
01. | 卡号 | cardNo | M | String | 卡号 |
02. | 卡安全验证码CVV(3位) | cardVerifyNo | M | Number | 卡安全验证码CVV(3位) |
03. | 卡别名 | cardAlias | O | String | 卡别名 |
04. | 卡标签 | cardLabel | O | String | 卡标签 |
05. | 卡有效期 | cardExpiryDate | M | String | 卡有效期(格式:03/2022) |
06. | 卡本币种 | localCurrency | M | String | 卡本币种 |
07. | 卡生效日期 | startActiveDate | M | String | 卡生效日期 |
08. | 最晚关卡日期 | endCloseDate | M | String | 最晚关卡日期 |
明文示例
{
"data": {
"amount": 98,
"cardId": "2403282025000018833",
"createAt": "2024-03-28 20:39:41",
"fee": 0,
"opType": 4,
"orderId": "2403282039000201236",
"status": 2,
"statusDesc": "成功",
"userReqNo": "W2024032820394010034"
},
"type": "type_card_operate"
}
👉常见交易流程
消费(拒绝) → 结束
消费(批准)
- 消费(已清算·有 settleAmount) [无清算差额] → 结束
- 消费(已清算·有 settleAmount) [有清算差额] → 清算差额(已清算) → 结束
退款(已清算) → 结束
(退款一般发生在原交易清算之后,但大多数关联不到原交易单号)消费(批准) → 冲正(批准) → 结束
(已冲正的交易,原消费交易的状态不会再变为已清算)消费(批准) → 冲正(批准) → 消费(已清算·有 settleAmount) → 冲正后请款(已清算) → 结束
强制清算(已清算·有 settleAmount) → 结束
(强制清算是没有授权的直接清算的交易)
获取webhook数据
获取返回信息需获取请求中的流数据
JAVA示例:
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); StringBuilder builder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { builder.append(line); } String payload = builder.toString(); // TODO 解密payload
PHP示例:
$payload = file_get_contents('php://input'); echo "webhook接收通知内容:".$payload; // TODO 解密$payload
作者:陈花枪 创建时间:2024-08-15 10:52
最后编辑:陈花枪 更新时间:2025-04-07 14:39
最后编辑:陈花枪 更新时间:2025-04-07 14:39