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

    签名计算

    TrustPay 的商户 API 请求和商户回调使用同一套签名算法,包括支付回调和拒付预警回调。
    商户密钥只能保存在服务端。不要将密钥暴露在浏览器代码、移动端应用、URL、日志或工单中。

    计算规则#

    给定一个 JSON 对象和商户密钥:
    1.
    移除 sign 字段。
    2.
    移除值为 null 或空字符串("")的字段。
    3.
    保留有效的零值,例如数字 0 和布尔值 false。
    4.
    将剩余字段值转换为规范字符串:
    字符串:使用原值,不做 trim;
    整数:十进制数字;
    JSON 数字:使用不带多余尾零的最短十进制表示;
    布尔值:true 或 false;
    数组或对象:紧凑 JSON。
    5.
    按字段名的字典序升序排列。
    6.
    使用 key=value 格式,并用 & 连接。
    7.
    在末尾追加 &secret=YOUR_MERCHANT_SECRET。
    8.
    对 UTF-8 字节计算 MD5,输出小写十六进制字符串。
    构造待签名字符串时,不要对字段名或字段值做 URL 编码。

    拒付预警示例#

    添加 sign 前的负载:
    {
      "type": 7,
      "merchant_id": 1001,
      "order_no": "ORDER_123456",
      "order_amount": 352.99,
      "paid_amount": 352.99,
      "reason": "10.4",
      "event_type": "chargeback_alert.created",
      "alert_id": "cba_example_001",
      "provider_alert_id": "2L07DBRFGBDLIW7SH59V969JG",
      "platform_order_no": "TP202607270001",
      "warning_type": "ethoca",
      "alert_type": "fraud",
      "match_method": "arn",
      "currency": "USD",
      "chargeback_amount": 352.99,
      "chargeback_currency": "USD",
      "chargeback_alert_fee": 4.5299,
      "masked_card_number": "800012******6824",
      "arn": "12345678901234567890123",
      "chargeback_reason_code": "10.4",
      "source": "ethoca",
      "alert_timestamp": "2026-07-27T12:00:00Z",
      "transaction_timestamp": "2026-07-26T12:00:00Z",
      "received_at": "2026-07-27T12:00:01Z"
    }
    仅用于本示例的测试密钥:
    test_secret_key_12345_abcdefghijklmnop
    待签名字符串:
    alert_id=cba_example_001&alert_timestamp=2026-07-27T12:00:00Z&alert_type=fraud&arn=12345678901234567890123&chargeback_alert_fee=4.5299&chargeback_amount=352.99&chargeback_currency=USD&chargeback_reason_code=10.4&currency=USD&event_type=chargeback_alert.created&masked_card_number=800012******6824&match_method=arn&merchant_id=1001&order_amount=352.99&order_no=ORDER_123456&paid_amount=352.99&platform_order_no=TP202607270001&provider_alert_id=2L07DBRFGBDLIW7SH59V969JG&reason=10.4&received_at=2026-07-27T12:00:01Z&source=ethoca&transaction_timestamp=2026-07-26T12:00:00Z&type=7&warning_type=ethoca&secret=test_secret_key_12345_abcdefghijklmnop
    结果:
    74b056edb0a02de837ec134a241e19ea

    JavaScript 示例#

    Go 示例#

    验签检查清单#

    验签前直接解析原始 JSON,不要先修改字段值。
    只排除 sign、null 和空字符串;数字 0 必须参与签名。
    不要对金额做舍入,也不要补尾零。
    不要对待签名字符串做 URL 编码。
    使用回调所属商户配置的同一个商户密钥。
    使用常量时间比较签名。
    日志只记录验签结果,不要记录待签名字符串或密钥。
    Modified at 2026-07-27 17:54:16
    Previous
    接入说明
    Next
    支付风控接口 - 商户接入指南
    Built with