A-A+
记录小程序-微信支付分-前后端交互导致的bug
场景:
客户使用小程序扫码开启订单,使用的是微信支付分。
系统流程:
1、客户扫码,小程序前端向后端发起创建微信支付分请求;
2、后端接到请求后,向微信发起请求创建微信支付分订单请求,获得‘微信支付分验证信息’,并生成一个本系统‘预订单编号’一起返回给前端;(此时微信分订单状态为created未开始,本系统订单未创建)
3、小程序前端拿着‘微信支付分验证信息’调用微信用户授权组件,用户授权成功,则微信支付分订单状态从created变为doing进行中。再拿着‘预订单编号’向后端请求开始订单。
4、后端收到带‘预订单编号’的开始订单请求后,开始进行验证检测,检测通过就创建订单。
BUG产生流程:
客户多次扫码,在微信支付分授权页面手机操作返回上一页,然后继续进入授权页,导致c端向我请求创建微信支付分订单接口假定3次,时间先后分别是a微信分订单、b微信分订单、c微信分订单,
对应的,我分别返回了A、B、C三组微信分授权数据和3个订单编号01、02、03。
C端拿着微信分授权数据A向微信请求,微信分订单开始了。却拿着订单编号03向后端申请订单开始。
正确的应该是A--01或 B--02 或 C--03,现在却是C--01或A--03。导致小程序订单和微信支付分的订单并不是同一个。由此产生bug。
解决办法:
前端要进行匹配验证。