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用户指南-cookies部分
Oct 09 PHP
PHP5+UTF8多文件上传类
Oct 17 PHP
PHP的autoload机制的实现解析
Sep 15 PHP
php启动时候提示PHP startup的解决方法
May 07 PHP
php实现图片转换成ASCII码的方法
Apr 03 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
解决php-fpm.service not found问题的办法
Jun 06 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
Feb 19 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 PHP
PHP 实现重载
Mar 09 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
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
phpstudy2020搭建站点的实现示例
2020/10/30 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
2013/11/18 Javascript
js动态改变select选择变更option的index值示例
2014/07/10 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
详解JavaScript的Polymer框架中的通知交互
2015/07/29 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
vue axios请求拦截实例代码
2018/03/29 Javascript
Python里隐藏的“禅”
2014/06/16 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python 3.x 新特性及10大变化
2015/06/12 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
2018/06/14 Python
python实现感知器算法(批处理)
2019/01/18 Python
Python实现FTP文件传输的实例
2019/07/07 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
.NET方向面试题
2014/11/20 面试题
国际贸易个人求职信范文
2014/01/04 职场文书
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
担保贷款承诺书
2015/04/30 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis