3、微信公众号开发之接收用户消息
来源:互联网 发布:淘宝同学 编辑:程序博客网 时间:2024/05/19 20:23
接受用户消息
当Token通过验证之后,在用户发送消息过来的时候,微信服务器将也会带上前面3个参数(signature、timestamp和nonce)访问开发者设置的URL,同时还会将消息的XML数据包POST到URL 上。
第一步:获取POST数据
$postData = $HTTP_RAW_POST_DATA; //获取POST数据
第二步:解析XML数据
$postObj = simplexml_load_string($postData,"SimpleXMLElement",LIBXML_NOCDATA);
第三步:根据用户的消息类型执行不同的操作
例如:文本消息;
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>参数描述ToUserName开发者微信号FromUserName发送方帐号(一个OpenID)CreateTime消息创建时间 (整型)MsgTypetextContent文本消息内容MsgId消息id,64位整型
获取消息对应的参数:
$FromUserName = $postObj->FromUserName;//发送方 $ToUserName = $postObj->ToUserName;//接收方 $Content = $postObj->Content; //用户发送的消息内容
案例(实现用户发送文本消息内容,回复自定义的内容):
<?php//--------------------------- 接收用户文字记录-------------------------------- //1.获取微信服务器post请求过来的数据; // $postData = $HTTP_RAW_POST_DATA; //获取POST数据 $postData = $HTTP_RAW_POST_DATA; //获取POST数据 // $formxml = " <xml> // <ToUserName><![CDATA[接收方:J、wen]]></ToUserName> // <FromUserName><![CDATA[发送方:User]]></FromUserName> // <CreateTime>2017-1-1</CreateTime> // <MsgType><![CDATA[text]]></MsgType> // <Content><![CDATA[消息发送成功...]]></Content> // <MsgId>1234567890123456</MsgId> // </xml>";//2.解析服务器的xml包 $postObj = simplexml_load_string($postData,"SimpleXMLElement",LIBXML_NOCDATA); // echo "<pre>"; // print_r($postObj); // echo "</pre>"; // 3.获取用户发的消息: $FromUserName = $postObj->FromUserName;//发送方 $ToUserName = $postObj->ToUserName;//接收方 $MsgType = $postObj->MsgType;//消息类型 $CreateTime = $postObj->CreateTime;//创建时间 $Content = $postObj->Content;//消息内容 $MsgId = $postObj->MsgId;//消息ID $time = time();//获取当前时间;//--------------------------- 回传记录-------------------------------- // if("text" != $MsgType){ // $reMsg = "用户发送的不是文本消息!"; // }else{ // $reMsg = $FromUserName; // echo $FromUserName.$ToUserName.$MsgType.$CreateTime.$Content.$MsgId; // exit; // } $toxml = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $Content2 = "我试管理员 ,你是谁?"; //格式化消息模板 $resultStr = sprintf($toxml,$FromUserName,$ToUserName,$time,$Content2); echo $resultStr; //输出结果 ?>本节用到的PHP函数:
$HTTP_RAW_POST_DATA — 原生POST数据
simplexml_load_string - 解释XML字符串转换成对象
sprintf的 - 返回一个格式化字符串
0 0
- 3、微信公众号开发之接收用户消息
- 微信公众号开发之接收普通消息
- 微信公众号开发之接收普通消息
- 微信公众号开发(一、接收用户消息自动回复)
- 微信公众号开发接收图片消息,获取用户发送图片的media_id
- 公众号接收用户消息—《微信公众平台开发实战与应用案例》—陈小龙
- 微信公众平台开发【接收消息】接收普通消息
- 微信公众号开发-接收与回复消息
- 微信公众号开发接收语音消息时权限
- (Java)微信之个人公众账号开发(二)——接收并处理用户消息(上)
- (Java)微信之个人公众账号开发(二)——接收并处理用户消息 (中)
- (Java)微信之个人公众账号开发(二)——接收并处理用户消息(下)
- PHP-微信公众平台开发-接收用户输入消息类型并响应
- 微信公众号开发_Java(3)--接收普通消息
- 接收(解析)公众号发来的消息--微信公众平台开发(四)
- 微信公众号三方平台开发【代微信公众号接收消息事件并响应】
- 微信公众号的开发之 向用户发送消息(三)
- 微信公众号的开发之 回复用户消息和事件响应(四)
- LINUX USB驱动开发(2)-USB驱动体系分析
- 草根程序员转型做项目管理的经验之谈
- AtomicInteger类的理解与使用
- 我的科研生活2017-2-12
- Service 与 Thread 的区别
- 3、微信公众号开发之接收用户消息
- java23种设计模式十二(连载)
- [Redis] 有序集合的操作
- 【BZOJ 3809】Gty的二逼妹子序列 莫队+分块
- C语言—编译环境
- SeaJS入门教程系列之SeaJS介绍(一)
- Matlab数据的可视化 -- 条形图
- 从零开始写linux字符设备驱动程序(三)(基于友善之臂tiny4412开发板)
- boost域指针(智能指针)测试