微信开放平台推送获取component_verify_ticket

首先这是我的授权事件接受的URL控制器的代码

public function get_authorize_client(Request $request)
{   
    $timeStamp    =$request->timestamp;
    $nonce        =$request->nonce;
    $encrypt_type =$request->encrypt_type;
    $msg_sign     =$request->msg_signature;
    $encryptMsg   =file_get_contents('php://input');
    
    $result = (new WeixinService)->getVerify_Ticket($timeStamp,$nonce,$encrypt_type,$msg_sign,$encryptMsg);

    if($result) echo "success";
}

这里是解密的方法

//获取component_verify_ticket
public function getVerify_Ticket($timeStamp,$nonce,$encrypt_type,$msg_sign,$encryptMsg){

    $pc = new WXBizMsgCrypt(self::token, self::encodingAesKey, self::Corpid);

    $xml_tree = new DOMDocument();
    $xml_tree->loadXML($encryptMsg);
    $array_e = $xml_tree->getElementsByTagName('Encrypt');
    $encrypt = $array_e->item(0)->nodeValue;

    $format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>";

    $from_xml = sprintf($format, $encrypt);

    $msg = '';

    $errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg);

    if ($errCode == 0) {

        $xml = new DOMDocument();
        $xml->loadXML($msg);
        $array_e = $xml->getElementsByTagName('ComponentVerifyTicket');

        $component_verify_ticket = $array_e->item(0)->nodeValue;

        $wechat_verifyticket = array(
            'component_verify_ticket'    => $component_verify_ticket,
            'uptime'                    => time());

        Redis::set('wechat_verifyticket',$wechat_verifyticket);
        

        return true;
    }else{
        $wechat_verifyticket = array(
            'component_verify_ticket'    => $component_verify_ticket,
            'uptime'                    => time());

        Redis::set('wechat_verifyticket',$wechat_verifyticket);
        return false;
    }

}

我是把他写进redis 之后我用接口单独去获取这个数据,然而一直返回的是空
不知道是哪里出了差错。有没有方法模拟微信发送测试接口。请各位大神分析一下,给出宝贵的建议!

阅读 3.5k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题