- 申请云主机、域名,配置PHP运行环境,公网可顺利访问
- 申请微信公众号(本文指订阅号)
- 登录公众平台
- 基本配置

- 下载官方范例
- 修改代码
<?php include_once "WXBizMsgCrypt.php"; $encodingAesKey = "在公众号设置中指定"; $token = "在公众号设置中指定"; define('TOKEN', $token); $AppId="在公众号设置中指定"; header("Content-Type:text/html; charset=utf-8"); if(is_array($_GET)&&count($_GET)>0){ $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; if ($_GET['echostr']){ $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ echo($_GET['echostr']); }else{ print("ERR: " . $errCode . "\n\n"); } exit; } $sReqMsgSig = $sVerifyMsgSig = $_GET['msg_signature']; $sReqTimeStamp = $sVerifyTimeStamp = $_GET['timestamp']; $sReqNonce = $sVerifyNonce = $_GET['nonce']; $sMsg = ""; $wxcpt = new WXBizMsgCrypt($token, $encodingAesKey, $AppId); $errCode = $wxcpt->DecryptMsg($sReqMsgSig, $sReqTimeStamp, $sReqNonce, $sReqData, $sMsg); if ($errCode == 0) { $xml = new DOMDocument(); $xml->loadXML($sMsg); $reqToUserName = $xml->getElementsByTagName('ToUserName')->item(0)->nodeValue; $reqFromUserName = $xml->getElementsByTagName('FromUserName')->item(0)->nodeValue; $reqCreateTime = $xml->getElementsByTagName('CreateTime')->item(0)->nodeValue; $reqMsgType = $xml->getElementsByTagName('MsgType')->item(0)->nodeValue; $reqContent = $xml->getElementsByTagName('Content')->item(0)->nodeValue; $reqMsgId = $xml->getElementsByTagName('MsgId')->item(0)->nodeValue; $reqAgentID = $xml->getElementsByTagName('AgentID')->item(0)->nodeValue; if ($reqMsgType!="text"){ exit; } $mycontent=$reqContent; $timestamp = $_GET['timestamp']; $nonce = $_GET['nonce']; $toUser = $reqFromUserName; $fromUser = $reqToUserName; $respondMsg = '<xml><ToUserName><![CDATA['.$toUser.']]></ToUserName><FromUserName><![CDATA['.$fromUser.']]></FromUserName><CreateTime>'.time().'</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA['.$mycontent.']]></Content></xml>'; //输出未加密消息 // echo $respondMsg; // exit(); //输出未加密消息 $pc = new WXBizMsgCrypt($token, $encodingAesKey, $AppId); $encryptMsg = ''; $errCode = $pc->encryptMsg($respondMsg, $timestamp, $nonce, $encryptMsg); echo $encryptMsg; exit; }
版权声明:本文为dgnankai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。