PHP微信公众平台接口(四)——消息的接收和发送

消息的接收和发送可以说是核心部分,这是用户和公众号最主要的信息交流。

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),具体操作可查官方文档


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值