订单Webhook

介绍

订单状态Webhook

Webhook会在订单支付成功/失败/超时/超时支付成功时调用商户。

说明

👍

支付完成后,相关支付结果及用户信息会以JSON格式发送给商户,商户需要接收并处理,并按照文档规范进行响应。

同一条通知可能会多次发送给商户,商户必须正确处理重复通知。

直到商户响应HTTP状态码为200,且返回信息包含“success”时,通知才会重新发送。

此类情况下可能会发生多次通知尝试。通知频率如下:

  • 10分钟内的订单,每10秒发送一次请求。
  • 1小时内的订单,每1分钟发送一次请求。
  • 24小时内的订单,每10分钟发送一次请求。

🚧

商户系统必须对支付结果通知进行签名验证,并检查返回的订单金额是否与商户端金额相符。防止数据泄露导致“误报”,造成经济损失。

商户在处理通知时,应先检查相应业务数据的状态,判断该通知是否已处理,若未处理,则继续处理,若已处理,则直接返回成功响应。

商户在进行状态检查和业务数据处理前,应使用数据锁进行并发控制,防止函数重入导致数据混乱。

签名中不应包含值为 null 的字段。

Webhook 参数

参数名验证类型长度详情
orderNoYstring64订单号
orderStatusYstring32订单状态 (COMPLETED, CLOSE, TIMEOUT, FAILED, DELAY_SUCCESS, DELAY_FAILED)
userIdYstring128用户ID (邮箱或手机号码)
merchantOrderNoYstring64用户交易编号
orderCurrencyYstring32订单的法定货币 (USD/EUR)
orderAmountYstring16订单金额 (分)
payCryptoRateYstring16支付加密货币汇率 (到USDT)
payFiatRateYstring16支付法定货币汇率 (到USD)
payCryptoCurrencyYstring32支付令牌
payCryptoVolumeYstring16令牌支付金额
payCryptoNetworkYstring32令牌支付网络
addressNstring256ACH地址 (用户将加密货币发送到此地址)
hxAddressYstring256哈希值
signNstring256签名
failReasonYstring256失败原因
feeYstring16手续费
customParamNobject512可定制字段

Webhook 示例

{
    "payCryptoCurrency": "ACH",
    "vCryptoNetwork": "BTC",
    "payCryptoRate": "123.4",
    "payCryptoVolume": "123",
    "payFaitRate": "1.23",
    "address": "adfdsafdsafdsafdsafadsfdsaf",
    "customParam": "customParam",
    "failReason": "crypto or network inconsistent",
    "fee": "1.1",
    "hxAddress": "aweweas",
    "merchantOrderNo": "9999999999",
    "orderAmount": "12",
    "orderCurrency": "EUR",
    "orderNo": "3002171775252640030",
    "orderStatus": "CLOSE",
    "sign": "B42DA144E9BD180F83E8E7EBD2A9F933798616819FF1BBD4C84081073ECB85BD67F850D25303C5FD9CDF17FE82DD4DD0AAA44F9B7D6121EF17DE3428EFF1C",
    "userId": "[email protected]"
}

订单状态说明

参数名详情
COMPLETED支付成功
CLOSE支付关闭
TIMEOUT支付取消
FAILED支付失败
DELAY_SUCCESS订单超时,支付成功
DELAY_FAILED订单超时,支付失败