一、问题描述
微信小游戏的内购支付,接入的是米大师支付。先简单介绍下通用逻辑:
1)、用户点击游戏内下单
2)、客户端构造订单物品等参数并发给服务端
3)、服务端接收后,生成唯一订单号等内部逻辑处理后,返回客户端下单需要的参数
4)、客户端调用微信下单接口,wx.requestMidasPayment(Object object) | 微信开放文档,并将结果上报给服务端
5)、服务端根据客户端的支付上报结果,分时轮询对应订单的用户余额
6)、对用户余额进行扣款,并修改对应订单状态
7)、通知游戏服务端订单状态,并发货给用户
初看,逻辑很清晰,没啥问题,但是第4步经常会返回错误的结果(客户端),比如没有返回(比较多出现)或者说用户支付了但返回支付失败(相对比较少)。这样就导致部分用户支付后没有得到应有的物品,掉单。

二、旧解决方案
1)通过上面问题描述,知道靠客户端返回的结果不可靠,那为了用户不掉单,就只能自己想办法了,曲线救国。首先就是服务端不依赖于客户端的返回结果才去请求验证用户余额,或者说没收到返回的时候依然去请求验证用户余额(失败的如果压力不大,订单少也可以请求验证,成)。这样就保证了订单都有轮询到去验证。这样虽然解决了掉单问题,但是衍生出了新的麻烦。<

最低0.47元/天 解锁文章
313

被折叠的 条评论
为什么被折叠?



