异步通知
支持异步通知的接口清单
当在以下接口请求参数中传入notifyUrl后,当交易完成后会发出异步通知。
接口名称 | 说明 |
---|---|
basicexpay.trade.precreate | 交易预创建 |
basicexpay.trade.cashier | 收银台支付 |
basicexpay.trade.agentpay | 代付 |
通知安全
IP 白名单: 为了保证系统交易安全,我们建议您将我们的通知服务外网 IP 设置为白名单,当接收到我们发送过来的通知回调时,请验证发送方的外网 IP,通知服务外网 IP 请联系我们的客服团队获取;
验证签名: 我们发送的通知回调同样具有sign参数,请务必参考 安全要求 -> 签名方式及安全要求 -> 报文签名中的方式对通知回调内容进行签名,并验证签名是否有效;
校验数据: 在验证完成签名后,请严格验证该通知数据中的 merOrderNo 是否为商家系统中创建的订单号。如果验证不通过,则表明本次通知是异常通知,请务必忽略。
签名验证
例如,商户发起一笔支付交易并设置的通知地址为 https://api.xx.com/receive_notify.htm,对应接收到通知的示例如下:
{
"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键值对格式,组成字符串,得到待签名字符串:
{
code=0000&data={"attach":"","currency":"USDT","merOrderNo":"Mt72csbcTW5x8ypD","orderNo":"40620230325105240025986621030533","status":2,"totalAmount":11.75}&message=交易成功&method=basicexpay.trade.notify&nonce=ziOWAlDvaQCMegoy&signType=HmacSHA512×tamp=20230325130255
}
第三步: 在待签名字符串最后拼接上 key 参数,key 值则为 apikey 密钥,得到待签名字符串 signTemp,再对 signTemp 使用 secretkey 密钥进行 HMAC-SHA512 运算,再将得到的字符串转换为大写,得到最终签名值 signValue:
{
code=0000&data={"attach":"","currency":"USDT","merOrderNo":"Mt72csbcTW5x8ypD","orderNo":"40620230325105240025986621030533","status":2,"totalAmount":11.75}&message=交易成功&method=basicexpay.trade.notify&nonce=ziOWAlDvaQCMegoy&signType=HmacSHA512×tamp=20230325130255&key=xxxxxxxxxxx
}
第四步: 验证签名是否正确
通知内容
- 通知回调的公共参数与: 公共参数 -> 应答参数说明 一致
- 通知回调的method参数为: basicexpay.trade.notify
- 支付交易接口交易完成通知回调应答参数与: 交易报文 -> 交易结果查询应答参数一致
- 代付交易接口交易完成通知回调应答参数与: 交易报文 -> 代付结果查询应答参数一致
通知回复
商户接收到通知回调并处理完成后,请直接返回success
字符串代表接收成功,若系统收到不是“success”,将以一定的策略重新尝试通知,商户侧需做好幂等处理。 当币趣收到的应答不是success
,币趣会认为通知失败,会通过一定的策略定期重新发起通知。通知的间隔频率为: 15s, 15s, 30s, 180s, 300s, 600s, 1200s, 1800s, 3600s