首先这是我的授权事件接受的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 之后我用接口单独去获取这个数据,然而一直返回的是空
不知道是哪里出了差错。有没有方法模拟微信发送测试接口。请各位大神分析一下,给出宝贵的建议!