首页 课程中心 问答&分享 读书 公众号框架 HUI H.JS 开放源 登录 & 注册
 《微信公众号开发权威教程》

图文消息样式



原理介绍

接收到客户消息后就可以回复可以客户一个图文消息,实现方法:接收到消息数据后返回给微信服务器一个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>


所需参数

函数封装

/* 回复图文消息
 * $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
define("TOKEN", "wxtest2016");
$wechatObj = new weChat();
//回复文本消息
$msgArray = array(
    array('测试1', '...', 'http://static.hcoder.net/public/course_images/559505cf44c9f.png', 'http://www.hcoder.net'),
    array('测试2', '...', 'http://static.hcoder.net/public/course_images/559505cf44c9f.png', 'http://www.hcoder.net')
);
$wechatObj->reItemMsgs($msgArray);

//核心类
class weChat{
    public $postObj;      //接收到的xml对象
    public $openId;       //客户的openId
    public $ourOpenId;    //我方公众号的openId
    public $msgType;      //客户消息的类型
    public function __construct(){
        if(!empty($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;
    }
}


书籍目录  (请点击阅读)