接收事件
当用户进行某些特定的用户操作引发的事件推送时,微信服务器会将消息(或事件)的数据包(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 | 微信支付订单号,可以在微信支付商户平台上查询 |