首页 > 编程语言 >生成小程序二维码

生成小程序二维码

时间:2024-04-16 10:14:56浏览次数:12  
标签:ch setopt 程序 token 生成 二维码 curl data CURLOPT

    public function getCode()
    {
        $access_token = $this->getAccessToken();
        $width = 430; //二维码宽度
        $page = 'pages/index/index';//小程序路径(pages/index/index)
        $scene = '?type=1&user_id='.$this->auth->id; //携带的参数(?id=1&tag=2)
        $wx_api = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$access_token;
        $data = [
            'page'      => $page,
            'scene'     => $scene,
            'width'     => $width,
        ];
        $post_data  = json_encode($data);
        $result     = $this->getCurlQRcode($wx_api, $post_data); //获取微信小程序二维码
        print_r($result);exit;
        $filename = md5($this->auth->id);
        $qrcodePath = ROOT_PATH . 'public/uploads/qrcode/' . date('Ymd') . '/';
        if (!is_dir($qrcodePath)) {
            @mkdir($qrcodePath);
        }
        file_put_contents('./uploads/qrcode/'.date('Ymd')."/".$filename.'.png', $result, true);
        $path ='/uploads/qrcode/'.date('Ymd')."/".$filename.'.png';
        return $path;
    }
    
    function getCurlQRcode($url, $data)
    {
        $ch = curl_init();
        $header = array("Accept-Charset: utf-8");
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $tmpInfo = curl_exec($ch);
        if (curl_errno($ch)) {
            return false;
        }else{
            return $tmpInfo;
        }
    }

    /**
     * @return mixed|void
     * @ 获取token
     */
    public function getAccessToken()
    {
        $appid = config('site.app_id');
        $app_secret = config('site.app_secret');
        $url = "https://api.weixin.qq.com/cgi-bin/stable_token";
        $data = [
            'grant_type' => 'client_credential',
            'appid' => $appid,
            'secret' => $app_secret,
        ];
        $result = $this->httpPost($url, $data);
        if (isset($result['access_token']) && !empty($result['access_token'])) {
            return $result['access_token'];
        } else {
            $this->error('微信授权失败,错误码:'.$result['errmsg']);
        }
    }

    /**
     * 以post方式发起请求
     * @param $url
     * @param $data
     * @return bool|mixed
     */
    function httpPost($url, $data)
    {
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
        list($content, $status) = array(curl_exec($curl), curl_getinfo($curl), curl_close($curl));
        return (intval($status["http_code"]) === 200) ? json_decode($content, true) : false;
    }

 

标签:ch,setopt,程序,token,生成,二维码,curl,data,CURLOPT
From: https://www.cnblogs.com/ixiangang06/p/18137505

相关文章

  • 如何在Rust程序项目中安全地使用外部或是项目目录下的文件?
    在开发程序的时候难免会需要在程序中引入外部的文件,为了方便管理我们也常会将这些文件放置在程序项目目录下。然而在代码撰写程序路径于运行阶段读取文件时,文件路径的正确性需要等到运行阶段的时候才会知道,就算写错了而找不到这个文件,程序项目也是能成功通过编译,这就会使得程序在......
  • JAVA各种系统架构图,终于有人把Java程序员必学知识点全整理出来了
    JAVA各种系统架构图,终于有人把Java程序员必学知识点全整理出来了1.spring架构图Spring是一个开源框架,是为了解决企业应用程序开发复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为J2EE应用程序开发提供集成的框架。Spring框架的功能......
  • 全国海域潮汐表查询微信小程序详情教程及代码
    最近在做一个全国海域潮汐表查询,可以为赶海钓鱼爱好者提供涨潮退潮时间表及潮高信息。下面教大家怎么做一个这样的小程序。主要功能,根据IP定位地理位置,自动查询出省份或城市的港口,进入后预测7天内港口潮汐表查询。步骤:1.采集全部国海域港口数据。2.采集对应的港口数据每天潮汐表数......
  • 搭建 Windows GPU 服务器需要考虑多个方面,包括硬件选择、操作系统安装、驱动程序安装
    搭建WindowsGPU服务器需要考虑多个方面,包括硬件选择、操作系统安装、驱动程序安装、软件配置等。以下是一个简单的指南,介绍了搭建WindowsGPU服务器的基本步骤:1.硬件选择选择适合您需求的硬件配置,包括GPU、CPU、内存和存储。GPU是关键的组件,应根据您的应用需求选择......
  • Python迭代器与生成器
    一、迭代器和生成器的定义可迭代对象并不是指某一个数据类型,而是特指存储了元素的一个容器对象。这里的容器对象可以具象为:列表、字典、元组、字符串、range都算是一个"容器"。可迭代对象有个方法叫_iter_()方法,翻译过来叫做迭代。纯可迭代对象的内部数据"所见即所得",可迭代的数......
  • [题解][2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛] Type The Str
    题目描述给定n个字符串,有以下几种操作:打出一个字符,花费1。删除一个字符,花费1。复制并打出一个之前打出过的字符串,花费k。求打出所有n个字符串的最小花费。(注意,打出顺序和字符串输入的顺序不必相同)题解显然,操作3需要算字符串的最长公共子序列来处理。这个问题可以转换为......
  • 记一次对某高校微信小程序的漏洞挖掘
    挖掘目标的部署在微信的资产(减少信息的收集,毕竟一般web站点没有账号密码不好进入后台,挖掘功能点少)1.寻找目标的微信小程序(非原图)2.招生小程序打不开,只能挖掘管理系统进入后发现存在上报安全隐患功能,可以上传图片3.准备上传shell发现控制上传名字参数为name,不是filename......
  • [题解][2021-2022年度国际大学生程序设计竞赛第10届陕西省程序设计竞赛] Hash
    题目描述给定字符串T,要求求字符串S,满足以下条件:S是T的前缀S和T运行某段代码的哈希值相同(代码见下)T只包含小写字母S和T的长度差不超过50哈希代码://LanguageC++14longlongmod=5999993;longlonggethas(strings){longlongret=0;for(charc:s)ret=......
  • java连接ssmsSqlserver数据库 报错信息:com.microsoft.sqlserver.jdbc.SQLServerExce
    解决办法:将官网下载的驱动文件打开,找到如下路径,并复制,粘贴放到jdk的bin目录下......
  • 揭秘智能写手GPT的测试报告生成技巧
    简介测试报告的主要目的是提供与测试结果相关的数据信息,以便项目团队、开发人员、管理层和其他相关方可以了解测试的结果,并做出基于这些结果的明确下一步的决策,以及下一个版本的改进方向。通常一个测试报告会包含:测试执行情况问题汇总问题详情测试结果分析风险评估建议和......