thinkPHP微信分享接口JSSDK用法实例


Posted in PHP onJuly 07, 2017

本文实例讲述了thinkPHP微信分享接口JSSDK用法。分享给大家供大家参考,具体如下:

首先在数据库中添加access_token表:

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for access_token
-- ----------------------------
DROP TABLE IF EXISTS `access_token`;
CREATE TABLE `access_token` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_token` char(64) NOT NULL COMMENT '令牌-唯一标识',
 `expires_time` varchar(64) DEFAULT NULL COMMENT '过期时间',
 `ticket` char(64) NOT NULL COMMENT '临时票据',
 `ticket_expires_time` varchar(64) DEFAULT NULL COMMENT '过期的票据时间',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 COMMENT='token缓存表';
/**
* 添加微信分享接口
* 第一步:access token
*/
public function getAccessToken(){
  $appid = '你的appid'; //获取用户唯一凭证
  $secret = '你的secret'; //用户唯一凭证密钥
  $time = time()+7000; //当前时间+2小时等于过期时间
  if (!$token) {
    $res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' .$appid.'&secret='. $secret);
    $res = json_decode($res, true);
    $token = $res['access_token'];
    $model = D('access_token'); //把获取的token存储到数据库中
    if($token){
      $data = array(
      'access_token' => $token,
      'expires_time' => $time
      );
      $data = $model->add($data); //把获得的token存储到数据库中
    }
  }
  return $token;
}
/**
* 添加微信分享接口
* 第二步:用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket
*/
public function getJsapiTicket(){
  $time = time()+7000; //当前时间+2小时等于过期时间
  $map['ticket_expires_time'] = array('gt',time());
  $res = D('access_token')->where('ticket_expires_time')->field('ticket')->find();
  if($res){
    $ticket = $res['ticket'];
    $result['result'] = $ticket; //没查询到符合条件的
    jsonpReturn($result);
  } else{
    $token = $this->getAccessToken();
    $res = file_get_contents("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$token."&type=jsapi");
    $res = json_decode($res, true);
    $ticket = $res['ticket'];
    // ticket不能频繁的访问接口来获取,在每次获取后,我们把它保存到数据库中。
    $model = D('access_token'); //把获取的ticket存储到数据库中
    if($ticket){
      $data = array(
      'access_token' => $token,
      'expires_time' => $time,
      'ticket' => $ticket,
      'ticket_expires_time' => $time
      );
      $data = $model->add($data); //把获得的token存储到数据库中
    }
    $result['result'] = $ticket; //没查询到符合条件的
    jsonpReturn($result);
  }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP图片上传类带图片显示
Nov 25 PHP
PHP函数utf8转gb2312编码
Dec 21 PHP
解析php入库和出库
Jun 25 PHP
php使用CURL伪造IP和来源实例详解
Jan 15 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
PHP中实现crontab代码分享
Mar 26 PHP
php两种无限分类方法实例
Apr 21 PHP
PHP使用递归方式列出当前目录下所有文件的方法
Jun 02 PHP
php类常量用法实例分析
Jul 09 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
php接口技术实例详解
Dec 07 PHP
PHP中仿制 ecshop验证码实例
Jan 06 PHP
微信开发之获取JSAPI TICKET
Jul 07 #PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 #PHP
一个实用的php验证码类
Jul 06 #PHP
万能的php分页类
Jul 06 #PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 #PHP
php文件上传类的分享
Jul 06 #PHP
PHP图片水印类的封装
Jul 06 #PHP
You might like
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
php面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php实现的RSS生成类实例
2015/04/23 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
event.X和event.clientX的区别分析
2011/10/06 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
Nodejs关于gzip/deflate压缩详解
2015/03/04 NodeJs
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
Vue源码解读之Component组件注册的实现
2018/08/24 Javascript
element el-input directive数字进行控制
2018/10/11 Javascript
JS前端知识点总结之页面加载事件,数组操作,DOM节点操作,循环和分支
2019/07/04 Javascript
javascript使用Blob对象实现的下载文件操作示例
2020/04/18 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
[01:22:10]Ti4 循环赛第二日 DK vs Empire
2014/07/11 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
使用python装饰器验证配置文件示例
2014/02/24 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
详解python发送各类邮件的主要方法
2016/12/22 Python
用Eclipse写python程序
2018/02/10 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
Django数据库迁移常见使用方法
2020/11/12 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
高中国旗下的演讲稿
2014/08/28 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
详解Spring Boot使用系统参数表提升系统的灵活性
2021/06/30 Java/Android