微信公众平台API测试——接收链接消息

一、简介


当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成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[url]]></Url>
9 <MsgId>1234567890123456</MsgId>
10 </xml>





























参数 描述
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 ?>

五、解析到的结果

微信公众平台API测试——接收链接消息,码迷,mamicode.com

时间: 2024-10-26 21:02:03

微信公众平台API测试——接收链接消息的相关文章

微信公众平台API测试——接收文本消息

一.简介 当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上.      微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次.关于重试的消息排重,推荐使用msgid排重.      假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试. 当前支持如下的普通消息: 1 文本消息 2 图片消息 3 语音消息 4 视频消息 5 地理位置消息 6 链接消息 二

微信公众平台API测试——接收地理位置消息

一.简介 当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上.      微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次.关于重试的消息排重,推荐使用msgid排重.      假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试. 当前支持如下的普通消息: 1 文本消息 2 图片消息 3 语音消息 4 视频消息 5 地理位置消息 6 链接消息 二

微信公众平台API测试——接收图片消息

一.简介 当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上.      微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次.关于重试的消息排重,推荐使用msgid排重.      假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试. 当前支持如下的普通消息: 1 文本消息 2 图片消息 3 语音消息 4 视频消息 5 地理位置消息 6 链接消息 二

微信公众平台API测试——接收语音消息

一.简介 当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上.      微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次.关于重试的消息排重,推荐使用msgid排重.      假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试. 当前支持如下的普通消息: 1 文本消息 2 图片消息 3 语音消息 4 视频消息 5 地理位置消息 6 链接消息 二

微信公众平台API测试——接收视频消息

一.简介 当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上.      微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次.关于重试的消息排重,推荐使用msgid排重.      假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试. 当前支持如下的普通消息: 1 文本消息 2 图片消息 3 语音消息 4 视频消息 5 地理位置消息 6 链接消息 二

微信公众平台API测试 ——全局返回码

全局返回码说明[1] 公众号每次调用接口时,可能获得正确或错误的返回码,开发者可以根据返回码信息调试接口,排查错误. 全局返回码说明如下: 返回码 说明 -1 系统繁忙 0 请求成功 40001 获取access_token时AppSecret错误,或者access_token无效 40002 不合法的凭证类型 40003 不合法的OpenID 40004 不合法的媒体文件类型 40005 不合法的文件类型 40006 不合法的文件大小 40007 不合法的媒体文件id 40008 不合法的消息

微信公众平台改版 终于支持图文消息链接了

微信公众平台发布更新了,终于允许在图文消息中加入跳转链接,但仅针对开通了微信支付的公众号,开通微信支付应该不算难,大伙赶紧去开通吧.本次微信公众平台改版升级还新增开发者中心.界面扁平化.改善用户体验等,以下是微信团队的公告: 微信公众平台改版说明 1. 允许在图文消息中加入跳转链接 对开通了微信支付的公众号,允许在图文消息中加入跳转链接 2. 将服务中心升级为功能插件 每个公众号都可以在添加功能插件页面,看到该帐号能申请的所有功能. 3. 商户功能改名为微信支付 为便于企业或商家认知及申请微信支

微信公众平台开发之处理普通消息---2

(接上一篇文章:微信公众平台开发之处理普通消息---1) 本章节主要讲述对普通消息的处理. 当用户关注微信公众号时,取消关注时,给公众号发各种信息时,作出简单的响应(处理). 一.在com.cc.wechat.util包下新建工具类: ---MessageUtil: 对xml解析需要用到两个工具包: 1 xstream.jar 点击下载 2 dom4j.jar 点击下载 package com.cc.wechat.util; import java.io.IOException; import 

微信公众号API测试——接口调用频率限制

接口频率限制[1] 公众号调用接口并不是无限制的.为了防止公众号的程序错误而引发微信服务器负载异常,默认情况下,每个公众号调用接口都不能超过一定限制,当超过一定限制时,调用对应接口会收到如下错误返回码: {"errcode":45009,"errmsg":"api freq out of limit"} 各接口调用频率限制如下: 接口 每日限额 获取access_token 2000 自定义菜单创建 1000 自定义菜单查询 10000 自定义菜