服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - PHP教程 - PHP实现生成二维码的示例代码

PHP实现生成二维码的示例代码

2022-11-10 16:03PHP开源社区 PHP教程

为了满足用户渠道推广分析和用户账号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。本文将利用这些接口实现生成临时二维码和永久二维码,需要的可以参考一下

前言

为了满足用户渠道推广分析和用户账号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

1、目前有2种类型的二维码

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

2、用户扫描带场景值二维码时,可能推送以下两种事件

  • 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
  • 如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。

获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。

3、创建二维码ticket

每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。

4、临时二维码请求说明

http请求方式: POST

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

POST数据格式:json

POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

或者也可以使用以下POST数据创建字符串形式的二维码参数:

{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

5、永久二维码请求说明

http请求方式: POST

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

POST数据格式:json

POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

 或者也可以使用以下POST数据创建字符串形式的二维码参数:

{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

6、临时二维码和永久二维码生成实现的代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
       //临时二维码
    public function getQrls()
{
        $accessToken = $this->_getWxAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}";
        $postArr =  [
            "action_name" => "QR_SCENE",
            "expire_seconds" => 604800,
            "action_info" => [
                'scene' => ['scene_id' => 2000],
              ],
           ];
 
        $postJson = json_encode($postArr);
        $res = $this->ch($url, 'post', 'json', $postJson);
 
        $ticket = $res['ticket'];
        $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
 
        echo "<img src='".$url."'>";
 
    }
 
    //永久二维码
    public function getQryj()
{
        $accessToken = $this->_getWxAccessToken();
        $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$accessToken}";
        $postArr =  [
            "action_name" => "QR_LIMIT_SCENE",
            "action_info" => [
                'scene' => ['scene_id' => 3000],
              ],
           ];
 
        $postJson = json_encode($postArr);
        $res = $this->ch($url, 'post', 'json', $postJson);
 
        $ticket = $res['ticket'];
        $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);
 
        echo "<img src='".$url."'>";
    }
     
    //url请求
    private function ch($url, $type='get', $res='json', $arr='')
{
 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
 
        if ($type == 'post') {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $arr);
        }
 
        $cnt = curl_exec($ch);
        if (curl_errno($ch)) {
            return;
        }
 
        curl_close($ch);
 
        if ($res == 'json') {
            return json_decode($cnt, true);
        }
 
        return $cnt;
    }

生成临时、永久二维码的图片这里就不放了,感兴趣的可以自己运行一下哈。

到此这篇关于PHP实现生成二维码的示例代码的文章就介绍到这了,更多相关PHP生成二维码内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://mp.weixin.qq.com/s/2StZYohMCFmzLGO72CKW0w

延伸 · 阅读

精彩推荐
  • PHP教程分享PHP守护进程类

    分享PHP守护进程类

    这篇文章主要介绍了PHP守护进程类,守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的...

    PHP教程网1762020-12-12
  • PHP教程PHP Web木马扫描器代码分享

    PHP Web木马扫描器代码分享

    本篇文章给大家分享一段代码,php web木马扫描器。需要的朋友直接复制代码,就可以使用了,代码超简单,附有注释,需要的朋友可以参考下...

    PHP教程网5042020-11-19
  • PHP教程php绘制一个扇形的方法

    php绘制一个扇形的方法

    这篇文章主要介绍了php绘制一个扇形的方法,涉及GD库中imagefilledarc方法的使用技巧,需要的朋友可以参考下...

    PHP中文网2562020-08-31
  • PHP教程Laravel5中实现模糊匹配加多条件查询功能的方法

    Laravel5中实现模糊匹配加多条件查询功能的方法

    这篇文章主要介绍了Laravel5中实现模糊匹配加多条件查询功能的方法,结合实例形式分析了Laravel5多条件模糊查询及相关封装操作技巧,需要的朋友可以参考下...

    勋彰5292019-10-15
  • PHP教程php使用ftp实现文件上传与下载功能

    php使用ftp实现文件上传与下载功能

    这篇文章主要为大家详细介绍了php使用ftp实现文件上传与下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    梁吉林11532021-06-07
  • PHP教程mac下使用brew配置环境的步骤分享

    mac下使用brew配置环境的步骤分享

    mac下使用brew配置环境的步骤分享,需要的朋友可以参考下。 ...

    PHP教程网5882019-11-25
  • PHP教程php之redis短线重连案例讲解

    php之redis短线重连案例讲解

    这篇文章主要介绍了php之redis短线重连案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    flysnownet5532021-11-23
  • PHP教程PHP PDO操作MySQL基础教程

    PHP PDO操作MySQL基础教程

    这篇文章主要介绍了PHP PDO操作MySQL的方法,结合实例形式详细分析了php开启pdo及数据库创建、连接与增删改查相关操作技巧,需要的朋友可以参考下...

    PHP开发学习门户4412021-05-24