Skip to main content

API 标准与协议

传输与数据格式

签名与验签

响应判定

请始终按以下方式判断 API 响应结果:
  1. 先检查 HTTP 状态码
  2. 再检查响应体中的 statuscodelabelerrorMessage 字段
  3. 如果请求成功,则从 data 字段提取业务数据

统一响应结构

所有 GatePay API 响应均遵循以下标准结构:

请求参数规范

商户订单号 (merchantTradeNo)

商户订单号是你为每笔交易分配的唯一标识:

交易金额

时间戳格式

请求头与签名

必填请求头

每个 API 请求都必须包含以下请求头:

签名字符串格式

签名基于三行字符串计算,每行都以换行符结尾 (\n):
其中:
  • <request_timestamp> 取值为 X-GatePay-Timestamp
  • <request_nonce> 取值为 X-GatePay-Nonce
  • <request_body> 为请求的原始 JSON 请求体;如果没有请求体,则为空字符串

签名生成步骤

按以下步骤计算 X-GatePay-Signature 请求头的值:
  1. 生成唯一的 X-GatePay-Timestamp (当前 UTC 毫秒时间)
  2. 生成随机 X-GatePay-Nonce (长度不超过 32 个字符,且仅包含字母和数字)
  3. 将原始 JSON 请求体读取为 request_body; 如果没有请求体则使用空字符串
  4. 构造签名字符串: timestamp\nnonce\nbody\n
  5. 使用你的 Payment API Secret 作为密钥计算 HMAC-SHA512
  6. 将结果编码为十六进制字符串
  7. 将计算得到的签名放入 X-GatePay-Signature 请求头

请求结构示例

以下示例仅用于说明签名字符串的组成方式,不表示某个具体业务接口的完整请求参数。实际字段应以对应 API Reference 页面和 OpenAPI 定义为准。

支付结果回调

回调概述

GatePay 会通过 HTTP POST 请求向你配置的回调 URL 发送异步支付通知,用于告知你的系统支付状态变化。 有关回调事件和处理方式的完整说明,请参见 通知与回调 指南。

回调载荷结构

以下示例用于帮助理解回调封装格式。不同业务线在 data 字段中的业务对象会有所不同,处理时应结合具体产品文档和对应回调 reference 一并理解。 GatePay 会 POST 以下结构的 JSON 载荷:
其中:

预期回调响应

你的回调接口必须返回一个 JSON 对象,表示处理成功: 成功响应示例:
失败响应示例:

回调验签步骤

你收到的每个回调都必须进行验签,以确认其来自 GatePay 且未被篡改:
  1. 提取 X-GatePay-Timestamp 请求头
  2. 提取 X-GatePay-Nonce 请求头
  3. 提取 X-GatePay-Signature 请求头
  4. 读取原始 JSON 回调请求体
  5. 按以下格式构造签名字符串: timestamp\nnonce\nbody\n
  6. 使用你的 Payment API Secret 作为密钥计算 HMAC-SHA512
  7. 将计算得到的签名与 X-GatePay-Signature 请求头值进行比对
  8. 仅当签名完全一致时才处理回调
重要: 如果签名不匹配,应拒绝该回调,因为它可能是伪造或已被篡改的。

回调请求头

GatePay 向你的接口发送回调时,会包含以下请求头:

时间窗口说明

文档中涉及两个不同的时间窗口,它们分别服务于不同场景: 接入时建议这样理解:
  • 10 秒 约束的是你发往 GatePay 的请求。
  • 5 分钟 是商户在接收回调时可采用的安全校验策略建议值。
  • 如果你的系统希望采用更严格的回调时间窗口,可以在可接受的网络延迟范围内自行收紧。

工具与资源

签名验证工具

GatePay 提供在线工具,帮助你在开发阶段调试和验证签名: GatePay 签名验证工具 该工具可用于:
  • 使用示例数据测试签名生成
  • 验证计算签名是否与预期值一致
  • 调试签名相关接入问题

错误处理

有关完整错误码和 API 错误处理最佳实践,请参见 错误码与最佳实践 指南。

安全最佳实践

  1. 安全密钥存储: 在服务端安全存储 Payment API Secret 和 Authorization Secret。不要在客户端代码或版本控制中暴露这些密钥。
  2. nonce 唯一性: 确保每个请求都使用唯一 nonce,以防止重放攻击。
  3. 时间戳校验: 对商户主动请求,确保时间戳偏差不超过 10 秒;对回调验签,可使用不超过 5 分钟的本地校验窗口作为防重放策略。
  4. 签名验证: 处理任何敏感操作前始终验证回调签名。
  5. 仅使用 HTTPS: 与 GatePay 的所有通信都必须使用 HTTPS 和 TLS 1.2 或以上版本。
  6. 回调幂等性: 将回调处理器设计为幂等,因为 GatePay 在未收到成功响应时可能会重试回调。
  7. 错误消息: 不要在返回给客户端的错误消息中暴露敏感信息(如密钥或内部系统详情)。

相关文档