跳到主要内容
机器翻译

本页面使用机器翻译。如有任何不一致之处,请参阅英文文档

回调

基本信息

  • 以 HTTP POST 请求的形式发送到客户端系统,发送到个人账户中指定的 URL
  • 请求和响应正文中的数据以 JSON 格式提供
  • 请求包含以下请求头:
    • Content-Type: application/json
    • User-Agent:有关发起调用系统的信息
  • 日期以 UTC 时间、ISO 8601 格式传输。例如:2024-07-02T12:50:30Z

回调 URL 要求

  1. 必须使用安全的 HTTPS 协议
  2. 必须使用域名,而不是 IP 地址

认证

回调的认证是通过在请求中发送请求头来完成的,与用于 API 请求认证的请求头类似(参见认证一节)。

回调验证

为防止欺诈,客户端系统必须按以下方式验证指定回调请求头的值:

  1. 当前服务器时间与 X-Processing-Timestamp 请求头值之间的差值不超过 X-Processing-RecvWindow 请求头的值
  2. X-Processing-Key 请求头的值与客户端有效的公共 API 访问密钥的值一致
  3. X-Processing-Signature 请求头的值与使用密钥对请求数据进行签名后得到的签名一致

处理回调

成功响应

如果回调请求处理成功,客户端系统必须返回 HTTP 状态码 200 OK

幂等性

如果在成功响应某个回调请求之后,又收到另一个类似的请求,则必须生成与前一次相同的响应。

如果请求正文中以下参数的值相同,则认为这些请求是类似的:

  • type - 交易类型
  • id - 处理系统中的交易标识符(对于地址检查 - checkId
  • status - 交易状态

交易唯一性

要确定多个回调是属于同一笔交易还是不同的交易,请使用回调 JSON 根元素中 typeid 参数的组合。此组合在所有交易中都是唯一的。

对于地址检查回调(type = AddressCheck),使用 checkId 参数代替 id

重试策略

不重试的状态码

如果客户端系统返回以下 HTTP 状态码,回调将不会重试

  • 1xx
  • 3xx
  • 4xx

会重试的状态码

如果响应的 HTTP 状态码在 5xx 范围内,该回调将保留在发送队列中,并按照指数退避策略继续尝试发送。

退避计算公式:

60 seconds + {retry count}^4

最大重试次数: 10

重试间隔

尝试次数间隔总耗时
161 sec61 sec
276 sec137 sec
3141 sec278 sec
4361 sec594 sec
5685 sec1,279 sec
61,356 sec2,635 sec
72,461 sec5,096 sec
84,156 sec9,252 sec
96,621 sec15,873 sec
1010,060 sec25,933 sec (~7.2 hours)