消息的接收和发送可以说是核心部分,这是用户和公众号最主要的信息交流。
1、官网文档已说明,当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。这里有个坑,就是微信服务器在一段时间没收到响应的话,就会再次发送请求到你的URL上。网上大多的解决方法是收到请求后返回一个空串(或“success”字符串)给微信,微信收到响应后就不会重复发送请求。但这方法并不理想,如果网络有延迟的话还是会出问题,目前没找到更好的解决方法。
2、接受消息:
当用户给公众号发一条信息时,微信会发下面数据给你的URL
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1515023230</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
ToUserName是你的公众账号;
FromUserName是用户的openid;
MsgType是用户发送信息的类型,文本是test,图片是image,语音是voice,等等等等……
Content是用户发送信息的内容;
MsgId是消息id,感觉没什么用……
php获取解析xm:
$postxml = file_get_contents('php://input');//读取 POST 的原始数据
$data = simplexml_load_string($postxml, 'SimpleXMLElement', LIBXML_NOCDATA);//解析xml,解析后为对象格式l
如果想具体看微信发过来的数据,可以用file_put_contents(“path”, $postxml, FILE_APPEND)来查看
可以根据用户发送不要的消息类型MsgType来判断做什么处理。
3、发送消息:
公众号给用户发送消息,需要调用微信的接口
请求接口:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESSTOKEN
请求方式:POST
ACCESSTOKEN就是你获取到的access_token,注意有效时间(似曾相识的一句话)
主要的参数三个:
"touser":$openid// 用户的openid;
"msgtype":"test"// 消息类型,文本是test,图片是image,语音是voice,等等等等……
"text":{"content":$msg}//文本消息内容
除了简单的接收发送,还有很多消息的接口,群发消息(速度很慢),发送模板消息(需要模板ID),具体操作可查官方文档
——消息的接收和发送&spm=1001.2101.3001.5002&articleId=78625006&d=1&t=3&u=616d646636b448d48e71b0b4744ef2fb)
5491

被折叠的 条评论
为什么被折叠?



