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

一、简介


当普通微信用户向公众账号发消息时,微信服务器将用户发送的消息封装成XML数据包,通过POST消息发送到开发者的URL上。

    
微信服务器在五秒内收不到服务器的响应会断掉连接,并且重新发起请求,总共重试三次。
关于重试的消息排重,推荐使用msgid排重。

    
假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。

当前支持如下的普通消息:

  • 1 文本消息

  • 2 图片消息

  • 3 语音消息

  • 4 视频消息

  • 5 地理位置消息

  • 6 链接消息

二、适用场景

普通微信用户通过微信给公众账号发送的图片时,微信服务器图片上传到微信的服务器并将图片的URL封装为XML消息格式发送到开发者URL。服务器上可以通过消息中带的图片URL和MediaId调用多媒体文件下载接口拉取数据。

三、消息格式说明


<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[image]]></MsgType>
<PicUrl><![CDATA[this is a url]]></PicUrl>
<MediaId><![CDATA[media_id]]></MediaId>
<MsgId>1234567890123456</MsgId>
</xml>



























参数 描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType image
PicUrl 图片链接
MediaId 图片消息媒体id,可以调用多媒体文件下载接口拉取数据。
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 default:
30 $resultStr = "Unknow message type: " . $MSG_TYPE;
31 break;
32 }
33 //echo $postStr;
34 echo $resultStr;
35 }else {
36 echo "";
37 exit;
38 }
39 }
40
41 private function handleImage($postObj)
42 {
43 //获取图片相关信息进行处理
44 $picURL = trim($postObj->PicUrl);
45 //$mediaID = trim($postObj->MediaId);
46
47 if(!empty($picURL)){
48 $contentStr = "URL : " . $picURL;
49 $resultStr = $this->responseText($postObj, $contentStr);
50 }else{
51 $resultStr = "Picture URL is empty.";
52 }
53
54 return $resultStr;
55 }
56
57
58 private function responseText($object, $content, $flag=0)
59 {
60 $textTpl = "<xml>
61 <ToUserName><![CDATA[%s]]></ToUserName>
62 <FromUserName><![CDATA[%s]]></FromUserName>
63 <CreateTime>%s</CreateTime>
64 <MsgType><![CDATA[text]]></MsgType>
65 <Content><![CDATA[%s]]></Content>
66 <FuncFlag>%d</FuncFlag>
67 </xml>";
68 $resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
69 return $resultStr;
70 }
71
72 }
73
74 ?>

疑问:

通过微信平台接口调试工具,发现下方的消息中,没有<MediaId><![CDATA[media_id]]></MediaId>字段  


<xml>
<URL>
<![CDATA[http://********.my.phpcloud.com/weixinapi/wx_handleMsg.php]]>
</URL>
<ToUserName>
<![CDATA[ToUser]]>
</ToUserName>
<FromUserName>
<![CDATA[FromUser]]>
</FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType>
<![CDATA[image]]>
</MsgType>
<PicUrl>
<![CDATA[http://e.hiphotos.baidu.com/image/w%3D2048/sign=17735c757af0f736d8fe4b013e6db319/1e30e924b899a901f01f313c1f950a7b0208f596.jpg]]>
</PicUrl>
<MsgId>1234567890123456</MsgId>
</xml>

   

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

时间: 2024-10-24 10:49:45

微信公众平台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 不合法的消息

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

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

微信公众平台开发(26) 消息回复总结

原文: http://www.cnblogs.com/imaker/p/5491433.html 一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本.图文.语音.视频.音乐). 三.文本回复 3.1 文本回复xml 结构 <xml> <ToUserName>

微信公众平台开发(十) 消息回复总结——用其xml模板

一.简介 微信公众平台提供了三种消息回复的格式,即文本回复.音乐回复和图文回复,在这一篇文章中,我们将对这三种消息回复的格式做一下简单讲解,然后封装成函数,以供读者使用. 二.思路分析 对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本.图文.语音.视频.音乐). 三.文本回复 3.1 文本回复xml 结构 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <F