美文网首页
回复图文消息

回复图文消息

作者: 海藻web开发 | 来源:发表于2017-06-19 17:31 被阅读0次

    原理介绍
    接收到客户消息后就可以回复可以客户一个图文消息,实现方法:接收到消息数据后返回给微信服务器一个xml文本即可。Xml格式:

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>12345678</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <ArticleCount>2</ArticleCount>
    <Articles>
    <item>
    <Title><![CDATA[title1]]></Title> 
    <Description><![CDATA[description1]]></Description>
    <PicUrl><![CDATA[picurl]]></PicUrl>
    <Url><![CDATA[url]]></Url>
    </item>
    <item>
    <Title><![CDATA[title]]></Title>
    <Description><![CDATA[description]]></Description>
    <PicUrl><![CDATA[picurl]]></PicUrl>
    <Url><![CDATA[url]]></Url>
    </item>
    </Articles>
    </xml>
    

    参数详情

    1462332075915698.jpg

    函数封装

    /* 回复图文消息
     * $msgArray格式
     * $msgArray = array(
     *  array('项目标题', '描述', '图片地址', '点击项目打开的Url'),
     *  array('项目标题', '描述', '图片地址', '点击项目打开的Url'),
     *      有几个项目就设置几个数组元素
     * );
     */
    public function reItemMsgs($msgArray){
        $xml = '<xml><ToUserName><![CDATA['.$this->openId.']]></ToUserName><FromUserName><![CDATA['.$this->ourOpenId.']]></FromUserName><CreateTime>'.time().'</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>'.count($msgArray).'</ArticleCount><Articles>';
        foreach($msgArray as $val){
        $xml .= '<item><Title><![CDATA['.$val[0].']]></Title><Description><![CDATA['.$val[1].']]></Description><PicUrl><![CDATA['.$val[2].']]></PicUrl><Url><![CDATA['.$val[3].']]></Url></item>';
        }
        $xml .= '</Articles></xml>';
        echo $xml;
    }
    

    完整演示代码

    <?php
    /**
      * wechat php test
      */
    
    //define your token
    define("TOKEN", "wxtext2017");
    
    class weChat{
        public $postObj;      //接收到的xml对象
        public $openId;       //客户的openId
        public $ourOpenId;    //我方公众号的openId
        //构造函数用于接收消息
        public function __construct(){
            if(!empty($GLOBALS["HTTP_RAW_POST_DATA"])){
                $postStr=$GLOBALS["HTTP_RAW_POST_DATA"];
                        //将xml转换成对象
                        libxml_disable_entity_loader(true);
                        $this->postObj      = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                        $this->openId       = $this->postObj->FromUserName;
                        $this->ourOpenId    = $this->postObj->ToUserName;
                        $this->msgType      = $this->postObj->MsgType;
                    }
        }
        public function reItemMsgs($msgArray){
            $xml = '<xml><ToUserName><![CDATA['.$this->openId.']]></ToUserName><FromUserName><![CDATA['.$this->ourOpenId.']]></FromUserName><CreateTime>'.time().'</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>'.count($msgArray).'</ArticleCount><Articles>';
                    foreach($msgArray as $val){
                        $xml .= '<item><Title><![CDATA['.$val[0].']]></Title><Description><![CDATA['.$val[1].']]></Description><PicUrl><![CDATA['.$val[2].']]></PicUrl><Url><![CDATA['.$val[3].']]></Url></item>';
                    }
                    $xml .= '</Articles></xml>';
                    echo $xml;
        }
    }
    $wechatObj = new weChat();
    //回复文本消息
    $msgArray = array(
        array('我是标题一', '我是描述一', 'http://51qiaoxifu.com/head.jpg', 'http://51qiaoxifu.com'),
        array('我是标题二', '我是描述二', 'http://51qiaoxifu.com/img.jpg', 'http://51qiaoxifu.com')
    );
    $wechatObj->reItemMsgs($msgArray);
    ?>
    

    相关文章

      网友评论

          本文标题:回复图文消息

          本文链接:https://www.haomeiwen.com/subject/umfnqxtx.html