第三方回调机制
PayAll 平台会在特定事件发生时,主动向商户配置的回调地址推送通知。
回调配置
在申请商户账号时,需要提供回调地址(callback_url)。PayAll 会在以下场景触发回调:
开卡成功/失败
卡片充值成功/失败
卡片提现成功/失败
卡片交易
其他业务状态变更
回调请求格式
PayAll 会向商户的回调地址发送 POST 请求,请求格式如下:
请求头:
Content-Type: application/jsonX-Event-Type: {事件类型}- 标识回调事件类型x-api-key: {API密钥}- 仅对特定商户(如 cat_wallet)需要
请求体: 回调数据以 JSON 格式发送,包含以下字段:
event_type
string
是
事件类型(见下方事件类型列表)
user_id
integer
是
PayAll 用户ID
timestamp
integer
是
时间戳(秒级)
order_id
string
否
订单ID(第三方订单号)
user_name
string
否
第三方用户名
amount
string
否
金额(根据事件类型可能包含)
currency
string
否
币种(根据事件类型可能包含)
card_binding_id
integer
否
卡片绑定ID(卡片相关事件包含)
sign
string
否
RSA 签名(如果商户配置了私钥)
回调数据示例:
支持的事件类型
PayAll 支持以下事件类型的回调通知:
开卡相关
card.issue.success- 开卡成功
卡片充值相关
card.topup.success- 卡片充值成功
回调签名验证
如果商户在配置时提供了私钥,PayAll 会对回调数据进行签名。商户可以使用公钥验证签名:
从回调数据中提取
sign字段(Base64 编码的签名)将除
sign外的所有字段按字典序排序将排序后的数据转换为 JSON 字符串(使用紧凑格式,无空格)
使用 PayAll 提供的公钥验证签名(SHA256withRSA)
签名验证示例(伪代码):
响应要求
商户收到回调后,应该:
验证签名(如果回调数据包含
sign字段)验证时间戳(建议验证
timestamp是否在合理范围内,防止重放攻击)处理业务逻辑(根据
event_type和order_id更新本地订单状态)返回响应:
成功处理:返回 HTTP 200 状态码,响应体可以是任意内容(建议返回 JSON 格式的成功响应)
处理失败:返回 HTTP 4xx/5xx 状态码,PayAll 可能会重试
成功响应示例:
重试机制
PayAll 会在回调失败时进行重试
重试间隔和次数由 PayAll 内部策略决定
商户应该保证回调接口的幂等性(相同
order_id的重复回调应该返回相同结果)建议商户记录所有回调请求,避免重复处理
安全建议
使用 HTTPS:回调地址必须使用 HTTPS 协议
验证签名:始终验证回调数据的签名,确保数据来源可靠
验证时间戳:检查
timestamp字段,拒绝过期的回调请求幂等性处理:根据
order_id实现幂等性,避免重复处理日志记录:记录所有回调请求,便于问题排查
回调调试
商户可以通过以下方式调试回调:
使用
/getRecordDetail接口查询订单状态,验证回调是否触发检查回调记录(如果 PayAll 提供回调记录查询接口)
查看商户后台的回调日志
Last updated