也遇到这个情况了,楼主怎么解决的?求分享
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[代码][代码];[代码][代码]}[代码]
2019-05-16