微信开发之--生成二维码

时间:2024-02-22 16:40:55

  微信的二维码分为两种:临时的和长期的

1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

  你可以根据自己的需要获取适当的二维码,下面代码演示临时二维码的获取,永久二维码步骤一样只是参数上不同而已。

  获取二维码分两步,1、先获取ticket票据 2、根据ticket票据去获取二维码。

 1 /**
 2      * 获取二维码
 3      */
 4     public function getQrCode()
 5     {
 6         $token = getToken( config(\'TOKENURL\') );
 7         if( 1 != $token[\'code\'] ){
 8             return $token;
 9         }
10 
11         $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" . $token[\'token\'];
12         //{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
13         $data = [
14             \'expire_seconds\' => 604800,
15             \'action_name\' => \'QR_SCENE\',
16             \'action_info\' => [
17                 \'scene\' => [
18                     \'scene_id\' => 121
19                 ]
20             ]
21         ];
22 
23         $result = json_decode( curl( $url, json_encode( $data ), "POST"), true );
24 
25         //根据ticket获取二维码图片
26         $imgUrl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . urlencode( $result[\'ticket\'] );
27         echo "<img src=\'" . $imgUrl . "\'>";
28     }

  我这里演示的是通过tp5框架,不过看一下思路就行了。

  此时通过浏览器访问,就会获取二维码:

  

  记住代码中的 场景id 即scene_id,实际的应用中我们可以将这个值设置成我们的用户id,这样用户通过这个二维码推广,我们就可以记录每个人推广了多少个用户,方便统计。

  下面用过手机扫描这个二维码,就会向公众账号推送事件,如果已经关注了这个公众账号,那么他就会推送这些信息

  

  如果扫码的用户并没有关注这个账号,则推送关注事件,并且会传入以qrscene_为前缀,后面接scene_id。