回调通知概述
平台在订单、团组、会员、评价等业务发生约定变更时,向订阅的接收方发起 HTTP POST。可选择外部地址或信多帮云应用;两种方式的验签与回执要求不同。外部地址成功返回 HTTP 200,云应用还需返回匹配事件编号的 SDK 接收回执。
配置路径:后台 → 设置 → 开放平台 → 订阅事件 → 添加订阅。各事件字段与示例见本分类下对应文档。
推送到信多帮云应用
后台订阅支持选择「云应用」,自动关联本商家的正式版本,无需填写地址或复制密钥。私有应用保持原有员工登录保护;事件通过平台专用通道投递,不经过浏览器登录。
创建应用后即可先保存订阅,无需先上线;未上线时显示“等待应用上线”。应用按 接收订阅事件 实现服务端接收和回执并正式上线后,自动接收新事件。真实事件只发往当前正式版,本地和预览使用模拟事件测试;上线前的事件不会自动补发。以下外部地址、push_secret 验签约定仍适用于「外部地址」接入,云应用接入使用 SDK 的事件验签方法。
以下章节适用于外部地址订阅;云应用的路由、SDK 验签与 JSON 回执见上方专页。
回调地址须使用 HTTPS
回调载荷中常包含订单号、会员手机号、营员证件信息等业务数据。合作伙伴用于接收推送的 URL 须为 https:// 地址,即在公网侧启用 TLS(俗称 SSL)加密传输。
| 要求 | 说明 |
|---|---|
| 协议 | 使用 https://,勿使用明文 http:// |
| 证书 | 由受信任 CA 签发的有效证书;生产环境避免自签名证书 |
| 协议版本 | 建议 TLS 1.2 及以上 |
| 可达性 | URL 须公网可访问,且证书域名与回调主机名一致 |
明文 HTTP 下,推送内容可被中间环节窃听或篡改。回调接收地址必须使用 HTTPS,与开放平台主动接口的安全基线一致。
接收侧基本约定
- 以服务端对服务端方式接收;请保证服务稳定、可重试。
- 同一业务可能因多次变更被推送多次,请按订单号、会员 ID、事件类型等做幂等处理。
- 部分事件以表单字段
request_data(JSON 字符串)传递正文,部分为裸 JSON,以各事件文档为准。 - 处理失败时平台可能重试;成功务必返回 HTTP 200。
- appid 为
V2版本 的接入方,推送请求会附带签名头(X-Timestamp/X-Nonce/X-Signature),请按下文《推送签名校验(V2 接入)》验签后再处理。
推送签名校验(V2 接入)
针对 appid 为 V2 版本 的接入方,平台在推送时会为请求附加签名头,供接收方校验请求来源与完整性、防御重放。其余 appid 的推送维持原样,不带以下签名头。
推送除现有表单字段 type / exchange_type / request_data(各事件字段以对应文档为准)外,新增以下 HTTP Header:
| Header | 说明 |
|---|---|
| X-Timestamp | 推送发起时的 Unix 秒级时间戳 |
| X-Nonce | 随机字符串(长度 ≥ 16 位,每次推送唯一) |
| X-Signature | 签名值,算法见下 |
签名算法
待签名串按如下顺序拼接(\n 为换行符):
待签名串 = timestamp + "\n" + nonce + "\n" + body
timestamp:与X-Timestamp完全一致nonce:与X-Nonce完全一致body:实际发出的 POST 请求体原文
签名值为以待签名串、推送密钥 push_secret(平台为接入方分配的接入密钥,请妥善保管)计算 HMAC-SHA256 后,取 hex 小写 结果:
X-Signature = lowercase( hex( HMAC-SHA256( push_secret, 待签名串 ) ) )
- 签名针对的是 原始 body 文本,不是解析后的对象;接收方务必用收到的原始请求体参与验签,任何字段顺序、空格、转义改动都会导致签名不一致。
X-Timestamp、X-Nonce必须与实际参与签名的值一致。
示例
假设:
push_secret = YOUR_PUSH_SECRET
X-Timestamp = 1770000000
X-Nonce = 3f9c1a7b2e6d4058
body = type=user_info&exchange_type=2&request_data=%7B%22uid%22%3A10086%7D
则待签名串为(三行,行间以换行符分隔):
1770000000
3f9c1a7b2e6d4058
type=user_info&exchange_type=2&request_data=%7B%22uid%22%3A10086%7D
对其以 push_secret 计算 HMAC-SHA256 并取 hex 小写,即得 X-Signature。
接收方验证与防重放
收到推送后建议按以下顺序校验,任一不通过则拒绝(返回非 200):
- 验签:用保存的
push_secret,按上文算法对X-Timestamp、X-Nonce与原始 body 重新计算签名,与X-Signature比对,不一致则拒绝。 - 校验时间戳:
X-Timestamp与接收方服务器当前时间偏差超过 5 分钟 则拒绝。 - 防重放(可选):缓存已处理的
X-Nonce(如 Redis,TTL 10 分钟),重复出现则拒绝。
校验通过后再解析 request_data 并处理业务,成功返回 HTTP 200。
事件一览
| 文档 | 说明 |
|---|---|
团组变更通知 | 分团、分组等团组相关变更 |
订单变更通知 | 支付、退款、换营、营员变更等 |
拼团结束变更通知 | 拼团成功或失败 |
退款发起回调通知 | 退款单发起时推送 |
营员评价通知 | 营员评价相关推送 |
会员变更通知 | 会员创建与资料变更 |