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;} |
