我也遇到过这样的情况
【求助】小程序解密数据有时会失败准确来讲不是有时,是隔断时间后必然失败(貌似不是因为Sessionkey没更新,请看下文) 代码流程是这样的: 前端调用[代码]wx.checkSession()[代码]判断Sessionkey是否失效,如果失效就调用[代码]wx.login()[代码]然后把登录凭证code传给后端; 后端根据凭证获取新的Sessionkey,并存入数据库(更新数据库中的数据); 前端获取到加密数据后传给后端解密; 后端从数据库取到最新的Sessionkey,根据官方提供的方法解密。解密成功之后数据传给前端。 但非常奇怪的是第一天是可以正常解密的,第二天就会返回-41003的错误码: [代码]// 这是后端报错的代码片段[代码] [代码]$result=openssl_decrypt( $aesCipher, "AES-128-CBC", $aesKey, 1, $aesIV);[代码] [代码]$dataObj=json_decode( $result );[代码] [代码]if( $dataObj == NULL ) {[代码] [代码] return array([代码] [代码] 'code'=>-41003,[代码] [代码] 'msg'=>'aes 解密失败:'.$sessionKey[代码] [代码] ); }[代码]debug过程 尝试不调用[代码]wx.checkSession()[代码]而直接刷新Sessionkey,依然失败; 后端的Sessionkey的确是最新的,每次刷新后数据库都会更新; 解密时使用的Sessionkey和数据库最新数据对比一致; 比较奇怪的点 使用‘微信开发者工具’右上角的清缓存功能,点全部清除后,就能正确解密了。但是到了明天(或者过段时间)就又不行了。 求解问题出在哪里? --------------------------------- 图片补充: [图片] 上边那张是解密失败时给服务端传的参数,下面两张是解密成功时传的参数
2018-05-16