The given payload is invalid.?
EasyWeChat\Kernel\Exceptions\DecryptException
The given payload is invalid.
$user_info = $mp->encryptor->decryptData($session_key, $request->iv, $request->encryptedData);
EasyWechat 小程序解密消息 有时会出现The given payload is invalid. 数据无效,请教有没有什么解决办法?
关于 LearnKu
高认可度评论:
我也遇到同样问题,最后解决方法是保证获取用来生成session_key的code在获取encryptedData和iv之前就可以
注意检查是不是session_key不一致或者过期导致的
@mojiajuzi 这种情况是偶尔出现的
兄弟解决了吗?
@南冥之鱼three 没有呢
兄弟解决了吗?我也出现这个问题
@richWang 这边已经处理完了这个问题,关键问题还是
code的原因 小程序-用户信息,处理方式就是:
session_key,然后建立session_key与用户登录的状态变量给前端。session_key进行解密code记得同步更新session_key@mojiajuzi 我在测试中也遇到这个问题;
我认为可能不是session_key时效的问题。如果是时效的问题,应该换成下面的代码也会报错才对,但是实际上,替换之后,并没有报错
@Nixus 我这边处理后,再也没有出现这个问题
@mojiajuzi 请问怎么处理的?这个错误,好奇怪啊
@Nixus 之前的回答有
请问解决了吗 我目前也是这个问题
@mojiajuzi 你好 我目前也是这个问题 我做的操作是 第一次登陆过去code和session_key 然后缓存code和session_key在缓存有效期以内都是用这个seesion_key 去解密用户数据 。但是 现在是直接报 the given payload is invalid 我用的package是 easywechat 请问你遇到过这种问题吗
@CHERISHNA
文档的内容如下:
@mojiajuzi 好的 多谢 现在明白了
我也出现了这个情况,检查后发现是 $decrypted 为空的原因
$decrypted = AES::decrypt( base64_decode($encrypted, false), base64_decode($sessionKey, false), base64_decode($iv, false) );
easywechat包,同样问题
我也是这个问题 大佬们有方法吗
我在这里说下吧,微信小程序验证用户登录态的那个接口是不精确的,无法100%的判断用户登录态是否过期,所以后端会偶然出现解密失败,现在我这里是让前端写出死循环来规避这个问题,如果失败,前端一直重试。
将这user_session_info 缓存起来就可以了,不用每次都获取,而且一直用 wx.login 获取的code
我现在也是这个问题。一套流程下来,没有任何停顿,就是解不出用户数据。有不同的报错,我知道有成功过,但是我没看见过成功的数据,随即的成功率。
这个问题解决了吗请问,我也是出了这个问题
@DemonLi 方便贴一下代码吗?
`
`
是这样的 前端先拿到了code,然后通过getPhoneNum 那个方法拿到了 iv 和 enctData ,然后 把这三一起传给我了 ,然后 我拿code换到了sessionkey 然后用easyWeChat 插件去解析数据 就报The given payload is invalid. @mojiajuzi 麻烦了
@DemonLi
建议检查一下前端是在什么时候调用login方法获取code的
:joy:解决了,把一个接口分开调用了,好了,可以解析了,看来不能偷懒啊@mojiajuzi 谢谢
原因已经彻底排查出来
【小程序】账户和【微信开放平台】需要是同一主体
并且还需要去【微信开放平台后台】注册账户并且到【微信开放平台后台】后台绑定【小程序】的appid
微信开放平台网址:open.weixin.qq.com/
其中,小程序的appid使用微信公众平台的小程序登录账户获取。贴上全文代码
问题解决了。绑定手机之前先利用checksession 检查 是否过期。过期重新获取。没过期。使用之前缓存 的session_key
@DemonLi 我也遇到同样问题,大佬你解决了吗
我也遇到同样问题,最后解决方法是保证获取用来生成session_key的code在获取encryptedData和iv之前就可以
我也试了大半天,妈的是前端先执行getPhoneNumber,再执行wx.login()导致的。。。。解决方案通俗一点,先让前端执行wx.login()拿到code了,再执行getPhoneNumber拿encryptedData和iv
developers.weixin.qq.com/miniprogr...