接收事件

当用户进行某些特定的用户操作引发的事件推送时,微信服务器会将消息(或事件)的数据包(JSON或者XML格式)POST请求开发者填写的URL。

微信服务器在将用户的事件发给小程序的开发者服务器地址(开发设置处配置)后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否处理超时。关于重试的消息排重,事件类型消息推荐使用FromUserName + CreateTime 排重。

服务器收到请求必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试。详见下面说明:

1、直接回复success(推荐方式)
2、直接回复空串(指字节长度为0的空字符串,而不是结构体中content字段的内容为空)

如果开发者希望增强安全性,可以在开发者中心处开启消息加密,这样,双向消息都会被加密,详见消息加解密说明

各消息类型的推送JSON、XML数据包结构如下。

1. 用户下单事件

用户在官方精品店下订单将产生一个事件:

XML格式

<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>  
    <FromUserName><![CDATA[fromUser]]></FromUserName>  
    <CreateTime>1482048670</CreateTime>  
    <MsgType><![CDATA[event]]></MsgType>  
    <Event><![CDATA[official_pay_order]]></Event>  
    <OrderId><![CDATA[ojj312nnvfff123123]]></OrderId> 
    <PayFinishTime>1482048670</PayFinishTime> 
    <TransId><![CDATA[wxpay_ojj312nnvfff123123]]></TransId>
    <Fee>150</Fee> 
</xml>

JSON 格式

{
    "ToUserName": "toUser",
    "FromUserName": "fromUser",
    "CreateTime": 1482048670,
    "MsgType": "event",
    "Event": "mall_pay_order",
    "OrderId": "ojj312nnvfff123123",
    "PayFinishTime": 1482048670,
    "Fee": 150,
    "TransId": "wxpay_ojj312nnvfff123123"
}

参数说明

参数 说明
ToUserName 小程序的原始ID
FromUserName 发送者的openid
CreateTime 事件创建时间(整型)
MsgType event
Event 事件类型,official_pay_order
OrderId 订单id
PayFinishTime 用户支付下单时间
Fee 订单支付金额,分为单位
TransId 微信支付订单号,可以在微信支付商户平台上查询