首页 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践 » 微信公众平台开发:从零基础到ThinkPHP5高性能框架实践全文在线阅读

《微信公众平台开发:从零基础到ThinkPHP5高性能框架实践》8.1.5 扫描带参数二维码事件

关灯直达底部

用户扫描带场景值二维码时,可能会推送以下两种事件。

·如果用户还未关注微信公众号,则用户可以关注微信公众号,关注后微信会将带场景值关注事件推送给开发者。

·如果用户已经关注微信公众号,则微信会将带场景值扫描事件推送给开发者。

1.用户未关注时

进行关注后的事件推送的XML数据格式如下。


<xml>    <ToUserName><![CDATA[gh_45072270791c]]></ToUserName>    <FromUserName><![CDATA[o7Lp5t6n59DeX3U0C7Kric9qEx-Q]]></FromUserName>    <CreateTime>1389684286</CreateTime>    <MsgType><![CDATA[event]]></MsgType>    <Event><![CDATA[subscribe]]></Event>    <EventKey><![CDATA[qrscene_1000]]></EventKey>    <Ticket><![CDATA[gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1    sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA==]]></Ticket></xml>  

上述数据的参数说明如表8-3所示。

表8-3 未关注时事件推送的参数说明

2.用户已关注时

事件推送的XML数据如下。


<xml>    <ToUserName><![CDATA[gh_45072270791c]]></ToUserName>    <FromUserName><![CDATA[o7Lp5t6n59DeX3U0C7Kric9qEx-Q]]></FromUserName>    <CreateTime>1389684184</CreateTime>    <MsgType><![CDATA[event]]></MsgType>    <Event><![CDATA[SCAN]]></Event>    <EventKey><![CDATA[1000]]></EventKey>    <Ticket><![CDATA[gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1s    dlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA==]]></Ticket></xml>  

上述数据的参数说明如表8-4所示。

表8-4 已关注时事件推送的参数说明

以下代码判定了扫描带参数二维码的两种情形。


 1 private function receiveEvent($object) 2 { 3     $content = ""; 4     switch ($object->Event) 5     { 6         case "subscribe": 7             $content = "欢迎关注 "; 8             if (isset($object->EventKey)){ 9                 $content.= "/n来自二维码场景 ".$object->EventKey;10             }11             break;12         case "SCAN":13             $content = "扫描二维码场景 ".$object->EventKey;14             break;15         default:16             break;      17 18     }19     $result = $this->transmitText($object, $content);20     return $result;21 }