微信公众号开发(八)生成带参数二维码,以及将二维码下载至本地

简介: 微信的二维码真是个神奇的东西。在我们开发中,应用也是很多~用户扫描带场景值(参数)二维码时,可能推送以下两种事件:

微信的二维码真是个神奇的东西。在我们开发中,应用也是很多~

用户扫描带场景值(参数)二维码时,可能推送以下两种事件:

如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

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

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

以上这部分是官方给我们的扫描带参数二维码的一个解释……嗯,很官方。看着感觉好难的样子,其实就那样。

逻辑部分,官方已经给出,我就不赘述了,读懂上边官方文档中的那段话的逻辑就好。

下边,有我在实际项目中应用的创建带参数二维码并且,在创建成功之后下载到本地的一个方法,具体的,代码中都有注释。

php

复制代码

/**
     * @name: 创建签到/签出/学生二维码
     * @desc: 描述
     * @author: camellia
     * @date: 20201201
* @email: guanchao_gc@qq.com
     * @param:  $open_id    string  1234@@@sign_in  1234@@@sign_out  1234@@@scan_add
     */
    public function createQrCode($open_id)
{
    // 获取 access_token 代码
        $access_token = $this->access_token();
        $ch = curl_init("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token");
        $jsondata['expire_seconds'] = 86400;
        $jsondata['action_name'] = 'QR_STR_SCENE';
        $jsondata['action_info']['scene']['scene_str'] = $open_id;
        $jsondata['action_info']['scene']['scene_sign'] = 'sign_in';
        $data = json_encode($jsondata);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $res = curl_exec($ch);
        $tickarr = json_decode($res, true);
        $url = $this->createQrCodeByTick($tickarr['ticket']);
        return $url;
    }
    /**
     * @name: 创建签到/签出/学生二维码
     * @desc: 描述
     * @author: camellia
     * @date: 20210917
      * @email: guanchao_gc@qq.com
     * @param:  $ticket string  唯一字符串
     */
    public function createQrCodeByTick($ticket)
    {
        $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . urlencode($ticket);
        $imageInfo = $this->downLoadWeiXinQrcode($url);
        $filename = 'qrcode_' . date("Y-m-d_H_i_s") . '.jpg';
        $filepath = './uploads/openQrcode/' . $filename;
        $local_file = fopen($filepath, 'w');
        if (false !== $local_file) {
            if (false !== fwrite($local_file, $imageInfo['body'])) {
                fclose($local_file);
            }
        }
        $url = getenv('APP_URL') . "/xxxxxx/xxx/xxxxxxxxx/public/ " . $filename;
        return $url;
    }
    /**
     * @name: 下载微信生成的二维码
     * @author: camellia
     * @date: 2021-12-08
* @email: guanchao_gc@qq.com
     * @param:  $url    string  二维码链接
     */
    public function downLoadWeiXinQrcode($url)
    {
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_NOBODY, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $package = curl_exec($ch);
        $httpinfo = curl_getinfo($ch);
        curl_close($ch);
        return array_merge(
            array('body' => $package),
            array('header' => $httpinfo)
        );
    }

上边的代码中,获取access_token的方法使用的是我封装的公共方法,详情请移步《微信公众号开发(二)微信公众号的access_token

除了这部分,其他的应该不需要做太多的修改就可以使用了。

有好的建议吗,请在下方输入你的评论。

欢迎访问个人博客 guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

目录
相关文章
|
3月前
|
算法 小程序 Java
java制作海报三:获取微信二维码详情,并改变大小,合成到海报(另一张图片)上
这篇文章介绍了如何使用Java获取微信小程序的二维码,并将其调整大小后合成到海报(另一张图片)上。
69 0
|
5月前
|
小程序 开发者
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
这篇文章介绍了微信小程序的初始化过程,包括如何注册微信小程序账号、下载微信小程序开发者平台,并指导了新建小程序的详细步骤。
第一个微信小程序的初始化过程、小程序微信开发平台的下载、如何注册一个微信小程序的账号
|
5月前
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
|
6月前
|
小程序 前端开发
【非常全】微信小程序下载图片到相册,微信小程序自动获取分享图片到相册
【非常全】微信小程序下载图片到相册,微信小程序自动获取分享图片到相册
423 3
|
6月前
|
前端开发 小程序
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
【微信小程序-原生开发】实用教程20 - 生成海报(实战范例为生成活动海报,内含生成指定页面的小程序二维码,保存图片到手机,canvas 系列教程)
440 0
|
6月前
|
小程序 开发工具 开发者
入职必会-开发环境搭建31-微信开发者工具下载和安装
微信开发者工具是一款由微信官方推出的开发工具,旨在帮助开发者更高效地进行微信小程序和微信公众号的开发与调试。该工具集成了代码编辑、代码上传、实时预览、调试等功能,能够提供便捷的开发环境和调试工具,帮助开发者快速定位和解决问题。
|
6月前
|
API
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
支付系统----微信支付24--APlv3介绍,首先我们要引入支付参数,包含商户号,APPID、API秘钥,数字证书,用代码加载到应用程序当中,之后加载商户私钥,商户需要用私钥进行验签,微信平台接收商
|
6月前
|
前端开发
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
支付系统--微信支付21--搭建前端环境,payment-demo-front这个项目文件夹是前端显示文件,payment-demo是后端项目,支付页面常见三个页面:购买课程,我的订单,下载账单
|
6月前
|
小程序 开发工具 开发者
【微信小程序-原生开发】实用教程01-注册登录账号,获取 AppID、下载安装开发工具、创建项目、上传体验
【微信小程序-原生开发】实用教程01-注册登录账号,获取 AppID、下载安装开发工具、创建项目、上传体验
112 0
|
7月前
|
Java
微信公众号素材下载之java
微信公众号素材下载之java

相关实验场景

更多