微信扫描带参数二维码事件
用户扫描带场景值二维码时,可能推送以下两种事件:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。
1. 用户未关注时,进行关注后的事件推送
推送xml数据包示例:
<xml><tousername><![cdata[touser]></tousername>
<fromusername><![cdata[fromuser]></fromusername>
<createtime>123456789</createtime>
<msgtype><![cdata[event]></msgtype>
<event><![cdata[subscribe]></event>
<eventkey><![cdata[qrscene_123123]></eventkey>
<ticket><![cdata[ticket]></ticket>
</xml>
参数说明:
参数 描述
tousername 开发者微信号
fromusername 发送方帐号(一个openid)
createtime 消息创建时间 (整型)
msgtype 消息类型,event
event 事件类型,subscribe
eventkey 事件key值,qrscene_为前缀,后面为二维码的参数值
ticket 二维码的ticket,可用来换取二维码图片
2. 用户已关注时的事件推送
推送xml数据包示例:
<xml>
<tousername><![cdata[touser]></tousername>
<fromusername><![cdata[fromuser]></fromusername>
<createtime>123456789</createtime>
<msgtype><![cdata[event]></msgtype>
<event><![cdata[scan]></event>
<eventkey><![cdata[scene_value]></eventkey>
<ticket><![cdata[ticket]></ticket>
</xml>
参数说明:
参数 描述
tousername 开发者微信号
fromusername 发送方帐号(一个openid)
createtime 消息创建时间 (整型)
msgtype 消息类型,event
event 事件类型,scan
eventkey 事件key值,是一个32位无符号整数,即创建二维码时的二维码scene_id
ticket 二维码的ticket,可用来换取二维码图片
案例:
//1、扫码获取微信post过来的xml数据
$postarr = $globals['http_raw_post_data'];
$postobj = simplexml_load_string( $postarr );
//未订阅时 ,eventkey为qrscene_1984;订阅后,eventkey为1984
if( strtolower($postobj->event) == 'subscribe'){
$account_id = substr(trim($postobj->eventkey), 8);//输出1984
} else {
$account_id = trim($postobj->eventkey);
}
下一篇: ArrayList源码分析