PHP生成小程序二维码
/**
* [生成小程序二维码]
* @return [type] [description]
*/
public function makeMiniQrcode_do() { begin: $id = input('id');// 获取token
$ACCESS_TOKEN = $this->getAccesstoken();
// 准备进入小程序的参数
$param = json_encode(array("path" => "pages/shop/shop?mac=123", "width" => 150));
// 请求微信生成二维码接口
$request_url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN";
$result = httpRequest($request_url, $param, "POST");
// 准备文件名
$filename = date('YmdHis') . md5(time() . mt_rand(10, 99)) . '.png';
$filepath = "/public/img/miniqrcode/" . $filename;
// 将二进制图片写入文件
if (@$fp = fopen(ROOT_PATH . $filepath, 'w+')) {
fwrite($fp, $result);
fclose($fp);
}
// 判断写入图片是否正常 如果不正常 则再次请求
$info = getimagesize(ROOT_PATH . $filepath);
if (!$info) {
unlink(ROOT_PATH . $filepath);
goto begin;
}
// 二维码路径写入数据库
if (file_exists(ROOT_PATH . $filepath)) {
pdo_update(array('id' => $id), 'equipment', array('miniqrcode' => $filepath));
// header('Content-type:image/png');
// echo file_get_contents(ROOT_PATH . $filepath);
}
} /**
* [获取AccessToken]
* @return [type] [description]
*/
private function getAccesstoken() {
header('content-type:text/html;charset=utf-8');
//配置APPID、APPSECRET
$config = config('mini_program');
$APPID = $config['APPID'];
$APPSECRET = $config['APPSECRET'];
// 请求地址
$getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET"; $ACCESS_TOKEN = "";
// session中没有token
if (!isset($_SESSION['access_token']) || (isset($_SESSION['expires_in']) && time() > $_SESSION['expires_in'])) {
$jsonResult = httpRequest($getTokenUrl);
$jsonResult = json_decode($jsonResult, true);
// var_dump($json);
$_SESSION['access_token'] = $jsonResult['access_token'];
$_SESSION['expires_in'] = time() + 7200;
$ACCESS_TOKEN = $jsonResult["access_token"];
} else {
// session中有token 直接使用
$ACCESS_TOKEN = $_SESSION["access_token"];
}
return $ACCESS_TOKEN;
}
/**
* curl 请求
* @param [type] $url [请求地址]
* @param string $data [参数]
* @param string $method [请求方式]
* @return [type] [description]
*/
function httpRequest($url, $data = '', $method = 'GET') {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
if ($method == 'POST') {
curl_setopt($curl, CURLOPT_POST, 1);
if ($data != '') {
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
} curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
1
PHP生成小程序二维码的更多相关文章
- node 无脑生成小程序二维码图
RT 新建createwxaqrcode.js: const request = require('request') const fs = require('fs') // eg:生成购物车列表圆形 ...
- PHP生成小程序二维码合成图片生成文字
这部分代码是写在项目上的代码,THINKPHP3.1如果迁移到其他的地方应该要稍稍改动一下以适合自己的项目 function get_bbox($text,$fsize,$ffile){ return ...
- Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)
一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...
- 小程序二维码生成接口API
获取小程序码 我们推荐生成并使用小程序码,它具有更好的辨识度.目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口. 接口A: 适用于需要的码数量较少的业务场景 接口地址: http ...
- php生成微信小程序二维码源码
目前有3个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口.第一步:获取 access_token public function getWxAccessToken(){ $appid ...
- .NET生成小程序码,并合自定义背景图生成推广小程序二维码
前言: 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了.今天接到一个需求就是生成小程序码,并且于运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种 ...
- 微信小程序二维码推广统计
微信小程序可以通过生成带参数的二维码,那么这个参数是可以通过APP的页面进行监控的 这样就可以统计每个二维码的推广效果. 今天由好推二维码推出的小程序统计工具HotApp小程序统计也推出了带参数二维码 ...
- 微信小程序-二维码汇总
小程序二维码在生活中的应用场景很多,比如营销类一物一码,扫码开门,扫码付款等...小程序二维码分两种? 1.普通链接二维码 即跟普通的网站链接生成的二维码是一个意思,这种二维码的局限性如下: 对于普通 ...
- 图片的URL上传至阿里云OSS操作(微信小程序二维码返回的二进制上传到OSS)
当我们从网络中获取一个URL的图片我们要存储到本地或者是私有的云时,我们可以这样操作 把url中的图片文件下载到本地(或者上传到私有云中) public String uploadUrlToOss ...
随机推荐
- jzy3D从入门到弃坑_4尝试使用jzy3D1.0画图失败
jzy3D从入门到弃坑_4 尝试使用jzy3D1.0画图失败 觉得有用的话,欢迎一起讨论相互学习~Follow Me 记录一下使用jzy3D1.0失败 究其原因在于 本人才疏学浅,对于JAVA ope ...
- PMP 第5章错题总结
1.工作分解结构是项目团队与相关方之间沟通的有效工具之一2.控制账户是工作分解结构某个层次上的要素,以便与工作包一一对应3.项目范围说明书包括产品范围.产品验收标准.项目可交付成果.项目除外责任,以及 ...
- java url 编码
public static void main(String[] args) throws UnsupportedEncodingException { String encodeUrl = URLE ...
- beetl模版for循环渲染字符串
beetl for循环渲染html字符串的方式, beetl if条件判断输出, beet自定义标签和标签引用, beetl html赋值, beetl渲染json,beetl注释.变量定义, 更多文 ...
- delphi uniDac
Delphi 2010安装及使用UniDAC 4.0 UniDAC是一个功能强大的非可视化跨数据库的数据访问组件,可用于Delphi,Delphi for .NET,C++Builder,and La ...
- Centos7之阿里Arthas部署
阿里Arthas Arthas(阿尔萨斯)是Alibaba开源的一个Java诊断工具,无需做任何配置,就可以直观的获取各种维度的性能数据,方便开发者进行问题的定位和诊断. 应用场景 动态跟踪Java代 ...
- 1-4dockerfile基本使用
1.创建一个文件夹 mkdir mynginx cd mynginx touch Dockerfile [root@VM_0_10_centos mynginx]# cat Dockerfile FR ...
- spring boot实现切割分片上传
文件上传是web开发中经常会遇到的 springboot的默认配置为10MB,大于10M的是传不上服务器的,需要修改默认配置 但是如果修改支持大文件又会增加服务器的负担. 当文件大于一定程度时,不仅服 ...
- C/C++配置
VScode 插件推荐与C/C++配置 https://www.cnblogs.com/harrypotterjackson/p/11432252.html 阅读目录 C++类 美化 git tab ...
- openstack集群访问外部服务出现访问失败
场景描述: openstack私有云中的容器服务A(部署在openshift上)需要通过http访问阿里云中的B服务,中间需要经过openstack的nat网关,以及阿里云的lb.但在访问时发现访问失 ...