首页 > 编程语言 >PHP生成微信小程序太阳码

PHP生成微信小程序太阳码

时间:2024-11-18 15:46:31浏览次数:3  
标签:ch setopt 微信 生成 access token curl PHP CURLOPT

先获取微信的接口调用凭证

function accessToken($appId, $appSecret)
{
    $tokenFile = 'access_token.json';// 保存的access_token
    $data = json_decode(file_get_contents($tokenFile));
    if ($data->expire_time < time()) {
        // 调用微信接口获取access_token
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appId&secret=$appSecret";
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $result = curl_exec($ch);
        file_put_contents('zkm.txt', print_r($result, true));
        $result = json_decode($result, true);
        $accessToken = $result['access_token'];
        if ($accessToken) {
            $data->expire_time = time() + 7000;// access_token的有效时间为2个小时,可以少设置一点时间
            $data->access_token = $accessToken;
            file_put_contents($tokenFile, json_encode($data));// 写入文件
        }
    } else {
        $accessToken = $data->access_token;
    }
    return $accessToken;
}

其中的access_token.json是保存凭证的文件,token有两个小时的有效期,可以保存下来反复使用,保存方法可以存缓存或者存数据库,按自己的习惯来即可

{"expire_time":0,"access_token":"access_token"}

最后调用微信接口生成太阳码并保存

/**
 * 生成小程序太阳码
 * @param $path string 小程序路径
 * @param $filepath string 生成图片文件夹
 * @param $filename string 生成图片名
 * @param $scene string 参数
 * @param int $width 生成图片大小
 * @return string
 */
function sunCode(string $filepath, string $filename, string $scene, string $path, int $width = 430): string
{
    $appId = "你的appId";
    $appSecret = "你的appSecret";
    $accessToken = accessToken($appId,$appSecret);
    $postData = array(
        "page" => $path,
        "scene" => $scene,
        "width" => $width,
        "env_version" => "release",// 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
        "is_hyaline" => true,// 默认是false,是否需要透明底色,为 true 时,生成透明底色的小程序(需要拼接到海报上可用此参数)
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=$accessToken");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 500);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
    $exec  = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if (empty($error)) {
        file_put_contents($filepath . $filename, $exec);
        return $filepath . $filename;
    }else{
        return "";
    }
}
$filepath = "uploads/";// 保存的路径
$filename = rand(100000, 999999) . '.png';// 图片名称
$scene = 'params';// 太阳码携带的参数
$path = 'pages/index/index';// 需要跳转的小程序页面路径
$image = sunCode($filepath, $filename, $scene, $path);
echo $image;

标签:ch,setopt,微信,生成,access,token,curl,PHP,CURLOPT
From: https://blog.csdn.net/zkxiaoxiangzhu/article/details/143859127

相关文章

  • 【PhpStorm 2024 软件下载与入门级安装教程】-高效智能的 PHP IDE
    支持主流框架PhpStorm完美支持Symfony、Drupal、WordPress、ZendFramework、Laravel、Magento、Joomla!、CakePHP、Yii...等各种主流框架。全能的PHP工具内建编辑器实际“了解”您的代码并且深刻理解其结构,支持所有PHP语言功能,在开发现代技术和维护遗留项目皆可完美适用。......
  • 详细!基于php+mysql的同城交友圈子,如何保证源码的安全性?
    一、圈子系统架构前端:Uniapp-vue2.0后端:Thinkphp6前后端分离 系统支持:H5+小程序+双端APP(安卓+苹果)二、社区圈子源码安全性如何保证?权限控制:在开发过程中,通过设置严格的权限控制,确保开发人员只能访问与其工作相关的源代码部分,防止敏感信息的泄露。加密源代码:对源代码进......
  • 小寄巧——给洛谷题单快速生成一份目录
    以此题单为例,首先我们在浏览器中打开,F12切换到Console,输入document.querySelectorAll(".titlea"),然后复制返回的所有内容,粘贴到VSCode里,内容大致如下:NodeList(15)[a.title.color-default,a.title.color-default,a.title.color-default,a.title.color-default,a.title......
  • 生成 Windows 窗体 Blazor 应用 (WinForm+Bootstrap Blazor)
    官方文档有介绍如何用WinForm+ Blazor  生成应用,  生成Windows窗体Blazor应用 先按照官方文档启动VisualStudio。在“开始”窗口中,选择“创建新项目”:创建WinForm项目  起名为:WinFormsBlazor框架我们选择:.NET8.0 创建完成项目后,使用NuGet包管理器......
  • 【AI绘画】Alpha-VLLM 的 Lumina-Next:新一代图像生成器
    简介Lumina-Next-T2I是在Lumina-T2I成功基础上发展起来的尖端图像生成模型。它采用了带有2B参数模型的Next-DiT和Gemma-2B文本编码器,推理速度更快,生成样式更丰富,并增强了多语言支持。模型架构Lumina-Next-T2I的生成模型建立在Next-DiT骨干之上,文本编码器是......
  • 微信小程序手机号登录
    import{wxPhoneLogin,getPhoneNumber}from'../login'//后端接口//服务端接口-获取openidfunctionqueryOpenIdFn(code){returnnewPromise((resolve)=>{wxPhoneLogin({code,}).then((res:any)=>{if(res.code=......
  • 基于微信小程序的学生活动管理系统设计与实现
    目录一、项目背景二、系统架构图三、效果图展示四、主要代码五、获取源码一、项目背景由于APP软件在开发以及运营上面所需成本较高,而用户手机需要安装各种APP软件,因此占用用户过多的手机存储空间,导致用户手机运行缓慢,体验度比较差,进而导致用户会卸载非必要的APP,倒逼管......
  • 一款基于 Java 开发的微信数据分析工具!
    大家好,我是Java陈序员。今天,给大家介绍一款基于Java开发的微信数据分析工具!关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项目介绍wx-dump-4j——一款基于Java开发的微信数据分析工具。它准确显示好友数、群聊数和当日......
  • 【微信小程序毕业设计】鲜花销售小程序的设计与实现
    概述:某211院校在校计算机导师,让我成为您的校外毕业指导老师。为您的毕业之旅保驾护航,专业为大家做好毕业选题,课外辅导等工作。文章末尾处有资料的获取方式。点击获取即可。技术描述:后端实现-使用node.js作为开发语言,koa2作为接口开发框架数据库-mysql管理端-vue2.0编写管......
  • 【微信小程序毕业设计】基于Uniapp家教小程序的设计与实现
    概述:某211院校在校计算机导师,让我成为您的校外毕业指导老师。为您的毕业之旅保驾护航,专业为大家做好毕业选题,课外辅导等工作。文章末尾处有资料的获取方式。点击获取即可。技术描述:后端实现-使用node.js作为开发语言,koa2作为接口开发框架数据库-mysql管理端-vue2.0编写管......