Webhook
回调接入准备说明
商户处理WaaS回调请求的技术规范
1. WaaS回调处理流程
回调请求处理流程:
⚠️ 这是WaaS系统向商户回调URL发起的请求流程
商户需要按照以下流程处理从WaaS收到的回调请求
回调数据加密
1
WaaS准备JSON业务数据
2
WaaS使用商户私钥RSA加密
3
Base64编码用于传输
回调请求验证
A
WaaS在请求头携带X-API-KEY
B
商户校验API KEY有效性
C
验证失败返回401 Unauthorized
商户解密回调数据
α
从原始输入流读取回调数据
β
Base64解码得到加密数据
γ
商户使用公钥RSA解密
WaaS回调请求示例:
// WaaS发送到商户回调URL的请求
POST /your-callback-endpoint HTTP/1.1
Host: your-merchant-domain.com
Content-Type: application/x-www-form-urlencoded
X-API-KEY: merchant_api_key_12345
ew0KICAib3JkZXJJZCI6ICIxMjM0NTY3ODk…
2. 商户处理回调的要点
回调API Key验证:
处理来自WaaS的回调请求时:
- 从HTTP头
X-API-KEY
获取WaaS提供的密钥 - 验证密钥是否有效且在有效期内
- 验证失败返回
401 Unauthorized
注:该API Key与商户调用WaaS API时使用的密钥不同
回调数据解密规范:
处理WaaS回调数据需注意:
- 必须使用
HttpServletRequest
原始输入流读取 - Base64解码获取加密字节数据
- 使用商户私钥进行RSA解密
常见错误:误用request.getParameter(“data”)
会返回null
回调处理说明:
WaaS系统向商户配置的回调URL发送事件通知,商户需要正确处理这些回调请求。 加解密流程与商户调用WaaS API时相同,主要区别在于回调数据读取方式。
3. 回调幂等性处理
回调幂等性要求:
WaaS可能重发相同事件回调
商户需保证相同事件只处理一次
回调类型 | 幂等键组成 | 说明 |
---|---|---|
存款回调 | (txid, chain, symbol, toAddress)组合哈希 | 解决包装合约重复存款问题 |
提款回调 | txid | WaaS控制的全局唯一交易ID |
其他回调 | (type, trackingId, callBackId…) | 所有回调类型均需实现幂等 |
WaaS提示:切勿使用每次不同的requestUUID作为幂等键
回调处理原则:
- 存储已处理回调事件的唯一标识
- 对重复回调直接返回成功状态(不重复业务处理)
- 当回调处理失败时(仅当errCode=0时,WaaS才认为回调成功),WaaS将重试回调