官网,你真是个傻屌,能不能靠谱点
通过code、iv、encryptedData去获取用户信息,解密失败使用官方的demo进行测试了下,我采用的是PHP语言的demo,通过code先去获取session_key,然后再通过session_key去解密获取用户信息,一样的程序,然后测试的时候发现,大部分解析都是没问题的,但是偶尔会出现一次-41003错误,这个-41003我定位到的是解析失败 $dataObj == NULL的时候返回的,请问为什么? 若是程序有问题应该不是这周偶发性的呀!
2018-10-23我用java写的 第一次也会失败,然后用同样的session_key再次解密就会成功,为什么?
php版获取unionid,有时候解密失败环境:php5.5.7 问题: 有时候获取unionid失败,检查是openssl_decrypt解密后的数据为空 场景:假如我有一段时间没有操作微信开发者工具,第一次就会解密失败,后续都会成功 [代码]public[代码] [代码]function[代码] [代码]decryptUser([代码][代码]$sessionKey[代码][代码], [代码][代码]$encryptData[代码][代码], [代码][代码]$iv[代码][代码])[代码][代码]{[代码][代码] [代码][代码]$errorCode[代码] [代码]= [[代码][代码] [代码][代码]0=>[代码][代码]'ok'[代码][代码],[代码][代码] [代码][代码]41001=>[代码][代码]'encodingAesKey 非法'[代码][代码],[代码][代码] [代码][代码]41002=>[代码][代码]'IllegalIv'[代码][代码],[代码][代码] [代码][代码]41003=>[代码][代码]' aes 解密失败'[代码][代码],[代码][代码] [代码][代码]41004=>[代码][代码]'解密后得到的buffer非法'[代码][代码],[代码][代码] [代码][代码]41005=>[代码][代码]'base64解密失败'[代码][代码],[代码][代码] [代码][代码]41016=>[代码][代码]'base64解密失败'[代码][代码],[代码][代码] [代码][代码]];[代码][代码] [代码][代码]if[代码] [代码](mb_strlen([代码][代码]$sessionKey[代码][代码]) !== 24) {[代码][代码] [代码][代码]throw[代码] [代码]new[代码] [代码]\Exception([代码][代码]$errorCode[代码][代码][41001], 41001);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码](mb_strlen([代码][代码]$iv[代码][代码]) !== 24) {[代码][代码] [代码][代码]throw[代码] [代码]new[代码] [代码]\Exception([代码][代码]$errorCode[代码][代码][41002], 41002);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]$aesKey[代码] [代码]= [代码][代码]base64_decode[代码][代码]([代码][代码]$sessionKey[代码][代码]);[代码][代码] [代码][代码]$aesIv[代码] [代码]= [代码][代码]base64_decode[代码][代码]([代码][代码]$iv[代码][代码]);[代码][代码] [代码][代码]$aesCipher[代码] [代码]= [代码][代码]base64_decode[代码][代码]([代码][代码]$encryptData[代码][代码]);[代码][代码] [代码][代码]$result[代码] [代码]= openssl_decrypt([代码][代码]$aesCipher[代码][代码], [代码][代码]'AES-128-CBC'[代码][代码], [代码][代码]$aesKey[代码][代码], 1, [代码][代码]$aesIv[代码][代码]);[代码][代码] [代码][代码]var_dump([代码][代码]$result[代码][代码]);[代码][代码] [代码][代码]$decodeResult[代码] [代码]= json_decode([代码][代码]$result[代码][代码],true);[代码][代码] [代码][代码]var_dump([代码][代码]$decodeResult[代码][代码]);[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]empty[代码][代码]([代码][代码]$decodeResult[代码][代码])) {[代码][代码] [代码][代码]throw[代码] [代码]new[代码] [代码]\Exception([代码][代码]$errorCode[代码][代码][41003], 41003);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]$decodeResult[代码][代码][[代码][代码]'watermark'[代码][代码]][[代码][代码]'appid'[代码][代码]] !== [代码][代码]$this[代码][代码]->appid) {[代码][代码] [代码][代码]throw[代码] [代码]new[代码] [代码]\Exception([代码][代码]$errorCode[代码][代码][41003], 41003);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]return[代码] [代码]$decodeResult[代码][代码];[代码][代码]}[代码]
2018-10-23