讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 8.1.5 掃瞄帶參數二維碼事件 >

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 }