事件推送php
1).推送類型介紹git
1 關注/取消關注事件微信
2 掃描帶參數二維碼事件post
3 上報地理位置事件url
4 自定義菜單事件spa
5 點擊菜單拉取消息時的事件推送code
6 點擊菜單跳轉連接時的事件推送xml
推送XML數據包示例:blog
<xml><ToUserName>< ![CDATA[toUser] ]></ToUserName><FromUserName>< ![CDATA[FromUser] ]></FromUserName><CreateTime>123456789</CreateTime><MsgType>< ![CDATA[event] ]></MsgType><Event>< ![CDATA[subscribe] ]></Event></xml>
參數說明:事件
參數 | 描述 |
---|---|
ToUserName | 開發者微信號 |
FromUserName | 發送方賬號(一個OpenID) |
CreateTime | 消息建立時間 (整型) |
MsgType | 消息類型,event |
Event | 事件類型,subscribe(訂閱)、unsubscribe(取消訂閱) |
上面消息post推送的數據格式--網址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454
當用戶關注微信公衆號時,微信給咱們的url網址推送一個post請求,請求數據是xml格式的
後臺設置的url:http://www.cc8w.com/weixin/openweixin.php
咱們須要這樣獲取:
$postArr = $_GLOBALS['HTTP_RAW_POST_DATA'];
file_get_contents("php://input");//這樣也能夠獲取
這個xml格式.
//獲取到xml數據後,處理消息類型,並設置回覆消息內容(回覆就是直接打印xml數據)
public function reposeMsg() {//接收事件推送過來的數據,並回復 //文案地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453 $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];//接受推送事件 //數據格式 $arr = simplexml_load_string($postArr); if(strtolower($arr->MsgType)=="event") { $toUser = $arr->ToUserName; $foUser = $arr->FromUserName; $msgType = 'text'; $createTime = time(); $content = '尊敬的'.$foUser."謝謝你的關注\n"; if(strtolower($arr->Event)=="subscribe") {//訂閱事件的處理 $temp = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>"; $temp = sprintf($temp,$foUser,$toUser,$createTime,$msgType,$content); return $temp; } } }
實驗的地址:https://gitee.com/fps2tao/openweixin