docs(douyin-mashida): 补平台真实推送的实测形态

订阅生效后一笔真实付款的推送原文(来源 IP、耗时、字段值):
- p_id/s_ids 是 19 位裸数字,pay_time 是秒级 —— 与 §4.1 精度修复、§4.8 双形态解析相互印证
- 记录文档未覆盖的 pay_type=8,代码不依赖该字段
- 端到端:付款 12:55:05 → 推送 12:55:11 → 建单+发券+syncV2 完成 12:55:12
This commit is contained in:
yml2213
2026-10-09 12:57:09 +08:00
parent 5c13d9221f
commit 3505ca4e05
2 changed files with 17 additions and 2 deletions
+1
View File
@@ -251,6 +251,7 @@ git add apps/backend/src/app.ts \
| 19 位订单号精度 | ✅ `6930310175251856483` 精确保留 |
| `coupons.syncV2` 同步到真平台 | ✅ `sync_status=success` |
| 兑换页状态 | ✅ `redeemable`,展示真实商品名与真实支付时间 |
| **平台自动推送**(订阅后真单付款) | ✅ 6 秒到达,来源 IP `118.31.56.230`,端到端约 7 秒完成建单+发券+同步 |
| `pay_time` 字符串形态 | ⚠️ 实测发现并已修复(见 07 §4.8) |
| `messagetest` 自测入口 | ⚠️ 始终 `20006 data参数内容解析异常`,未探明其 data 要求;不影响真实链路 |
@@ -151,13 +151,27 @@ applyRawBigIntegerOverrides(parsed, rawText) // p_id / order_id / s_id / s_ids
不是文档示例里的 `77977`;`sku_order_list[].order_id` 是**字符串**,本例与父单号相同。
联调时以真实响应为准。
### 4.10 平台推送是**订阅制**(不配就永远收不到)
### 4.10 平台真实推送的形态(实测抓到的原文)
订阅配好后,一笔真实付款的推送**约 6 秒**到达,来源 IP 是平台服务器(`118.31.56.230`),
body 原文(注意 `p_id`/`s_ids` 是**裸数字**、`pay_time` 是**秒级**):
```json
{"biz":11,"order_status":2,"order_type":5,"p_id":6930292726686514275,"pay_amount":100,
"pay_time":1791521705,"pay_type":8,"s_ids":[6930292726686514275],"shop_id":305760014}
```
- `pay_type=8` **文档里没有**(文档只列了 0/1/2),代码不依赖该字段,仅记录备查;
- `p_id` 是 19 位裸数字 → 正好验证了 §4.1 的精度修复(落库/回执全程精确);
- 端到端耗时:付款 12:55:05 → 推送 12:55:11 → 建单+发券+`syncV2` 完成 12:55:12。
### 4.11 平台推送是**订阅制**(不配就永远收不到)
填好 `uid`/`secret` 只代表我们能调平台,平台**不会**自动推消息过来:
必须调「消息设置」`message.config` 配置 `message_url` + `topics` + `status=1`。
而且**不补推**订阅之前的历史订单。详见 [08-公网联调.md](08-公网联调.md) §2。
### 4.11 退款/取消消息文档没列字段
### 4.12 退款/取消消息文档没列字段
`refund_*`、`trade_TradeCanceled`、`trade_TradeSuccess` 这几条文档里 `props` 是空的(很可能只是文档缺失)。
代码按「有 `p_id` 就作废券、没有就留痕等人工」处理 —— **不抛错**,避免平台无意义重推。