事件推送应该是微信公众平台里面比较难处理的一个功能,事件比较多而且很分散,不知道啥时候有事件过来。
在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者的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>