Files
MatchMaster/docs/pyramid-payment-flow.md
T
2026-10-12 15:00:49 +08:00

2.3 KiB
Raw Blame History

金字塔支付流程(2026-09-29)

  • 每次点击购买生成新的 requestId,通过 Utils.buyProp 调用已有微信签名接口创建新订单。不恢复或重用未付款订单;同一次网络请求重试仍保持幂等。
  • 支付窗口未返回时由 busy 防止连点。SDK fail 只显示“取消充值”,结束按钮等待,不发起支付查询、不写入待确认订单。
  • 只有 SDK success 才保存 confirmingOrder,然后通过已有 /pyramid/api 的 query 分发确认结果。确认期间禁止再次购买和抽奖。取消或关闭界面后不恢复未付款订单;重启只恢复已收到 success 的确认任务。
  • 查询确认 succeeded 或 closed 后清理 confirmingOrder,刷新活动。支付结果仍待确认或网络异常时不把订单当成失败,也不重复购买。
  • 活动请求复用 Utils.POST 的可选 JSON 模式以保留库存等嵌套对象。原调用默认仍为表单模式,buyProp 原有参数及通行证 passEnd 保持兼容。
  • 后端未付款订单不再设置购买锁,旧 pendingOrder 也不影响按钮和抽奖。新客户端不根据服务端未付款记录启动查询。
  • 支付通知按订单号去重,机会绑定下单期次、层数。多笔延迟成功通知在同层可累计次数;升级后剩余次数作废,已离开层数的延迟付款不增加新层机会。有次数时后端禁止创建新订单。

部署需要同时更新前端和独立 server 仓库的 pyramid/api;没有新增云函数。此次仅修改本地文件,没有发布到 Laf。SDK success 后若支付成功通知始终未到达,当前实现仍无法主动向渠道查单;这是原有渠道接入限制,不影响正常取消后的再次购买。

验证包括取消后再次支付、成功后开始查询、防连点、重启恢复、账号切换隔离、公共 POST 的 JSON/表单兼容、通行证支付参数兼容,以及后端重复通知、延迟通知、不同层数和活动结束处理。

本次验证:前端金字塔与通行证测试 37 项通过,独立后端金字塔测试 31 项通过;类型检查仍为基线 18 项问题,无新增。额外运行商城和复活礼包测试有 3 项既有失败(商城新旧场景位置各 1 项、复活礼包未付款确认 1 项),使用修改前 Utils 复测仍失败,本次未改动相关实现。