Files
glt-taro/.workbuddy/memory/2026-04-25.md
赵忠林 94e1e05fdf fix(payment): 修复微信支付时openid绑定问题
- 新增确保支付前openid正确绑定的方法,解决支付账号不一致问题
- 在创建微信支付订单前强制刷新openid,防止旧微信账号导致支付失败
- 在自动登录后补充openid绑定步骤,确保支付所需的openid存在
- 设计为非阻塞流程,避免网络异常导致支付阻塞
- 仅针对微信支付触发,其他支付方式不受影响
2026-04-25 12:59:59 +08:00

1016 B
Raw Blame History

2026-04-25 工作日志

微信支付"下单账号与支付账号不一致"问题修复

问题:用户支付时微信提示「下单账号与支付账号不一致,请核实后再支付」

根因:下单时后端使用的 openid 与当前实际支付的微信用户 openid 不匹配。前端在创建订单前没有刷新 openid依赖登录/注册时的旧绑定。

修改文件

  1. src/utils/payment.ts — 新增 ensureOpenIdBeforePay() 方法,在 pay() 方法中、微信支付创建订单前强制调用 Taro.login() + getWxOpenId() 刷新绑定当前用户的 openid
  2. src/hooks/useUser.ts — 在 autoLoginByOpenId() 登录成功后补充 openid 绑定逻辑(之前只调了 loginByOpenId 没有调 getWxOpenId

方案特点

  • 非阻塞设计openid 刷新失败不阻止支付(网络波动时兼容)
  • 仅微信支付触发:余额支付/支付宝不受影响
  • 兼容已有 openid 的场景:即使已有 openid 也会刷新(防止切号)