PHP微信开发入门(三)

下面,写一个构造自动回复消息的xml类,在微信接收到消息的时候,进行自动消息回复,贴上我的代码

<?php
class We_Xml {
	/**
	 * 构造图文消息最小为1最大为20
	 * 可以从外部传入图文数组变量
	 * @var array
	 */
	public  $news = array (
			"0" => array (
					"title" => "图文消息0",//图文标题
					"description" => "图文消息0",//图文描述
					"picurl" => "http://www.baidu.com/xxx.jpg",//图片链接
					"url" => "www.baidu.com"//图文消息地址
			),
			"1" => array (
					"title" => "图文消息1",
					"description" => "图文消息1",
					"picurl" => "http://www.baidu.com/xxx.jpg",
					"url" => "www.baidu.com"
			),
			"2" => array (
					"title" => "图文消息2",
					"description" => "图文消息2",
					"picurl" => "http://www.baidu.com/xxx.jpg",
					"url" => "www.baidu.com"
			)
	);
	/**
	 * 回复文本消息
	 * 
	 * @param string $toU 公众号id
	 * @param string $fromU  用户id
	 * @param string $time 时间
	 * @param string $msg 消息内容
	 * @return string
	 */
	public function send_Text($toU, $fromU, $time, $msg) {
		$xml = "<xml>
		<ToUserName><![CDATA[{$toU}]]></ToUserName>
		<FromUserName><![CDATA[{$fromU}]]></FromUserName>
		<CreateTime>{$time}</CreateTime>
		<MsgType><![CDATA[text]]></MsgType>
		<Content><![CDATA[{$msg}]]></Content>
		</xml>";
		return $xml;
	}
	
	/**
	 * 回复图文消息
	 * 
	 * @param string $toU 公众号id
	 * @param string $fromU 用户id
	 * @param string $time 时间
	 * @return string
	 */
	public function send_News($toU, $fromU, $time) {
		$i=0;
		$xml = "<xml>
		          <ToUserName><![CDATA[{$toU}]]></ToUserName>
		          <FromUserName><![CDATA[{$fromU}]]></FromUserName>
		          <CreateTime>{$time}</CreateTime>
		          <MsgType><![CDATA[news]]></MsgType>
		          <ArticleCount>%s</ArticleCount>
		          <Articles>";
		$v="";
		//循环构造图文消息
		foreach ( $this->news as $x ) {
			$c = "<item>
			        <Title><![CDATA[{$x['title']}]]></Title>
			        <Description><![CDATA[{$x['description']}]]></Description>
			        <PicUrl><![CDATA[{$x['picurl']}]]></PicUrl>
			        <Url><![CDATA[{$x['url']}]]></Url>
			     </item>";
			$v = $v . $c;
			$i++;
			continue;
		}
		$v = $v . "\n</Articles>\n</xml>";
		$retrun = $xml . $v;
		//格式化计数
		$retrun=sprintf($retrun,$i);
		return $retrun;
	}
	
	/**
	 * 回复图片消息
	 * 
	 * @param string $toU 公众号id
	 * @param string $fromU 用户id
	 * @param string $time 时间
	 * @param string $imgid 上传媒体id
	 * @return string
	 */
	public function send_Img($toU, $fromU, $time, $imgid) {
		$xml = "<xml>
		          <ToUserName><![CDATA[{$toU}]]></ToUserName>
		          <FromUserName><![CDATA[{$fromU}]]></FromUserName>
		          <CreateTime>{$time}</CreateTime>
	           	  <MsgType><![CDATA[image]]></MsgType>
		          <Image>
		             <MediaId><![CDATA[{$imgid}]]></MediaId>
		          </Image>
		       </xml>";
		return $xml;
	}
	public function send_Video($toU, $fromU, $time, $media_id){
		$xml=<<<XML
		<xml>
          <ToUserName><![CDATA[{$toU}]]></ToUserName>
          <FromUserName><![CDATA[{$fromU}]]></FromUserName>
          <CreateTime>{$time}</CreateTime>
          <MsgType><![CDATA[voice]]></MsgType>
          <Voice>
            <MediaId><![CDATA[{$media_id}]]></MediaId>
          </Voice>
       </xml>
XML;
		return $xml;
	}
	/**
	 * 回复视频消息
	 * 
	 * @param string $toU 公众号id
	 * @param string $fromU用户id
	 * @param string $time 时间
	 * @param string $media_id 上传媒体id
	 * @param string $title 视频标题
	 * @param string $description 视频描述
	 * @return string
	 */
	public function send_Audio($toU, $fromU, $time, $media_id,$title,$description){
		$xml=<<<XML
		<xml>
          <ToUserName><![CDATA[{$toU}]]></ToUserName>
          <FromUserName><![CDATA[{$fromU}]]></FromUserName>
          <CreateTime>{$time}</CreateTime>
          <MsgType><![CDATA[video]]></MsgType>
          <Video>
            <MediaId><![CDATA[{$media_id}]]></MediaId>
            <Title><![CDATA[{$title}]]></Title>
            <Description><![CDATA[{$description}]]></Description>
         </Video> 
       </xml>
XML;
            return $xml;
	}
	/**
	 * 回复音乐消息
	 * 
	 * @param string $toU 公众号id
	 * @param string $fromU 用户id
	 * @param string $time 时间
	 * @param string $media_id 上传媒体id
	 * @param string $title 标题
	 * @param string $description 描述
	 * @param string $url 音乐地址
	 * @param string $HQ_url 高清音乐地址,在WiFi环境下优先调用
	 * @return string
	 */
	public function send_Music($toU, $fromU, $time, $media_id,$title,$description,$url,$HQ_url=null){
		//如果未添加$HQ_url则使他与$url相同
		if($HQ_url=null){
			$HQ_url=$url;
		}
		$xml=<<<XML
		<xml>
           <ToUserName><![CDATA[{$toU}]]></ToUserName>
           <FromUserName><![CDATA[{$fromU}]]></FromUserName>
           <CreateTime>{$time}</CreateTime>
           <MsgType><![CDATA[music]]></MsgType>
           <Music>
             <Title><![CDATA[{$title}]]></Title>
             <Description><![CDATA[{$description}]]></Description>
             <MusicUrl><![CDATA[{$url}]]></MusicUrl>
             <HQMusicUrl><![CDATA[{$HQ_url}]]></HQMusicUrl>
             <ThumbMediaId><![CDATA[{$media_id}]]></ThumbMediaId>
           </Music>
       </xml>
XML;
             return $xml;
	}
	/**
	 * 回复语音消息
	 * 
	 * @param string $toUser
	 * @param string $fromUser
	 * @param string $time
	 * @param string $media_id
	 * @return string
	 */
	public function send_voice($toUser,$fromUser,$time,$media_id){
		
		$xml=<<<XML
	<xml>
      <ToUserName><![CDATA[{$toUser}]]></ToUserName>
      <FromUserName><![CDATA[{$fromUser}]]></FromUserName>
      <CreateTime>{$time}</CreateTime>
      <MsgType><![CDATA[voice]]></MsgType>
      <Voice>
        <MediaId><![CDATA[{$media_id}]]></MediaId>
      </Voice>
    </xml>	
XML;
		return $xml;
	}
}
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏林德熙的博客

使用 ahk 让普通键盘变为Dvorak键盘

本文告诉大家,如何使用软件做出Dvorak键盘。 在开始说如何做之前,需要告诉大家,什么是Dvorak键盘。 Dvorak Simplified Keyboar...

1062
来自专栏FreeBuf

RSA2018 | 通过iOS Trustjacking漏洞远程渗透iPhone

赛门铁克研究人员发现了一个iPhone与Mac工作站和笔记本电脑配对的漏洞。他们表示,攻击者可以利用这个被称为Trustjacking的漏洞,在没有信息情况下接...

1713
来自专栏Seebug漏洞平台

创建简单、免费的恶意软件分析环境

原文地址:Creating a Simple Free Malware Analysis Environment

4026
来自专栏FreeBuf

运维配置缺陷导致大量MongoDB数据信息遭泄露

近日,黑客组织GhostShell泄露了大量的MongoDB数据库用户资料。 数据遭到大量泄露 据统计该组织目前泄露的数据已达3600万条之多。MongoDB作...

22310
来自专栏FreeBuf

揭秘:安卓木马是如何盗取用户手机银行的

手机银行是一种非常便捷的方式让用户可以随时随地的完成交易。KPMG预测手机银行用户在2019年会增长到1.8亿。但是,随着手机银行涉及的金钱数额越来越大,攻击者...

4489
来自专栏NewTech视野

从黑客那里保护公司网站的12个技巧

通常您的网站开放运行如同无需锁门但依然安全开放的办公室一样:因为大多数人不会仅仅步入并访问您的办公室就洞察到您所有的数据信息。偶尔您会发现有不怀好意的人进入并偷...

980
来自专栏FreeBuf

FIT 2016集锦 | 解锁iOS手势密码的正确姿势

刚刚过去的FreeBuf互联网安全创新大会(FIT)中,平安科技银河实验室安全研究员姜若芾带来的“解锁iOS手势密码”的议题尤为吸睛。 什么是手势密码? 手势密...

2578
来自专栏软件开发 -- 分享 互助 成长

职责链模式

一、简介 1、当客户提交一个请求时,请求沿着链传递直到有一个管理者对象处理它。 2、UML ? 3、所属类别:行为型 二、程序 1 // 职责链模式.cpp...

1957
来自专栏FreeBuf

GPON Home Router家庭光纤网关设备漏洞技术分析

什么是GPON终端?PON终端,俗称“ 光猫”,作用类似于大家所熟悉的ADSL Modem,是光纤到户家庭需备的网络设备。根据不同的技术和标准,PON 又为分为...

1283
来自专栏Python中文社区

基于 Python 的僵尸网络将 Linux 机器变成挖矿机器人

F5 Networks 的安全研究人员发现了一个新的 Linux 加密僵尸网络,并将其命名为"PyCryptoMiner",它主要的攻击目标是具有公开 SSH...

3175

扫码关注云+社区

领取腾讯云代金券