Skip to content

异步通知

支持异步通知的接口清单

当在以下接口请求参数中传入notifyUrl后,当交易完成后会发出异步通知。

接口名称说明
basicexpay.trade.precreate交易预创建
basicexpay.trade.cashier收银台支付
basicexpay.trade.agentpay代付

通知安全

  1. IP 白名单: 为了保证系统交易安全,我们建议您将我们的通知服务外网 IP 设置为白名单,当接收到我们发送过来的通知回调时,请验证发送方的外网 IP,通知服务外网 IP 请联系我们的客服团队获取;

  2. 验证签名: 我们发送的通知回调同样具有sign参数,请务必参考 安全要求 -> 签名方式安全要求 -> 报文签名中的方式对通知回调内容进行签名,并验证签名是否有效;

  3. 校验数据: 在验证完成签名后,请严格验证该通知数据中的 merOrderNo 是否为商家系统中创建的订单号。如果验证不通过,则表明本次通知是异常通知,请务必忽略。

签名验证

例如,商户发起一笔支付交易并设置的通知地址为 https://api.xx.com/receive_notify.htm,对应接收到通知的示例如下:

ts
{
  "code": "0000",
  "data": "{\"attach\":\"\",\"currency\":\"USDT\",\"merOrderNo\":\"Mt72csbcTW5x8ypD\",\"orderNo\":\"40620230325105240025986621030533\",\"status\":2,\"totalAmount\":11.75}",
  "message": "交易成功",
  "method": "basicexpay.trade.notify",
  "nonce": "ziOWAlDvaQCMegoy",
  "sign": "42FEB0B73D3F79F0C8E056AEF88F5E3FA655D2AEC2AB8D561FB9EDBE85A9A872F49428BD3B327A8C3629929629D7CFF8B59736911894419A13B8970482F4E10C",
  "signType": "HmacSHA512",
  "timestamp": "20230325130255"
}

第一步: 在通知返回参数列表中,除去 sign 参数外,通知返回的参数均为待验签的参数;

第二步: 将剩下参数按字典排序并排列为URL键值对格式,组成字符串,得到待签名字符串:

ts
{
code=0000&data={"attach":"","currency":"USDT","merOrderNo":"Mt72csbcTW5x8ypD","orderNo":"40620230325105240025986621030533","status":2,"totalAmount":11.75}&message=交易成功&method=basicexpay.trade.notify&nonce=ziOWAlDvaQCMegoy&signType=HmacSHA512&timestamp=20230325130255
}

第三步: 在待签名字符串最后拼接上 key 参数,key 值则为 apikey 密钥,得到待签名字符串 signTemp,再对 signTemp 使用 secretkey 密钥进行 HMAC-SHA512 运算,再将得到的字符串转换为大写,得到最终签名值 signValue:

ts
{
code=0000&data={"attach":"","currency":"USDT","merOrderNo":"Mt72csbcTW5x8ypD","orderNo":"40620230325105240025986621030533","status":2,"totalAmount":11.75}&message=交易成功&method=basicexpay.trade.notify&nonce=ziOWAlDvaQCMegoy&signType=HmacSHA512&timestamp=20230325130255&key=xxxxxxxxxxx
}

第四步: 验证签名是否正确

通知内容

  1. 通知回调的公共参数与: 公共参数 -> 应答参数说明 一致
  2. 通知回调的method参数为: basicexpay.trade.notify
  3. 支付交易接口交易完成通知回调应答参数与: 交易报文 -> 交易结果查询应答参数一致
  4. 代付交易接口交易完成通知回调应答参数与: 交易报文 -> 代付结果查询应答参数一致

通知回复

商户接收到通知回调并处理完成后,请直接返回success字符串代表接收成功,若系统收到不是“success”,将以一定的策略重新尝试通知,商户侧需做好幂等处理。 当币趣收到的应答不是success,币趣会认为通知失败,会通过一定的策略定期重新发起通知。通知的间隔频率为: 15s, 15s, 30s, 180s, 300s, 600s, 1200s, 1800s, 3600s