首页 > 编程语言 >PHP实现生成二维码代码展示

PHP实现生成二维码代码展示

时间:2023-02-01 01:44:05浏览次数:42  
标签:ch 展示 url scene 二维码 action ticket PHP

PHP实现生成二维码代码展示

本文为小伙伴们带来的是关于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实现生成二维码代码展示的全部内容了,感兴趣的小伙伴记得点击关注哦。

标签:ch,展示,url,scene,二维码,action,ticket,PHP
From: https://www.cnblogs.com/10zhan/p/17081299.html

相关文章

  • uniapp 项目的 echarts 图表本地可以展示,同事打包后 echarts 图表无法显示
    造成问题的原因本地开发环境装了百度图表echarts插件,代码提交SVN后,同事获取下来打包发布,发布后发现线上的图表无法加载出来这个同事专门负责发版本之类的,减少生产......
  • MAUI Blazor学习6-扫描二维码
    MAUIBlazor学习6-扫描二维码 MAUIBlazor系列目录MAUIBlazor学习1-移动客户端Shell布局-SunnyTrudeau-博客园(cnblogs.com)MAUIBlazor学习2-创建移动客户端Ra......
  • PHPMyWind支持Word自动导入
    ​ 项目需求可发布文章需求涉及到富文本编辑器经过查阅我选择了较为简便不需要后端支持可独立完成的tinymce框架官方文档也是相当完整虽然都是全英文但是有强大的......
  • PHPMyWind支持Word自动上传
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordAction......
  • php in_array 遍历,in_array大数组查询性能问题
    问题最近在实现一个项目接口的时候发现当数组过大的时候,数据返回的速度有点慢。接口数据返回最长反应时间2s,经过反复调试发现代码段耗时最长的部分在in_array()函数。解决......
  • PHPMyWind编辑器支持PowerPoint上传
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action......
  • vue.js客服系统实时聊天项目开发(十四)点击加载展示历史消息列表
    当访客一进去聊天界面以后,需要获取一下历史消息展示到界面,并且需要能分页的原理展示  在顶部有一个加载更多记录的按钮,点击就能按分页获取数据//展示......
  • phpstorm xdebug设置
    填写上配置的url地址即可,端口如果不是80就自己填写为自己设置的端口最后打开顶部调试模式startlisiteningforphpdebug设置断点访问地址添加上?XDEBUG_SESSION......
  • 根composer.json需要php^8.0,但您的php版本(7.4.27)不满足该要求
    我安装了php7.4,但当我在项目中写入composerinstall时,我看到了以下错误:Rootcomposer.jsonrequiresphp^8.0butyourphpversion(7.4.27)doesnotsatisfythatreq......
  • Java签名排序,实现php的ksort升序排序
    php这边是需要使用ksort排序生成签名平台要求通用签名生成步骤按照键字母进行正序排序(ASCII码从小到大排序【字典序】)#排序之后的参数按照key+value+key+val......