获取微信小程序二维码

news2024/11/25 16:34:57

可直接通过微信扫描小程序二维码直接进入小程序,可用在分享推广业务。

目录

Curl请求方法

获取小程序token

获取小程序二维码

参数说明

注意

请求结果


Curl请求方法

需要请求微信小程序的API接口,封装好curl请求方法。

代码如下:

/**
 * 请求接口返回内容
 * @param $url :请求的URL地址
 * @param $method :请求方式POST|GET
 * @param $params :请求的参数
 * @param $header : 请求头
 * @return bool|string
 */
protected function linkCurl($url, $method, $params = array(), $header = array())
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_FAILONERROR, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    if (strpos("$" . $url, "https://") == 1) {
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    }
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
    curl_setopt($ch, CURLOPT_TIMEOUT, 60);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    if ($method == "POST") {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
    } else if ($params) {
        curl_setopt($ch, CURLOPT_URL, $url . '?' . http_build_query($params));
    }
    $response = curl_exec($ch);
    if ($response === false) {
        return false;
    }
    curl_close($ch);
    return $response;
}

获取小程序token

通过小程序的Appid和secret获取小程序的access_token。

得到access_token后就可以调用小程序的功能接口了。

代码如下:

/**
 * 获取电子签小程序接口调用凭证
 * @return mixed
 */
protected function contractMiniAccessToken()
{
    $APPID = ‘小程序appid’;
    $SECRET = ‘小程序secret’;
    $url = "https://api.weixin.qq.com/cgi-bin/token?appid={$APPID}&secret={$SECRET}&grant_type=client_credential";
    $res = $this->linkCurl($url, 'GET');
    $res = djson($res);
    if (isset($res['errcode']) && $res['errcode']) {
        return toFail($res['errmsg']);
    }

    return toSuccess('success', $res['access_token']);
}

获取小程序二维码

参数说明

参数两个:

path:必填,扫描后打开小程序的路径;

width:非必填,图片的宽度,默认是430。

成功后不返回errcode,返回的是二维码图片的二进制内容,需要把它写入到文件中,保存到服务器本地最后返回给前端。

注意

如果直接返回图片二进制内容,只会响应空白。

代码如下:

**
 * 获取小程序二维码
 * @return array|mixed
 */
public function createQRCode()
{
    $fileName = './uploads/contractQr.png';
    if(!file_exists($fileName)) {
        $res = $this->contractMiniAccessToken();
        if ($res['status'] != 1) return $res;

        $url = 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' . $res['data'];
        $param = [
            'path' => 'pages/index/index',
            'width' => 230,
        ];
        $data = json_encode($param);
        $header = array();
        $header[] = 'content-type:application/json';
        $info = $this->linkCurl($url, 'POST', $data, $header);
        if (strlen($info) < 300) {
            $res = djson($res);
            if (isset($res['errcode']) && $res['errcode']) {
                return toFail($res['errmsg']);
            }
        }
        file_put_contents($fileName, $info);
    }

    return toSuccess('success', ['img' => getSolveUrl($fileName)]);
}

请求结果

{
    "status":1,
    "message":"success",
    "data":{
        "img":"http://new.solveset.com/uploads/contractQr.png"
    },
    "total":0
}

二维码示例

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1219687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

西浦成立产业家学院破解 “产业级” 问题!AMT企源成首批合作机构

在推动高质量发展的国家战略背景下&#xff0c;从集成电路到人工智能&#xff0c;从新能源到绿色低碳&#xff0c;从健康养老到数字文创&#xff0c;无论国家还是区域都面临着产业转型升级或突破创新的发展需求&#xff0c; 这些 “产业级” 问题的难度远非单个企业层面问题可比…

C++泛型编程——模板(初识)

C泛型编程——模板&#xff08;初识&#xff09; 文章目录 C泛型编程——模板&#xff08;初识&#xff09;1. 泛型编程的概念2. 模板2.1 模板格式2.2 函数模板2.3 函数模板的实例化2.3.1 隐式&#xff08;推演&#xff09;实例化2.3.2 显式实例化 2.3 类模板3. 模板的本质 本章…

【教学类-36】八等分格子-A4竖版-4条(制作皇冠、戒指)

背景需求&#xff1a; 最近在大四班孩子中间普及铅画纸制作“方盒”的活动&#xff0c;目前进展到使用三条8等分的长条纸&#xff0c;制作一个“坚硬的、不漏底”的方盒。 实验后&#xff0c;我想试试如果缩小纸条长宽&#xff0c;是不是可以做“迷你”纸盒。 目的&#xff…

为什么别人年薪30W+?同样为测试人,“我“的测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、软件测试员&am…

可变形卷积 DeformConv2d

可变性卷积 前言为什么要用DConv普通卷积和与可变形卷积计算过程普通卷积计算过程Pytorch官方API可变形卷积计算过程 参考资源 前言 可变形卷积即DCN&#xff08;缩写取自Deformable ConvNets&#xff09;提出于ICCV 2017的paper: Deformable Convolutional Networks 论文pape…

【LLM之基座】qwen 14b-4int 部署踩坑

由于卡只有24G&#xff0c;qwen14b 原生需要 30GB&#xff0c;按照官方团队的说法&#xff0c;他们用的量化方案是基于AutoGPTQ的&#xff0c;而且根据评测&#xff0c;量化之后的模型效果在几乎没有损失的情况下&#xff0c;显存降低到13GB&#xff0c;妥妥穷狗福音&#xff0…

vue使用navigator.mediaDevices.getUserMedia调用相机功能

目录 前言&#xff1a; API&#xff1a; API简单示例&#xff1a; 拍照功能 实现效果&#xff1a; 前言&#xff1a; 本文将介绍Vue中如何使用navigator.mediaDevices.getUserMedia调用相机功能&#xff0c;实现拍照使用实例&#xff0c;需要的朋友可以参考一下。 注意…

02_SHELL编程之流程控制和循环语句

课程目标 熟悉流程控制语句基本语法&#xff0c;如if…else… 掌握for循环语句的基本语法结构 掌握while和until循环语句的基本语法结构 ###一、流程控制语句 ####1. 基本语法结构 F: false 假 T: true 真 if [ condition ];thencommandcommand fi ​ [ 条件 ] &&a…

NSSCTF第12页(3)

[NSSCTF 2nd]php签到 首先&#xff0c;代码定义了一个名为 waf 的函数&#xff0c;用于执行一个简单的文件扩展名检查来防止上传恶意文件。 $black_list 是一个存储不允许的文件扩展名的数组&#xff0c;如 “ph”、“htaccess” 和 “ini”。 pathinfo($filename, PATHINF…

拥抱开源生态,算能携手软件所 PLCT 实验室联合举办 RISC-V 软件移植优化锦标赛

&#xff08;引言&#xff09;为推动RISC-V软件生态加速发展&#xff0c;算能作为RISC-V生态的领先企业&#xff0c;与RISC-V 中国社区、中科院软件所PLCT实验室联合发起“RISC-V软件移植及优化锦标赛”活动&#xff0c;以桌面和服务器软件生态为重点&#xff0c;在编译器、运行…

2023-11-17 LeetCode每日一题(最大和查询)

2023-11-17每日一题 一、题目编号 2736. 最大和查询二、题目链接 点击跳转到题目位置 三、题目描述 给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 &#xff0c;另给你一个下标从 1 开始的二维数组 queries &#xff0c;其中 queries[i] [xi, yi] 。 对于…

SOLIDWORKS参数化设计之主参数设置

SOLIDWORKS参数化设计是通过主参数来驱动整个模型的变化&#xff0c;因此确定主参数是很重要的部分。主参数可以是数值&#xff0c;也可以是条件&#xff0c;可以手动输入&#xff0c;也可以做成下拉列表。今天我们就来看看主参数的下拉列表是如何做到的。 SolidKits.AutoWork…

近期局势较多变化 适合黄金代理入场吗?

进入本年的四季度后&#xff0c;中东局势出现了比较大的变化。首先&#xff0c;巴以冲突不断的加剧&#xff0c;而且马来西亚的林吉特出现大幅贬值&#xff0c;甚至有市场论调认为&#xff0c;亚洲金融危机可能会重新点燃。从这个角度来说&#xff0c;整体的市场环境是很动荡的…

波卡三季度报告:已实现白皮书目标,异步支持与应用链技术推进

作者&#xff1a;Nicholas Garcia&#xff0c;Messari 研究分析师 编译&#xff1a;OneBlock 来源&#xff1a;https://messari.io/report/state-of-polkadot-q3-2023 知名分析平台 Messari 发布了 Polkadot 2023 年第三季度报告&#xff0c;分析了波卡的关键数据指标以及网…

【蓝桥杯选拔赛真题23】C++计算24 第十二届蓝桥杯青少年创意编程大赛C++编程选拔赛真题解析

C/C++计算24 第十二届蓝桥杯青少年创意编程大赛C++选拔赛真题 一、题目要求 1、编程实现 “计算 24”是一个流传已久的数字游戏,小蓝最近对此痴迷不已 游戏规则是:从 1~10 之间的自然数任意拿出 4 个数(4 个数各不相同,顺序随机),进行加、减、乘三种运算(使用某种运算…

0基础如何学习软件测试?10分钟给你安排明白

先上一张学习路线&#xff1a; 在测试行业已经呆了5年多了&#xff0c;也算得上行业经验资深了吧&#xff0c;基本上也是摸清了这个行业的发展。 所以今天也想对有转行想法的朋友分享一下经验&#xff0c;能够让你对这个行业有个大致的了解和对以后的发展有所规划&#xff0c;…

9.3 【MySQL】系统表空间

了解完了独立表空间的基本结构&#xff0c;系统表空间的结构也就好理解多了&#xff0c;系统表空间的结构和独立表空间基本类似&#xff0c;只不过由于整个MySQL进程只有一个系统表空间&#xff0c;在系统表空间中会额外记录一些有关整个系统信息的页面&#xff0c;所以会比独立…

Android Proguard混淆

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、语法规则3.1 输入/输出选项3.2 保留选项3.3 缩…

车载终端功能盘点(车载终端工业行业解决方案案例)

​ 随着车联网的蓬勃发展,车载终端在物流运输、公共交通等领域得到广泛应用。车载终端以其强大的功能,为不同行业提供定制化的解决方案。本文将盘点车载终端的核心功能,并给出工业场景的应用案例。 一、车载终端SV900的核心功能 1. 车辆定位 车载终端集成高灵敏度的GPS模块,…

鉴源论坛 · 观模丨软件单元测试真的有必要吗?(下)

作者 | 包丹珠 上海控安产品总监 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” “软件单元测试真的有必要吗&#xff1f;&#xff08;上&#xff09;”一文中&#xff0c;着重探讨了单元测试的重要性及其正面临的困境&#xff0c…