/**
* [生成小程序二维码]
* @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生成小程序二维码的更多相关文章

  1. node 无脑生成小程序二维码图

    RT 新建createwxaqrcode.js: const request = require('request') const fs = require('fs') // eg:生成购物车列表圆形 ...

  2. PHP生成小程序二维码合成图片生成文字

    这部分代码是写在项目上的代码,THINKPHP3.1如果迁移到其他的地方应该要稍稍改动一下以适合自己的项目 function get_bbox($text,$fsize,$ffile){ return ...

  3. Java 获取微信小程序二维码(可以指定小程序页面 与 动态参数)

    一.准备工作 微信公众平台接口调试工具 小程序的唯一标识(appid) 小程序的密钥(secret) 二.获取access_token 打开微信公众平台接口调试工具,在参数列表中输入小程序的appid ...

  4. 小程序二维码生成接口API

    获取小程序码 我们推荐生成并使用小程序码,它具有更好的辨识度.目前有两个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口. 接口A: 适用于需要的码数量较少的业务场景 接口地址: http ...

  5. php生成微信小程序二维码源码

    目前有3个接口可以生成小程序码,开发者可以根据自己的需要选择合适的接口.第一步:获取   access_token public function getWxAccessToken(){ $appid ...

  6. .NET生成小程序码,并合自定义背景图生成推广小程序二维码

    前言: 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了.今天接到一个需求就是生成小程序码,并且于运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种 ...

  7. 微信小程序二维码推广统计

    微信小程序可以通过生成带参数的二维码,那么这个参数是可以通过APP的页面进行监控的 这样就可以统计每个二维码的推广效果. 今天由好推二维码推出的小程序统计工具HotApp小程序统计也推出了带参数二维码 ...

  8. 微信小程序-二维码汇总

    小程序二维码在生活中的应用场景很多,比如营销类一物一码,扫码开门,扫码付款等...小程序二维码分两种? 1.普通链接二维码 即跟普通的网站链接生成的二维码是一个意思,这种二维码的局限性如下: 对于普通 ...

  9. 图片的URL上传至阿里云OSS操作(微信小程序二维码返回的二进制上传到OSS)

    当我们从网络中获取一个URL的图片我们要存储到本地或者是私有的云时,我们可以这样操作  把url中的图片文件下载到本地(或者上传到私有云中)  public String uploadUrlToOss ...

随机推荐

  1. 中国知网(cnki)上caj格式转pdf的方法 ----------------- 转载

    原文地址: https://blog.csdn.net/edogawachia/article/details/85340636 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  2. C#实体类null自动转空字符串

    C#实体类null自动转空字符串 using System.ComponentModel.DataAnnotations; [DisplayFormat(ConvertEmptyStringToNul ...

  3. sublime的注册方法 非常好用

    摘自:https://blog.csdn.net/weixin_42444922/article/details/81006107 转载 阿东的天空之城 发布于2018-07-11 20:03:43 ...

  4. Java实现 微信小程序 + 消息推送

    实现效果: 下面要显示五个字段 接下来,参照官方文档,一步步实现: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open- ...

  5. 转 linux 添加PHP环境变量,/etc/profile 不生效,每次都要 source /etc/profile

    http://shanhuxueyuan.com/news/detail/46.html 执行php -v 提示未找到命令,这是因为没有将php路径添加到环境变量 方法一:直接运行命令export P ...

  6. Content-Type四种常见取值

    一.application/x-www-form-urlencoded 最常见 POST 提交数据的方式.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 applica ...

  7. nginx入门系列之安装与卸载

    目录 通过包管理器安装 安装nginx 卸载nginx 从源码编译安装 准备安装环境 执行编译安装 制作nginx免安装包 官方安装手册:https://nginx.org/en/docs/insta ...

  8. log4j Logger 使用简介

    项目结构: log4j.properties 内容: log4j.rootCategory=info,stdout log4j.appender.stdout=org.apache.log4j.Con ...

  9. Git_从远程branch取回所有最新代码,暴力覆盖本地 && GIT基本结构

    假设你本地有一个xx分支对应着远端的xx分支,当前,你在本地的xx分支进行了修改(可以是执行了add, commit,但不要push),然后,现在想从远端的xx分支拿到最新的代码,可以用下图方法覆盖掉 ...

  10. 推荐系统中的协同滤波算法___使用SVD

    对于推荐方法,基于内容 和 基于协同过滤 是目前的主流推荐算法,很多电子商务网站的推荐系统都是基于这两种算法的. 协同过滤 是一种基于相似性来进行推荐的算法,主要分为 基于用户的协同过滤算法 和 基于 ...