php获取accesstoken和二维码的实现方法
class WeChat{
private $_appid;
private $_appsecret;
private $_token;
public function __construct($_appid,$_appsecret,$_token){
$this->_appid = $_appid;
$this->_appsecret = $_appsecret;
$this->_token = $_token;
}
/**
* 获取页面内容
* @params $curl URL
* @params $https 传输协议
* @params $method 请求方法
* @params $data 传输的数据
*/
public function _request($curl,$https=true,$method='GET',$data=null){
$ch = curl_init();//初始化
curl_setopt($ch,CURLOPT_URL,$curl);//URL
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,true);
}
if($method == 'POST'){
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
}
$content = curl_exec($ch);
curl_close($ch);
return $content;
}
/**
* 获取accesstoken
*/
public 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;
}
}
$curl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret;
$content = $this->_request($curl);
file_put_contents($file,$content);
$content = json_decode($content);
return $content->access_token;
}
/**
* 获取二维码 1、获取ticket
* @params $sceneid 场景id
* @params $type 类型:临时/永久
* @params $expire_seconds 过期时间604800 7天
*/
public function _getTicket($sceneid,$type='temp',$expire_seconds=604800){
if($type == 'temp'){
$data = '{"expire_seconds": %s, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": %s}}}';
$data = sprintf($data,$expire_seconds,$sceneid);//格式化输出
}else{
$data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": %s}}}';
$data = sprintf($data,$sceneid);
}
$curl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$this->_getAccessToken();
$content = $this->_request($curl,true,'POST',$data);
$content = json_decode($content);
return $content->ticket;
}
/**
* 获取二维码 1、获取二维码QRCode
* @params $sceneid 场景id
* @params $type 类型:临时/永久
* @params $expire_seconds 过期时间604800 7天
*/
public function _getQRCode($sceneid,$type = 'temp',$expire_seconds=604800){
$ticket = $this->_getTicket($sceneid,$type,$expire_seconds);
$content = $this->_request('https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket));
return $content;
}
}
$wechat = new WeChat('wxb7e7af838ec6bed2','d4624c36b6795d1d99dcf0547af5443d','');
//echo $wechat->_request("https://www.baidu.com");//获取页面内容
//echo $wechat->_getAccessToken();//获取accesstoken
header('Content-type:image/jpeg');
echo $wechat->_getQRCode(30);
php获取accesstoken和二维码的实现方法的更多相关文章
- 第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码
新手教程: 前言:最近在看了一下很久很久以前做的qq机器人失效了,最近也在换工作目前还在职,时间很挺宽裕的.就决定从新搞一个web qq机器人 PC的协议解析出来有点费时间以后再做. 准备工作: 编译 ...
- Java实现二维码生成的方法
1.支持QRcode.ZXing 二维码生成.解析: package com.thinkgem.jeesite.test; import com.google.zxing.BarcodeFormat; ...
- PHP二维码生成的方法(google APi,PHP类库,libqrencode等)
原文地址: http://blog.csdn.net/liuxinmingcode/article/details/7910975 ================================== ...
- JAVA中生成、解析二维码图片的方法
JAVA中生成.解析二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能,并有解析二维码的方法. 一.下载zxing的架包,并导 ...
- 【PHP】 PHPqrCode二维码类库使用方法
1.首先去官网下载PHPqrCode库文件,只需要里面的phpqrcode.php文件,下载地址:http://phpqrcode.sourceforge.net 2.二维码生成实例代码: <? ...
- 二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法
假设你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 假设你已经配置好ZBarSDK .那么以下这个类 ...
- python 识别二维码内容的方法
识别二维码链接的方式有多种,那么如何用python 的方法实现识别呢? 请看如下代码: from pyzbar.pyzbar import decode from PIL import Image i ...
- php获取一维,二维数组长度的方法(有实例)
在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...
- 利用nodejs识别二维码内容的方法
const decodeImage = require('jimp').read; const qrcodeReader = require('qrcode-reader'); qrDecode(&q ...
随机推荐
- 板子-GOD BLESS ALL OF YOU
字符串: KMP #include<cstdio> #include<cstring> ; ]; ]; int l1,l2; void get_next() { next[]= ...
- (BruteForce)暴力破解经典题目总结
在算法竞赛中,很多问题是来不及用数学公式推导出来的.或者说根本就找不到数学规律,这时我们就需要使用枚举来暴力破解. 不过枚举也是需要脑子的,一味的暴力只能超时.因此我这里选择了几道mooc上经典的题目 ...
- chrome mac 快捷键
⌘-N 打开新窗口. ⌘-T 打开新标签页. ⌘-Shift-N 在隐身模式下打开新窗口. 按 ⌘-O,然后选择文件. 在 Google Chrome 浏览器中打开计算机中的文件. 按住 ⌘ 键,然后 ...
- Net调用非托管代码(P/Invoke与C++InterOP) [转]
将 System::String 转换为 wchar_t* 或 char* PtrToStringChars将String转换为本机wchar_t *或char *.由于 CLR 字符串为内部 Uni ...
- 学会用core dump调试程序错误
最来在项目中遇到大型程序出现SIGSEGV ,一直不知道用core dump工具来调试程序,花了近一周的时间,才定位问题,老大很生气,后果很严重,呵呵,事后仔细学习了这块的知识,了解一点core du ...
- MBR结构解析与fdisk的bash实现
一.MBR结构解析 首先我们先介绍一些MBR的基本知识基础,再晾图片分析. MBR主要分为三大块各自是: 1.载入引导程序(446K) 2.分区表(64k) 3.标志结束位(2k) 载入引导程序:内容 ...
- log4net报错Could not load type 'System.Security.Claims.ClaimsIdentity'
使用log4net,在win7上可以正常使用,但是在部分xp电脑上可以生成access数据库,但是无法写数据到mdb 排除了程序原因,怀疑是xp缺少什么dll之类的 偶然查到log4net的调试方法: ...
- 高仿QQ6.0側滑菜单之滑动优化(二)
好了,昨天已经实现了高仿QQ6.0的側滑大致框架.如有兴趣.能够去看下仿QQ6.0側滑之ViewDragHelper的使用(一) 可是之前的实现.仅仅是简单的能够显示和隐藏左側的菜单,可是特别生硬,并 ...
- 浅谈MySQL外键
http://www.xiaoxiaozi.com/2009/07/12/1158/ 像MySQL这样的关系型数据库管理系统,它们的基础是在数据库的表之间创建关系的能力.通过方便地在不同表中建立记录到 ...
- 数据迁移实战:基于Kettle的Mysql到DB2的数据迁移
From:https://my.oschina.net/simpleton/blog/525675 一.什么是ETL ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数 ...