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 ; } |
10 回复