微信 之公众号自动回复查询产品

我这里是接微擎自定义接口回复

一、效果图

 

 二、代码

/**
 * 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;
    }
}
View Code

 

posted @ 2020-12-16 09:53  样子2018  阅读(281)  评论(0编辑  收藏  举报