主题
登录、支付与订单
登录后仍是未登录
常见原因:wx.login 得到的 code 被重复使用、服务端换取失败、客户端没有保存新会话,或并发请求在刷新 token 前已发出。
处理原则:
wx.login的 code 仅用于服务端换取身份,不作为业务 token。- 登录或刷新过程加单例锁,其他请求等待结果,避免并发重复登录。
- 服务端返回未登录时清除本地会话,重新登录后只重放幂等请求。
- 不调用
wx.getUserInfo作为登录前置条件;头像、昵称和手机号由独立的用户操作触发。
支付成功后订单未更新
wx.requestPayment 的成功回调仅表示客户端调起流程成功或用户完成操作,订单最终状态必须由服务端以微信支付回调和主动查单为准。
js
const payment = await request({ url: '/orders/123/payment', method: 'POST' })
await wx.requestPayment(payment)
// 轮询或重新请求业务订单状态,不直接将客户端回调写成“已支付”。
const order = await request({ url: '/orders/123' })订单创建、支付通知和发货必须在服务端做幂等控制;客户端金额和订单状态均不可信。
