事件推送應該是微信公眾平台里面比較難處理的一個功能,事件比較多而且很分散,不知道啥時候有事件過來。
在微信用戶和公眾號產生交互的過程中,用戶的某些操作會使得微信服務器通過事件推送的形式通知到開發者的URL,從而開發者可以獲取到該消息。其中某些事件推送后允許開發者回復用戶,有些則不允許。
事件類型有:
1.關注/取消關注
2.掃描帶參數二維碼
3.上報地理位置
4.自定義菜單
5.點擊菜單拉去消息時候的事件推送
6.點擊菜單鏈接時的事件推送。
例子:
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> 開發者微信號 <FromUserName><![CDATA[FromUser]]></FromUserName> 發送方賬號(一個OpenID) <CreateTime>123456789</CreateTime> 消息創建時間 <MsgType><![CDATA[event]]></MsgType> 消息類型,event <Event><![CDATA[subscribe]]></Event> 事件類型,subscribe(unsubscribe) </xml>
當有用戶關注獲取取消的時候,url會接受到類似上面的xml數據包,處理和處理普通消息類似。
除了上面列舉的幾種事件類型,已知的還有:
1.發送模板消息后,微信服務器將是否送達的結果推送過來。
2.群發任務結束時,推送事件
3.微信認證事件推送,提供了公眾號認證過程中各個階段的事件推送,可用於獲知旗下公眾號的認證狀態
4.微信小店中,用戶在微信中付款成功后,微信服務器會將訂單付款通知推送到開發者在公眾平台網站中設置的回調URL(在開發模式中設置)中,如未設置回調URL,則獲取不到該事件推送。
付款成功推送內容:
<xml> <ToUserName><![CDATA[weixin_media1]]></ToUserName> <FromUserName><![CDATA[oDF3iYyVlek46AyTBbMRVV8VZVlI]]></FromUserName> <CreateTime>1398144192</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[merchant_order]]></Event> <OrderId><![CDATA[test_order_id]]></OrderId> <OrderStatus>2</OrderStatus> <ProductId><![CDATA[test_product_id]]></ProductId> <SkuInfo><![CDATA[10001:1000012;10002:100021]]></SkuInfo> </xml>