fix: handle wechat message url verification

This commit is contained in:
kdletters
2026-06-01 22:52:51 +08:00
parent fc4b04a812
commit fae4db6a09
2 changed files with 74 additions and 25 deletions

View File

@@ -43,8 +43,8 @@ WECHAT_MINI_PROGRAM_VIRTUAL_PAYMENT_ENV=0
- 泥点属于微信虚拟支付代币coin`short_series_coin``buyQuantity` 必须使用当前泥点商品的 `points_amount`;例如 60 泥点商品应传 `buyQuantity: 60`
- 会员直购 `signData` 额外包含 `productId``goodsPrice``goodsPrice` 使用后端商品配置价,和微信后台道具价格校验保持一致。
- 微信小程序“开发者服务器接收消息推送”必须配置为安全模式,数据格式选 JSONURL 统一指向 `/api/profile/recharge/wechat/virtual-notify`
- `WECHAT_MINIPROGRAM_MESSAGE_TOKEN``WECHAT_MINIPROGRAM_MESSAGE_ENCODING_AES_KEY` 由环境变量注入;后端会先校验 `signature/msg_signature`,再`EncodingAESKey` 解密 `Encrypt`,然后按虚拟支付事件入账。
- 安全模式下,GET 验证会直接返回解密后的 `echostr`POST 推送会先解密再解析 `xpay_goods_deliver_notify` / `xpay_coin_pay_notify`
- `WECHAT_MINIPROGRAM_MESSAGE_TOKEN``WECHAT_MINIPROGRAM_MESSAGE_ENCODING_AES_KEY` 由环境变量注入;GET URL 验证按官方规则用 `Token/timestamp/nonce` 校验 `signature` 并原样返回 `echostr`POST 安全模式推送再校验 `msg_signature``EncodingAESKey` 解密 `Encrypt`,然后按虚拟支付事件入账。
- 安全模式下POST 推送会先解密再解析 `xpay_goods_deliver_notify` / `xpay_coin_pay_notify`;不要把 GET URL 验证里的 `echostr` 当密文解密
## 验收命令