1. class WeChat{
  2. private $_appid;
  3. private $_appsecret;
  4. private $_token;
  5.  
  6. public function __construct($_appid,$_appsecret,$_token){
  7. $this->_appid = $_appid;
  8. $this->_appsecret = $_appsecret;
  9. $this->_token = $_token;
  10. }
  11. /**
  12. * 获取页面内容
  13. * @params $curl URL
  14. * @params $https 传输协议
  15. * @params $method 请求方法
  16. * @params $data 传输的数据
  17. */
  18. public function _request($curl,$https=true,$method='GET',$data=null){
  19. $ch = curl_init();//初始化
  20. curl_setopt($ch,CURLOPT_URL,$curl);//URL
  21. curl_setopt($ch,CURLOPT_HEADER,false);//
  22. curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
  23. if($https){
  24. curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
  25. curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,true);
  26. }
  27. if($method == 'POST'){
  28. curl_setopt($ch,CURLOPT_POST,true);
  29. curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
  30. }
  31. $content = curl_exec($ch);
  32. curl_close($ch);
  33. return $content;
  34. }
  35. /**
  36. * 获取accesstoken
  37. */
  38. public function _getAccessToken(){
  39. $file = './accesstoken';
  40. if(file_exists($file)){
  41. $content = file_get_contents($file);
  42. $content = json_decode($content);
  43. if(time() - filemtime($file)<$content->expires_in){
  44. return $content->access_token;
  45. }
  46. }
  47. $curl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret;
  48. $content = $this->_request($curl);
  49. file_put_contents($file,$content);
  50. $content = json_decode($content);
  51. return $content->access_token;
  52. }
  53. /**
  54. * 获取二维码 1、获取ticket
  55. * @params $sceneid 场景id
  56. * @params $type 类型:临时/永久
  57. * @params $expire_seconds 过期时间604800 7天
  58. */
  59. public function _getTicket($sceneid,$type='temp',$expire_seconds=604800){
  60. if($type == 'temp'){
  61. $data = '{"expire_seconds": %s, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": %s}}}';
  62. $data = sprintf($data,$expire_seconds,$sceneid);//格式化输出
  63. }else{
  64. $data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": %s}}}';
  65. $data = sprintf($data,$sceneid);
  66. }
  67. $curl = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$this->_getAccessToken();
  68. $content = $this->_request($curl,true,'POST',$data);
  69. $content = json_decode($content);
  70. return $content->ticket;
  71. }
  72. /**
  73. * 获取二维码 1、获取二维码QRCode
  74. * @params $sceneid 场景id
  75. * @params $type 类型:临时/永久
  76. * @params $expire_seconds 过期时间604800 7天
  77. */
  78. public function _getQRCode($sceneid,$type = 'temp',$expire_seconds=604800){
  79. $ticket = $this->_getTicket($sceneid,$type,$expire_seconds);
  80. $content = $this->_request('https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.urlencode($ticket));
  81. return $content;
  82. }
  83. }
  84. $wechat = new WeChat('wxb7e7af838ec6bed2','d4624c36b6795d1d99dcf0547af5443d','');
  85. //echo $wechat->_request("https://www.baidu.com");//获取页面内容
  86. //echo $wechat->_getAccessToken();//获取accesstoken
  87. header('Content-type:image/jpeg');
  88. echo $wechat->_getQRCode(30);

php获取accesstoken和二维码的实现方法的更多相关文章

  1. 第一讲 从头开始做一个web qq 机器人,第一步获取smart qq二维码

    新手教程: 前言:最近在看了一下很久很久以前做的qq机器人失效了,最近也在换工作目前还在职,时间很挺宽裕的.就决定从新搞一个web qq机器人 PC的协议解析出来有点费时间以后再做. 准备工作: 编译 ...

  2. Java实现二维码生成的方法

    1.支持QRcode.ZXing 二维码生成.解析: package com.thinkgem.jeesite.test; import com.google.zxing.BarcodeFormat; ...

  3. PHP二维码生成的方法(google APi,PHP类库,libqrencode等)

    原文地址: http://blog.csdn.net/liuxinmingcode/article/details/7910975 ================================== ...

  4. JAVA中生成、解析二维码图片的方法

    JAVA中生成.解析二维码的方法并不复杂,使用google的zxing包就可以实现.下面的方法包含了生成二维码.在中间附加logo.添加文字功能,并有解析二维码的方法. 一.下载zxing的架包,并导 ...

  5. 【PHP】 PHPqrCode二维码类库使用方法

    1.首先去官网下载PHPqrCode库文件,只需要里面的phpqrcode.php文件,下载地址:http://phpqrcode.sourceforge.net 2.二维码生成实例代码: <? ...

  6. 二维码框架ZBarSDK的使用和自己定义二维码扫描界面方法

    假设你不知道ZBarSDK怎么用,请下载demo http://download.csdn.net/detail/u013686641/7858917 假设你已经配置好ZBarSDK .那么以下这个类 ...

  7. python 识别二维码内容的方法

    识别二维码链接的方式有多种,那么如何用python 的方法实现识别呢? 请看如下代码: from pyzbar.pyzbar import decode from PIL import Image i ...

  8. php获取一维,二维数组长度的方法(有实例)

    在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧.php如何获取数组的长度,使用php函数c ...

  9. 利用nodejs识别二维码内容的方法

    const decodeImage = require('jimp').read; const qrcodeReader = require('qrcode-reader'); qrDecode(&q ...

随机推荐

  1. jq 全选、反选、判断选中的条数

    1.全选或全不选.当勾选全选按钮#selectAll旁边的复选框#all时,列表中的选项全部选中,反之取消勾选则列表中的选项全部为未选中状态. $("#all").click(fu ...

  2. loj #110. 乘法逆元

    #110. 乘法逆元 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据   题目描述 这是一道模板题. 给定 ...

  3. Loj #2036. 「SHOI2015」自动刷题机

    link : https://loj.ac/problem/2036 这个显然具有单调性,N小的话更容易A题,不仅因为A一次题减少的代码,并且A题的下限也低. 所以直接上二分就行了,注意上限一定不要设 ...

  4. ssm实现查看流程图

    jsp <!--显示数据列表--> <tbody id="TableData" class="dataContainer" datakey=& ...

  5. Cesium之3D拉伸显示行政区

    转自原文 Cesium之3D拉伸显示行政区含GeoJSON数据生成过程GDAL的ogr2ogr Cesiumjs 是一套javascript库,用来渲染3D地球,2D区域地图,和多种GIS要素.不需要 ...

  6. Leanote 二进制版详细安装教程 Windows

    https://github.com/leanote/leanote/wiki 本教程适合 Windows 用户的二进制版安装. Windows 用户的源码版安装,参见这里. Mac, Linux 用 ...

  7. [LeedCode OJ]#85 Maximal Rectangle

     [ 声明:版权全部,转载请标明出处.请勿用于商业用途. 联系信箱:libin493073668@sina.com] 题目链接:https://leetcode.com/problems/maxima ...

  8. C#如何生成release版本的程序,生成debug版本的程序

    除了右击项目在生成中配置改成Release还要在顶部切换成Release                                  

  9. 在没有安装access的电脑上读写.mdb文件

    在微软官方下载MDAC access数据库访问组件即可

  10. Oracle oledb 打包并集成到程序安装包(VC ADO訪问Oracle)

    近期有一个项目和oracle交互,我用的是ADO的方式进行试问操作. 首先把数据库连接的东东记录一下,老了记性不好啊! 操作例如以下: //连接串这么写的话就能够不用配置 tnsnames.ora配置 ...