场景:

点击进入小程序页面,页面有需要用户手机号,调起小程序自带的获取手机号,然后支付。

结果发现小程序获取手机号aes解密失败,报-41003。在微信开放社区找了找,发现很多人也都遇到这个问题了,官方推荐用新的获取手机号方式。发现新版本是从小程序基础库2.21.2开始,我们这边的基础库版本低不少,升级到2.21.2会影响85%的用户,影响范围广,放弃这个方案,考虑在老版本上解决。

经过查找资料、修改代码、打日志,发现跟sessionKey有关,偶现的第一次会解密失败,但重新获取sessionKey,并再次解密就没有问题了。sessionKey是之前登录小程序后保存到redis的。解决方案就是先用redis中的sessionKey解密,如果err不为nil就重新获取一次sessionKey,解密成功就把新的sessionKey放到redis,下次使用