咨询下。有人消息推送的验证服务器(加密报文模式)通过了吗?
昨天发了贴,但是没看到加密的方案。我把我的贴一下,这几个函数都是官方的:
但是我无法验证通过,提示token不对。我核对了token是没错的
验证URL的部分,取信息就不贴了。
1 回复
public function VerifyURL( $sMsgSignature , $sTimeStamp , $sNonce , $sEchoStr , & $sReplyEchoStr ) { if ( strlen ( $this ->m_sEncodingAesKey) != 43) { return JOrigin_Wechat_Model_ErrorCode:: $IllegalAesKey ; } $pc =Mage::getModel( 'jorigin_wechat/prpcrypt' ); $pc ->setKey( $this ->m_sEncodingAesKey); //verify msg_signature $array = $this ->getSHA1( $this ->m_sToken, $sTimeStamp , $sNonce , $sEchoStr ); $ret = $array [0]; if ( $ret != 0) { return $ret ; } $signature = $array [1]; if ( $signature != $sMsgSignature ) { return JOrigin_Wechat_Model_ErrorCode:: $ValidateSignatureError ; } $result = $pc ->decrypt( $sEchoStr , $this ->m_sCorpid); if ( $result [0] != 0) { return $result [0]; } $sReplyEchoStr = $result [1]; return JOrigin_Wechat_Model_ErrorCode:: $OK ; } /** * 用SHA1算法生成安全签名 * [@param](/user/param) string $token 票据 * [@param](/user/param) string $timestamp 时间戳 * [@param](/user/param) string $nonce 随机字符串 * [@param](/user/param) string $encrypt 密文消息 */ public function getSHA1( $token , $timestamp , $nonce , $encrypt_msg ) { //排序 try { $array = array ( $encrypt_msg , $token , $timestamp , $nonce ); sort( $array , SORT_STRING); $str = implode( $array ); return array (JOrigin_Wechat_Model_ErrorCode:: $OK , sha1( $str )); } catch (Exception $e ) { print $e . "\n" ; return array (JOrigin_Wechat_Model_ErrorCode:: $ComputeSignatureError , null); } } |