1. 支付网关
TrustPay
zh
  • en
  • zh
  • 接入说明
  • 签名计算
  • 支付风控接口 - 商户接入指南
  • 支付网关
    • 枚举类型说明
    • 支付回调说明
    • C21 支持区域
      • TrustPay API 与 Checkout 支持的国家和 US/CA 州省
    • 白名单管理
      • 添加卡白名单
      • 导入任务查询
      • 查询卡白名单
    • 卡直付
      POST
    • 收银台
      POST
    • 订单退款
      POST
    • 支付回调通知
      POST
    • 订单查询
      POST
    • 余额查询
      POST
    • 费率查询
      POST
    • 退款查询
      POST
  • 争议管理
    • 争议枚举
    • 争议预警
    • 争议预警回调
    • 争议预防(RDR)
    • 争议管理(Chargeback)
    • Chargeback 回调
  • 信用卡开卡
    • 查询可用卡类型
      POST
    • 开通虚拟卡
      POST
    • 开卡/充值回调通知
      POST
    • 获取虚拟卡详情
      POST
    • 虚拟卡充值
      POST
    • 订单列表查询
      POST
    • 虚拟卡列表查询
      POST
    • 卡片列表
      POST
    • 流水查询
      POST
    • 费率查询
      POST
  • 实体卡
    • 创建持卡人
    • 持卡人列表
    • 绑定持卡人
    • 持卡人绑定列表
    • 查询实体卡余额
    • 查询交易记录
    • 查询账户
    • 实体卡充值
  • Payment Gateway
  • Schemas
    • VCardDetail
    • VOrderDetail
  1. 支付网关

支付回调说明

1.
TrustPay 会向商户提交订单时设置的 notify_url 发送带签名的 JSON 回调;
2.
正式争议和争议预警回调请分别查看 争议管理 / 正式争议回调 与 争议管理 / 争议预警回调;
3.
虚拟卡开卡/充值回调请查看信用卡开卡章节;
4.
通用签名规则和参考代码请查看 签名计算;
5.
本文档仅说明支付与退款生命周期回调。

请求#

请求方法: POST
Content-Type: application/json
请求地址: 订单提交的 notify_url

成功响应#

商户端应返回 HTTP 200。非 200(含 400/500)、超时均视为失败并重试。
项规则
成功仅 HTTP 200
最大发送次数3 次(首次 + 最多 2 次重试)
间隔指数退避,约 60s → 120s(上限 1h)

支付通知类型总览#

type含义判定主字段
0代收 Payin数字 status
1代付 Payout数字 status
2退款 Refund数字 refund_status

通用字段#

字段类型必填说明
typeinteger是0 = 代收,1 = 代付, 2 = 退款
merchant_idinteger是TrustPay 商户 ID
order_nostring是商户订单号
order_amountnumber是订单金额
statusinteger仅支付回调订单状态,请查看 枚举类型说明
reasonstring是结果或失败原因,可能为空
signstring是MD5 小写十六进制签名

金额字段#

字段名类型必填说明
order_amountnumber是订单金额
paid_amountnumber否实际支付金额
balance_amountnumber否结算/余额变动口径(见各 type)
refund_amountnumber否退款金额(见 §6)
feenumber否手续费

退款字段#

字段名类型必填说明
merchant_refund_nostring否本次退款的商户退款单号(仅当前这一笔)
refund_statusint64否1 处理中 / 2 成功 / 3 失败 / 4 回滚 / 5 账务冲突。退款结果以此判定
金额使用 JSON number,序列化结果可能省略尾零。验签时必须使用从回调请求体解析出的值,不要先对金额做舍入或重新格式化。

回调类型示例#

1. 代收 Payin ( type = 0 )#

字段规则#

场景statuspaid_amountbalance_amountfeepay_time
失败/超时3/4省略省略省略省略
成功(未退款)如 5/6有值paid_amount - fee有值有值(未结算且无 pay_time 时可能用当前 UTC)

示例(代收未结算)#

{
  "type": 0,
  "merchant_id": 8820250900009,
  "order_no": "MCH-PAYIN-20260513-001",
  "order_amount": 500.00,
  "paid_amount": 500.00,
  "balance_amount": 492.50,
  "fee": 7.50,
  "status": 5,
  "reason": "payment received",
  "pay_time": "2026-05-13T08:30:00Z",
  "sign": "..."
}

2. 代付 Payout ( type = 1 )#

字段规则#

场景paid_amountbalance_amount
失败/超时省略省略
其他order.paid_amountpaid_amount + fee(代付口径)

示例#

{
  "type": 1,
  "merchant_id": 8820250900009,
  "order_no": "MCH-PAYOUT-20260513-001",
  "order_amount": 1000.00,
  "paid_amount": 1000.00,
  "balance_amount": 1003.00,
  "fee": 3.00,
  "status": 2,
  "reason": "payout success",
  "pay_time": "2026-05-13T09:00:00Z",
  "sign": "..."
}

3. 退款refund ( type = 2 )#

字段规则#

字段规则
type固定 2
order_no原支付商户订单号(不新增 payment_order_no)
merchant_refund_no本次商户退款单号(正常路径应有;找不到对应退款记录时可能省略)
refund_status判定退款结果:见下表
refund_amount处理中/失败:当前这一笔金额;成功(自动路径):多为原支付单累计已退金额
status订单侧展示:处理中 9;全额成功 7;部分成功 8;失败 = 恢复后的原支付状态(如 5/6/17),不固定为 3
paid_amount / balance_amount / fee / pay_time均省略

枚举值说明#

refund_status含义
1处理中 processing
2成功 success
3失败 failed
4回滚 rollback
5账务冲突 accounting_conflict

示例#

处理中
{
  "type": 2,
  "merchant_id": 10001,
  "order_no": "TPC_PAY_202508130001",
  "order_amount": 20.00,
  "refund_amount": 20.00,
  "merchant_refund_no": "TPC_REFUND_202508130001",
  "refund_status": 1,
  "status": 9,
  "reason": "refund processing",
  "sign": "..."
}
全额成功
{
  "type": 2,
  "merchant_id": 8820250900009,
  "order_no": "TPC_PAY_202508130001",
  "order_amount": 20.00,
  "refund_amount": 20.00,
  "merchant_refund_no": "TPC_REFUND_202508130001",
  "refund_status": 2,
  "status": 7,
  "reason": "refund completed",
  "sign": "..."
}
部分成功
{
  "type": 2,
  "merchant_id": 8820250900009,
  "order_no": "TPC_PAY_202508130001",
  "order_amount": 100.00,
  "refund_amount": 30.00,
  "merchant_refund_no": "TPC_REFUND_202508130002",
  "refund_status": 2,
  "status": 8,
  "reason": "refund completed",
  "sign": "..."
}
失败
{
  "type": 2,
  "merchant_id": 8820250900009,
  "order_no": "TPC_PAY_202508130001",
  "order_amount": 20.00,
  "refund_amount": 20.00,
  "merchant_refund_no": "TPC_REFUND_202508130001",
  "refund_status": 3,
  "status": 5,
  "reason": "channel rejected refund",
  "sign": "..."
}

推荐判定(保守策略)#

if type == 2:
  refund_status=1 → 保持处理中
  refund_status=2 且 merchant_refund_no、金额与本笔匹配 → 成功
  refund_status=3 → 失败
  仅有 status∈{5,6,17} 且无 refund_status=3 → 不自动失败
创建接口返回 7/8 → 不单独认定成功,等 webhook / 查单交叉确认

验签#

处理任何回调前必须验证 sign。实际负载中的所有非空字段都参与签名。
待签名字符串、示例以及 JavaScript、Go 参考实现请查看 签名计算。

安全检查清单#

只通过 HTTPS 接收回调。
更新业务状态前必须验签。
确认 merchant_id 属于当前接收方。
应用支付或退款变更前先执行幂等检查。
不要记录商户密钥或完整待签名字符串。
为审计安全保存原始回调请求体;涉及卡信息时必须脱敏。
Modified at 2026-08-29 06:36:58
Previous
枚举类型说明
Next
TrustPay API 与 Checkout 支持的国家和 US/CA 州省
Built with