微信 之公众号自动回复查询产品
我这里是接微擎自定义接口回复
一、效果图
二、代码
/** * Created by PhpStorm. * User: Mr.Yang * QQ: 2575404985 */ require_once '../../../common.inc.php'; //连数据库 include_once 'weixin.class.php'; $wx = new Weixin(); $wx->getMsg(); switch ($wx->msgType){ case 'text': $sell = array(); $result = $db->query("select * from [产品表] where status = 3 and title like '%{$wx->msg['Content']}%' order by itemid desc limit 10"); $html = ""; while ($r = $db->fetch_array($result)) { $html .= "<a href='你的链接'>".$r['title']."</a>\n\n"; } $wx->reply($wx->makeText(trim($html, '\n\n'))); break; }
weixin.class.php
class Weixin { private $token = "vEeApDmLdwX7UnX7GL"; public $debug = true; public $setFlag = false; public $msgType = 'text'; //('text','image','location') public $msg = null; public function __construct() { } public function getMsg() { $postStr = !empty($GLOBALS["HTTP_RAW_POST_DATA"]) ? $GLOBALS["HTTP_RAW_POST_DATA"] : file_get_contents("php://input"); if ($this->debug) { $this->write_log($postStr); } if (!empty($postStr)) { $this->msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $this->msgtype = strtolower($this->msg['MsgType']); } } public function makeText($text = '') { $CreateTime = time(); $textTpl = "<xml> <ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName> <FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName> <CreateTime>{$CreateTime}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; return sprintf($textTpl, $text); } /** * 验证服务器 */ public function valid() { if ($this->checkSignature()) { if ($_SERVER['REQUEST_METHOD'] == 'GET') { echo $_GET['echostr']; exit; } } else { $this->write_log('认证失败'); exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $tmpArr = array($this->token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode($tmpArr); $tmpStr = sha1($tmpStr); if ($tmpStr == $signature) { return true; } else { return false; } } /** * 日志处理 * @param $log */ public function write_log($log) { $file = fopen("./weixin.log", "a"); fwrite($file, $log . "\n"); fclose($file); } /** * 回复消息 * @param $data */ public function reply($data) { if ($this->debug) { $this->write_log($data); } echo $data; } }