微信的二维码分为两种:临时的和长期的
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。