微信公众平台API测试——接收链接消息
2020-03-29 18:33
781 查看
一、简介
当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上。
微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次。关于重试的消息排重,推荐使用msgid排重。
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。
当前支持如下的普通消息:
- 1 文本消息
- 2 图片消息
- 3 语音消息
- 4 视频消息
- 5 地理位置消息
- 6 链接消息
二、适用场景
普通微信用户通过微信给公众账号转发其他链接消息时,微信服务器就会将此消息的参数封装为链接消息发送到开发者URL。服务器接收到此消息后,可以解析出此消息的:标题,描述和链接URL。通过URL,可以获取用户转发来的网页信息。
三、消息格式说明
1 <xml> 2 <ToUserName><![CDATA[toUser]]></ToUserName> 3 <FromUserName><![CDATA[fromUser]]></FromUserName> 4 <CreateTime>1351776360</CreateTime> 5 <MsgType><![CDATA[link]]></MsgType> 6 <Title><![CDATA[公众平台官网链接]]></Title> 7 <Description><![CDATA[公众平台官网链接]]></Description> 8 <Url><![CDATA五、解析到的结果
转载于:https://www.cnblogs.com/youlangu/p/3699923.html
[url=https://blog.csdn.net/amwhbngv30764]amwhbngv30764" target=_blank>]></Url> 9 <MsgId>1234567890123456</MsgId> 10 </xml> [/code]
- 点赞
- 收藏
- 分享
- 文章举报
参数 | 描述 |
---|---|
ToUserName | 接收方微信号 |
FromUserName | 发送方微信号,若为普通用户,则是一个OpenID |
CreateTime | 消息创建时间 |
MsgType | 消息类型,link |
Title | 消息标题 |
Description | 消息描述 |
Url | 消息链接 |
MsgId | 消息id,64位整型 |
四、代码示例
1 <?php 2 /** 3 * wechat php test 4 */ 5 6 //define your token 7 define("TOKEN", "weixin"); 8 $wechatObj = new wechatCallbackapiTest(); 9 $wechatObj->responseMsg(); 10 11 class wechatCallbackapiTest 12 { 13 public function responseMsg() 14 { 15 //get post data, May be due to the different environments 16 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 17 18 if (!empty($postStr)){ 19 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 20 $MSG_TYPE = trim($postObj->MsgType); 21 22 switch ($MSG_TYPE) { 23 case "text": 24 $resultStr = $this->handleText($postObj); 25 break; 26 case "image": 27 $resultStr = $this->handleImage($postObj); 28 break; 29 case "voice": 30 $resultStr = $this->handleVoice($postObj); 31 break; 32 case "video": 33 $resultStr = $this->handleVideo($postObj); 34 break; 35 case "location": 36 $resultStr = $this->handleLocation($postObj); 37 break; 38 case "link": 39 $resultStr = $this->handleLink($postObj); 40 break; 41 default: 42 $resultStr = "Unknow message type: " . $MSG_TYPE; 43 break; 44 } 45 //echo $postStr; 46 echo $resultStr; 47 }else { 48 echo ""; 49 exit; 50 } 51 } 52 53 private function handleLink($postObj) 54 { 55 //标题 56 $title = trim($postObj->Title); 57 //消息描述 58 $description = trim($postObj->Description); 59 //链接地址 60 $url = trim($postObj->Url); 61 62 if(!empty($url)){ 63 $contentStr = "Title : " . $title ."\n" 64 . "Description : " . $description . "\n" 65 . "URL : " . $url . "\n" ; 66 $resultStr = $this->responseText($postObj, $contentStr); 67 }else{ 68 $resultStr = "URL is empty."; 69 } 70 71 return $resultStr; 72 } 73 74 private function responseText($object, $content, $flag=0) 75 { 76 $textTpl = "<xml> 77 <ToUserName><![CDATA[%s]]></ToUserName> 78 <FromUserName><![CDATA[%s]]></FromUserName> 79 <CreateTime>%s</CreateTime> 80 <MsgType><![CDATA[text]]></MsgType> 81 <Content><![CDATA[%s]]></Content> 82 <FuncFlag>%d</FuncFlag> 83 </xml>"; 84 $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag); 85 return $resultStr; 86 } 87 88 } 89 90 ?>
五、解析到的结果
转载于:https://www.cnblogs.com/youlangu/p/3699923.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 利用API发送和接收消息,本代码测试全通过
- 微信公众平台开发学习系列(二):微信公众平台接收消息与发送消息
- 微信公众平台消息接口开发(6)电话号码链接与网址链接
- Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收
- 使用Golang开发微信公众平台----接收消息
- java开发微信公众平台(二)-- 消息的接收与回复文本消息
- 个人微信号接收不到服务器自动返回的消息-微信公众平台开发2
- 微信公众平台开发--接收消息的分类及实体创建
- 微信公众平台开发【二】 消息的接收和响应
- 微信测试号开发之三 接收处理消息并响应
- 接收(解析)公众号发来的消息--微信公众平台开发(四)
- 微信公众平台开发学习记录(3)————接收消息和发送回复消息
- 判断一个窗口是否被挂起(发WM_NULL消息,或者调用IsHungAppWindow API进行测试)
- 微信公众平台消息接口API指南
- 测试接收 ActiveMq 消息
- 夺命雷公狗---微信开发11----接收并回复链接消息
- 微信公众平台 java示例 接收消息并回复
- 微信公众平台--接收普通消息与事件
- Java微信公众平台开发(三)——接收消息的分类及实体的创建
- 微信公众平台消息接口API指南