laravel 5を使用する.4 easywechatと組み合わせた微信開発--QRコードシーン使用


現在、2種類のQRコードがあります.
1-一時的なQRコード:
有効期限はありますが、最大でQRコード生成後30日後に有効期限が切れるように設定できますが、より多くの数を生成できます.
一時的なQRコードは、主にアカウントバインドなど、QRコードの永続的な保存を必要としないビジネスシーンに使用されます.
2-永続QRコード:
有効期限はありませんが、数は少ない(現在は最大10万個).永続的なQRコードは、主にアカウントバインド、ユーザーソース統計などのシーンに適用されます.
ユーザがシーン値付きQRコードをスキャンすると、次の2つのイベントがプッシュされます.
ユーザーがまだ公衆番号に注目していない場合、ユーザーは公衆番号に注目することができ、注目した後、微信はシーン値付きの注目イベントを開発者にプッシュする.
ユーザーが公衆番号に注目している場合、ユーザーがスキャンした後に自動的にセッションに入ると、微信はシーン値スキャンイベントを開発者にプッシュします.
詳細については、公式ドキュメントを参照してください.https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1443433542
ご存知のように、ユーザーがスキャンや公衆番号にメッセージを送信したり操作したりすると、サーバは対応するXMLデータを受信します.
しかし、QRコードをスキャンすると、XMLにはシーン価値フィールド情報が含まれます.
  	  
ToUserName	      
FromUserName	     (  OpenID)
CreateTime	       (  )
MsgType	    ,event
Event	    ,subscribe
EventKey	  KEY ,qrscene_   ,          
Ticket	    ticket,          

以上の場合、easywechatと組み合わせて、以下を使用します.
シーン値は文字列、または整数で指定できます.
scene_id	   ID,       32  0  ,          100000(       1--100000)
scene_str	   ID(      ID),     ,     1 64
$result = $app->qrcode->temporary('foo', 6 * 24 * 3600);
//        ,'foo'    ,6 * 24 * 3600  6 ,     ,   30 ,   30 
// $result
// (
//     [ticket] => gQFD8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTmFjVTRWU3ViUE8xR1N4ajFwMWsAAgS2uItZAwQA6QcA
//     [expire_seconds] => 518400
//     [url] => http://weixin.qq.com/q/02NacU4VSubPO1GSxj1p1k
// )
//       
$result = $app->qrcode->forever(56);//    $app->qrcode->forever("foo");
// Array
// (
//     [ticket] => gQFD8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyTmFjVTRWU3ViUE8xR1N4ajFwMWsAAgS2uItZAwQA6QcA
//     [url] => http://weixin.qq.com/q/02NacU4VSubPO1GSxj1p1k
// )
//         ticket        
$url = $app->qrcode->url($ticket);
//$url = https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEp8jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAydjRMZ05IdDVjRjAxMDAwMDAwM1cAAgTquLRaAwQAAAAA
//          ,  ,         
$content = file_get_contents($url); //          
file_put_contents(__DIR__ . '/code.jpg', $content); //     
        ,            :
        $app = app('wechat.official_account');
        $app->server->push(function($message){
            return $message['EventKey'];//            ,         
        });
        return $app->server->serve();

または、次のようにしてシーン値を取得します.
        $app = app('wechat.official_account');
        $msg = $app->server->getMessage();
        $app->server->push(function($message) use ($msg){
            return $msg['EventKey'];
        });
        return $app->server->serve();