在第三方平台填写的 http://demo.xxx.me/weixin/reply.php?appid=/$APPID$ 后微信将服务器短信发送至该地址,微信进行接收 同时解密获取内容 返回加密内容
【 本文地址:http://irudder.me/wpblog/?p=47,转载请保留】
<?php $content = file_get_contents("php://input"); if ($content) { file_put_contents("content.php", "\r\n" . $content . '**' . $_GET['timestamp'] . '**' . $_GET['nonce'] . "**" . $_GET['msg_signature']); } //接收的内容存在文件中 $content = file_get_contents('content.php'); //var_dump($content); $arr = explode('**',$content); require '../req/weixin.php';//微信官方文件 $encodingAesKey = '第三方密钥'; $token = 'token'; $appId = "第三方appid"; $timeStamp =$arr[1]; $nonce = $arr[2]; $msg_sign = $arr[3]; $encryptMsg = $arr[0]; $pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId); //echo $encryptMsg; $xml_tree = new DOMDocument(); $xml_tree -> loadXML($encryptMsg); $array_e = $xml_tree->getElementsByTagName('Encrypt'); $encrypt = $array_e->item(0)->nodeValue; //echo $encrypt; $format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%s]]></Encrypt></xml>"; $from_xml = sprintf($format, $encrypt); //var_dump($from_xml); // 第三方收到公众号平台发送的消息 $msg = ''; $errCode = $pc->decryptMsg($msg_sign, $timeStamp, $nonce, $from_xml, $msg); //var_dump($arr); //echo "<hr>"; //var_dump($msg); //echo "<hr/>"; //echo $errCode; //echo "<hr/>"; if ($errCode == 0) { //print("解密后: " . $msg . "\n"); $xml = new DOMDocument(); $xml->loadXML($msg); //获取发送者 接受者 发送的内容 $content = $xml->getElementsByTagName('Content'); $Content = $content->item(0)->nodeValue; $ToUserName = $xml->getElementsByTagName('ToUserName'); $ToUserName = $ToUserName->item(0)->nodeValue; $FromUserName = $xml->getElementsByTagName('FromUserName'); $FromUserName = $FromUserName->item(0)->nodeValue; $con = mysql_connect("127.0.0.1", "root", "密码"); $db = mysql_select_db("wp", $con); mysql_query("set names utf8"); //$sql = "select `content` from `wp_custom_reply_text` where `keyword`='$Content'"; $sql = "select * from `wp_custom_reply_text` where `keyword` like '%$Content%'"; $result = mysql_query($sql, $con); if (!mysql_fetch_row($result)) { /*$contentStr = "<a href='http://www.woxiangyao.me/forum/'>萌萌机器人:不知道为啥,就是搜索不到你说的这个,让我再想想怎么办好呢。。</a>";*/ //$url = "http://www.tuling123.com/openapi/api?key=d812d695a5e0df258df952698faca6cc&info=".$Content;//这里采用图灵机器人的自动回复,当你数据库没有查到数据时返回 $contentStr = "萌萌机器人:" . json_decode(request_get($url))->text; } else { while ($row = mysql_fetch_array($result)) { $contentStr = $row['content']; } } while ($contentStr == "没有进行查询") { $i = 0; if (!mysql_fetch_row($result)) { $contentStr = "<a href='http://www.woxiangyao.me/forum/'>萌萌机器人:不知道为啥,就是搜索不到你说的这个,让我再想想怎么办好呢。。</a>"; //这里是为了避免没有查询数据库就直接回复了。 } else { while ($row = mysql_fetch_array($result)) { $contentStr = $row['content']; } } $i++; if ($i = 10) { //echo $i; break; } } $text = ' <xml><ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA1]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml> '; $CreateTime = time(); $text = sprintf($text, $FromUserName, $ToUserName, $CreateTime, $contentStr); $from_xml = sprintf($format, $encrypt); //$errCode = $pc -> encryptMsg($msg_sign, $timeStamp, $nonce, $msg); $errCode = $pc->encryptMsg($text, $timeStamp, $nonce, $encryptMsg); //echo $encryptMsg; $arr = explode(' ', $encryptMsg); //4个空格 //var_dump($arr); $encryptMsg = substr($arr[1], 0, -1); $signature = substr($arr[2], 0, -1); $timestamp = substr($arr[3], 0, -1); $nonce = substr($arr[4], 0, -1); $format = "<xml> <Encrypt><![CDATA[%s]]></Encrypt> <MsgSignature><![CDATA[%s]]></MsgSignature> <TimeStamp>%s</TimeStamp> <Nonce><![CDATA[%s]]></Nonce> </xml>"; echo sprintf($format, $encryptMsg, $signature, $timestamp, $nonce); } else { echo "解密出错。,。。"; } function request_get($url = '') { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); $output = curl_exec($ch); //$fh=fopen("test.php",'w'); $data = curl_exec($ch); //运行curl return $data; }
【 本文地址:http://irudder.me/wpblog/?p=47,转载请保留】