thinkPHP 微信生成带参数的二维码

2024-09-01 15:48

本文主要是介绍thinkPHP 微信生成带参数的二维码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

//生成二维码(我使用的是phpqrcode生成二维码)

public function getUserQRcode($userid=0){
$qrurl=$this->getTicket($userid);
//echo $qrurl;
$url="http://你的域名/phpqrcode/index2.php?qrurl={$qrurl}";
$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);
$outopt = curl_exec($ch);
curl_close($ch);

//echo $outopt;

$userinfo=M("users")->where(array("userid"=>$userid))->find();
unlink($userinfo['qrcode']);
//更新二维码
$upuser["qrcode"]=$outopt;
$result=M("users")->where(array("userid"=>$userid))->save($upuser);

}

//获取生成带参数的二维码图片路径,然后把这个路径使用phpqrcode生成二维码

public function getTicket($userid=0){
$accessToken = $this->getAccessToken();
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$accessToken;
$data='{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": "'.$userid.'"}}}';
$res = $this->httpPost($url,$data);
//echo $res;
$result = json_decode($res, true);
return $result['url'];
//echo urldecode($result['url']);
}

public function httpPost($url, $data = null)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}

//获取微信access_token

public function getAccessToken() {
// 如果是企业号用以下URL获取access_token
// $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".你的微信公众号APPID."&secret=".你的微信公众号APPSECRET;
$res = json_decode($this->httpGet($url));
$access_token = $res->access_token;
return $access_token;
}

public function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);


$res = curl_exec($curl);
curl_close($curl);


return $res;
}

phpqrcode.php代码自己从网上下载

phpqrcode代码index2.php

<?php    
include 'phpqrcode.php'; 

if(isset($_GET["qrurl"])&&$_GET["qrurl"]!=""){
$qrurl=$_GET["qrurl"];

//自动生成二维码

$remWord=date("YmdHis",time()).rand(1000,9999);

$value = $qrurl;//二维码内容
//$value = $remUrl;//二维码内容
$errorCorrectionLevel = 'L';//容错级别 
$matrixPointSize = 6;//生成图片大小 

//生成二维码图片 
QRcode::png($value, "qrupload/".$remWord.'.png', $errorCorrectionLevel, $matrixPointSize, 2); 
$logo = 'logo.jpg';//准备好的logo图片 
$QR = "qrupload/".$remWord.'.png';//已经生成的原始二维码图 
 
if ($logo !== FALSE) { 
$QR = imagecreatefromstring(file_get_contents($QR)); 
$logo = imagecreatefromstring(file_get_contents($logo)); 
$QR_width = imagesx($QR);//二维码图片宽度 
$QR_height = imagesy($QR);//二维码图片高度 
$logo_width = imagesx($logo);//logo图片宽度 
$logo_height = imagesy($logo);//logo图片高度 
$logo_qr_width = $QR_width / 20; 
$scale = $logo_width/$logo_qr_width; 
$logo_qr_height = $logo_height/$scale; 
$from_width = ($QR_width - $logo_qr_width) / 2; 
//重新组合图片并调整大小 
imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, 
$logo_qr_height, $logo_width, $logo_height); 

imagepng($QR, "qrupload/".$remWord.'.png');

echo 'public/phpqrcode/qrupload/'.$remWord.'.png';

}

?>

这篇关于thinkPHP 微信生成带参数的二维码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127371

相关文章

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P