用戶掃瞄帶場景值二維碼時,可能會推送以下兩種事件。
·如果用戶還未關注微信公眾號,則用戶可以關注微信公眾號,關注後微信會將帶場景值關注事件推送給開發者。
·如果用戶已經關注微信公眾號,則微信會將帶場景值掃瞄事件推送給開發者。
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 }