微信获取ticket及生成二维码(临时或永久)

curl.php----

define("APPID","");
define("APPSECRET","");
define("TOKEN","weixin");
require("./wechat.inc.php");
header("content-type:image/jpg");
$wechat=new WeChat(APPID,APPSECRET,TOKEN);
echo $wechat->_getQRCode();
wechat.inc.php------
class WeChat{
private $_appid;
private $_appsecret;
private $_token; public function __construct($appid,$appsecret,$token)
{
$this->_appid=$appid;
$this->_appsecret=$appsecret;
$this->_token=$token;
}
private function _request($curl,$https=true,$method='get',$data=null)
{
$ch=curl_init(); //初始化
curl_setopt($ch,CURLOPT_URL,$curl);
curl_setopt($ch,CURLOPT_HEADER,false);//设置不需要头信息
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);//获取页面内容,但不输出
if($https)
{
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);//不做服务器认证
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//不做客户端认证
} if($method=='post')
{
curl_setopt($ch, CURLOPT_POST,true);//设置请求是post方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//设置post请求数据 } $str=curl_exec($ch);//执行访问
curl_close($ch);//关闭curl,释放资源
return $str;
} private function _getAccesstoken()
{
$file="./accesstoken";
if(file_exists($file))
{
$content=file_get_contents($file);
$content=json_decode($content);
if(time()-filemtime($file)<$content->expires_in)
{
return $content->access_token;
}
}
$content=_request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret);
file_put_contents($file,$content);
$content=json_decode($content);
return $content->access_token;
} /*获取ticket
expire_seconds:二维码有效期(秒)
type:二维码类型(临时或永久)
scene:场景编号
*/
public function _getTicket($expire_seconds=604800,$type="temp",$scene=1)
{
if($type=="temp"){
$data='{"expire_seconds": '.$expire_seconds.', "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": '.$scene.'}}}';
return $this->_request("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->_getAccesstoken(),true,"post",$data);
}else
{
$data='{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": '.$scene.'}}}';
return $this->_request("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->_getAccesstoken(),true,"post",$data);
}
}
/* 通过ticket获取二维码 */
public function _getQRCode($expire_seconds=604800,$type="temp",$scene=1)
{
$content=json_decode($this->_getTicket($expire_seconds,$type,$scene));
$ticket=$content->ticket;
$image=$this->_request("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket));
//$file="./".$type.$scene.".jpg"; //设置图片名字
//file_put_contents($file,$content); //二维码保存到本地
return $image; } }

微信获取ticket及生成二维码(临时或永久)的更多相关文章

  1. 微信支付支付宝支付生成二维码的方法(php生成二维码的三种方法)

    如果图简单,可以用在线生成 http://pan.baidu.com/share/qrcode?w=150&h=150&url=http://www.xinzhenkj.com 最简单 ...

  2. 微信小程序之生成二维码

    最近项目中涉及到小程序的生成二维码,很是头疼,经过多次摸索,整理出了自己的一些思想方法,如有不足,欢迎指正. 首先完全按照小程序的结构依次填坑. pages--index.wxml <view ...

  3. 微信小程序带参数生成二维码

    wx.request({ url: 'https://api.weixin.qq.com/cgi-bin/token', header: { 'content-type': 'application/ ...

  4. 使用qrcode输入信息生成二维码包含二维码说明信息,点击转化为图片并下载

    说明:输入汉字和数字都可以识别并展示 <body> <h2 id="h2">二维码生成</h2> <br> <span id= ...

  5. web网页外部分享到微信、朋友圈、扣扣、微博等功能、自动生成二维码等

    1.这里重中之重是分享到微信:web端网页通常是没有权限分享过去的 所以用: weixin://dl/business/?ticket=ta428dhj739hg3efe6e  但是这个ticket真 ...

  6. 微信蓝牙设备开发教程之获取设备deviceid和二维码(3)

    文章转载地址  http://www.vxzsk.com/87.html  设备授权 调用 设备授权新接口 ,获取deviceid和二维码,然后利用获取到的deviceid更新设备属性(如mac地址, ...

  7. 用c#开发微信(2)扫描二维码,用户授权后获取用户基本信息 (源码下载)

    本文将介绍基于Senparc.Weixin微信开发框架来实现网页授权来获取用户基本信息.先生成包含授权及回调url信息的二维码:用户用微信扫描之后,被要求授权以获取Ta的用户基本信息:用户授权后,通过 ...

  8. (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果

    场景:移动支付需要对二维码的生成与部署有所了解,掌握目前主流的二维码生成技术. 1 ZXing 生成二维码 首先说下,QRCode是日本人开发的,ZXing是google开发,barcode4j也是老 ...

  9. 微信小程序条码、二维码生成模块

    代码地址如下:http://www.demodashi.com/demo/13994.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

随机推荐

  1. Git 工具总结

    初操作---设置用户名 git config --global user.name "any name"  //设置全局project的用户名 git config --globa ...

  2. linux下进入root用户登录

    1.打开终端,输入sudo passwd -u root 输入当前用户的登录密码,提示如下标红区域信息 解决方案: 1)直接输入命令:su,输入当前用户登录密码 2)添加sudoers文件的写权限,命 ...

  3. java 中类的方法

    object类,即所有类的父类, getClass() 返回对象执行时的Class实例, getClass().getName();// 返回类的名字 toString();// equals();/ ...

  4. PostgreSQL中JSON、JSONB基本操作符

    PostgreSQL 9.5以上的版本中有了很多方便的操作符,使得操作 JSON 变得非常方便了. 一. -> 和 ->> : -> 表示获取一个JSON数组元素,支持下标值( ...

  5. 使用Sales_data类

    写一段程序程序实现求两次交易相加结果的功能.程序的输入是下面这两条交易记录: 0-201-783456-X 3 20.00 0-201-783456-X 3 25.00 程序的结构如下: #inclu ...

  6. C# - 设计模式目录

    什么是设计模式 设计模式(OOD)是在面向对象编程(Object Oriented Programming,OOP)中针对在以往的编程里出现的问题所提出的一种解决思路.一种设计类型时的思想和经验,对未 ...

  7. 软件测试-培训的套路-log3

    最新的套路!我是没了解过--下图中描述-log3 Dotest-董浩 但是我知道不管什么没有白吃的午餐而且还会给钱…如果真的有,请醒醒! 当然话又回来,套路不套路,关键看你是否需要:你如果需要我觉得是 ...

  8. RNN,写起来真的烦

    曾经,为了处理一些序列相关的数据,我稍微了解了一点递归网络 (RNN) 的东西.由于当时只会 tensorflow,就从官网上找了一些 tensorflow 相关的 demo,中间陆陆续续折腾了两个多 ...

  9. Spring 基于注解的AOP实现

    在本文开始之前,我要引入一张图,这张图的来源 https://blog.csdn.net/chenyao1994/article/details/79708496 ,版权归原作者所有,我借鉴了原作者的 ...

  10. 工程师的URL大全

    作者:邓聪聪 https://bgp.he.net/ip                    #关于IP地址广播的AS查询及地址所属 http://ipwhois.cnnic.net.cn/    ...