1、问题的发现
用户在提现后发现迟迟未到账,于是核对了上传的银行卡号和流水中的银行卡号,发现两边对不上。于是我和后端同事开始debug。
双方一番寻找对质后,后端同事胜出,锅顺利来到我的身上,理由很简单,用了同样接口的app同事那边可以正常显示,且使用postman调用接口返回的数据也没有问题。
2、问题的解决
但问题来了,我在network中查看接口显示,从接口拿到的数据已然是错误的。然后我对比了显示正确的页面接口返回的数据,找到了这两个数据的区别--数据错误的接口返回的字段为number类型,正确的接口返回的字段为string类型。于是我提出了一个大胆的假设,让后端把返回的数据类型改成string。果然不出所料,问题解决了。
3、问题的原因
从上面的描述,我们可以很容易得出一个结论,数据在后端发出后,到我拿到手之前这中间给动过,而这中间能改动数据的,很明显,只有微信。
在对比了两个数据之后,得出一个结论,超过14位的number类型数据,会被取整:
1234567890123456789会被处理为1234567890123460000。
上网搜索一番,发现也有类似情况:
微信小程序 wx.request 后端返回数据超出类型安全范围解决办法
这位博主记录了两种解决方法,我这边后端同事很配合,改了数据类型,第二种方式我就偷懒不测试了,有遇到相同问题的小伙伴可以试试。