微信中控方法(getAccessToken、getJsapiTicket)。可继续优化,redis作为中间层,入库同时加入redis,要使用时先查询redis。

<?php

/**

* 微信父类控制器

* @author Songle

*

*/

namespace Home\Controller;

use Think\Controller;

class Wechat2Controller extends Controller

{

private $last_time = null;

private $appid = null;

private $appsecret = null;

public function __construct()

{

parent::__construct();

}

/**

* 添加微信分享接口

* 第一步:access token

*/

public function getAccessToken()

{

$appid = ‘wx55f7980035ddbc37‘; //获取用户唯一凭证

$secret = ‘b3a96346c6a10b97dfdc134d5f0dd506‘; //用户唯一凭证密钥

$time = time() + 7000; //当前时间+2小时等于过期时间

// 如果有未过期token

$map[‘expires‘] = array(‘gt‘, time());

$token = D(‘access_token‘)->order(‘id desc‘)->where($map)->getField(‘access_token‘);

if ($token) {

return $token;

} else {

$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());

// 库里如果有未过期的 ticket

$res = D(‘access_token‘)->where($map)->field(‘ticket‘)->find();

if ($res) {

$ticket = $res[‘ticket‘];

$result[‘result‘] = $ticket;

return $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->where(array(‘access_token‘=>$token))->save($data); //把获得的token存储到数据库中

}

$result[‘result‘] = $ticket; //没查询到符合条件的

return $result;

}

}

}

原文地址:https://www.cnblogs.com/jamescr7/p/8978018.html

时间: 2024-11-07 13:19:11

微信中控方法(getAccessToken、getJsapiTicket)。可继续优化,redis作为中间层,入库同时加入redis,要使用时先查询redis。的相关文章

微信怎么恢复聊天记录?恢复微信聊天记录方法

微信怎么恢复聊天记录?恢复微信聊天记录方法.现如今很多的消息都是通过微信在传递的,那么想当然的微信聊天记录中肯定存有着大量重要的数据,一旦出现聊天记录误删的情况就比较麻烦,那么怎么恢复误删的微信聊天记录呢? 手机出现误删情况后,先不要进行微信相关的操作了,以防止影响到后续的恢复工作,只需要使用到数据恢复类型的软件来进行操作即可,下面小编就来教各位怎么恢复吧. 第一种:极速恢复精灵 步骤一:打开苹果手机的App Store或者是浏览器,下载好极速恢复精灵的安装包,然后进行相关的安装操作. 步骤二:

各类型商户微信认证方法

一.商户实名认证简介(微信官方通知的) 基于监管政策.系统风控.用户体验等方面的考虑,我们需要加强对从业机构特约商户的风险管理,升级对商户客户身份识别的认证标准.因此,新入驻的从业机构特约商户要陆续按照新标准完成商户实名认证后,才能进行微信支付交易. 二.认证开始时间 从 2019 年 5 月 6 日开始入驻的聚合支付,在入驻后,需要补充实名资料. 三.各类型商户认证情况 聚合名称 商户类型 认证情况 网商 自然人 5月6日开始入驻的商户无法支付. 网商 个体商户 注册商户名称跟营业执照名称填写

浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发放、查询等

本文是[浅析微信支付]系列文章的第十四篇,主要讲解在如何开通商户平台的代金券或立减优惠功能,商家向指定用户发送代金券,查询发送记录,代金券信息等. 浅析微信支付系列已经更新十四篇了哟-,没有看过的朋友们可以看一下哦. 浅析微信支付:商户平台开通现金红包.指定用户发放.红包记录查询 浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户 浅析微信支付:支付验收示例和验收指引 浅析微信支付:如何使用沙箱环境测试 首先我们需要了解一下什么是代金券和立减优惠? 代金券是微信支付为商家提供的一个营销

Java 中无返回值的方法在使用时应该注意的问题

Java 中的方法是形态多样的.无返回值的方法在使用时应该规避哪些问题呢? 一.不可以打印调用或是赋值调用,只能是单独调用(非常重要): 二.返回值没有,不代表参数就没有: 三.不能return一个具体的值,否则会报错: 四.return分号可以直接省略: 五.无返回值方法应该使用类型void. 原文地址:https://www.cnblogs.com/yanglongbo/p/10981842.html

没有对公账户微信认证方法

企业或个体户没有对公银行账户,或者因为税务等问题不希望使用对公账户,怎么做微信认证呢?遇到这种情况可以找微信第三方服务机构——优度网帮忙,百度搜优度网,可找到其在线联系方式. 无对公账户认证微信方法:http://www.uducn.com/weibo/20141225725.html 联系QQ:120962274 咨询电话:021-31200986  快速帮您处理! 微信认证是腾讯公司提供给公众号认证加V的一项收费服务.微信认证后,将显示认证特有的V标识,也将获得更丰富的接口功能,如完善的自定

最长公共子串问题(方法一:暴力+RK匹配,方法二:DP+空间优化)

时间:2014.09.05 地点:基地二楼 一.题目 给定一个query和一个text,均由小写字母组成.要求在text中找出以同样的顺序连续出现在query中的最长连续字母序列的长度.例如, query为"acbac",text为"acaccbabb",那么text中的"cba"为最长的连续出现在query中的字母序列,因此,返回结果应该为其长度3. 二.分析 对于该问题最直接的想法就是对query字符串的所有非空子字符串再text中进行查找比

微信营销方法

学习微信营销,在做微信营销之前大家应该明确一个观念:做微信营销是因为别人都在做微信营销我才选择去做,或者是我真的看到了微信营销的优点才选择去做的. 这两者有着很本质的区别:先知先觉经营者丶后知后觉跟随者丶不知不觉消费者,你是哪一种人就取决于你一开始的观念. 微信的优势: 1.社交工具:作为社交工具来讲的话,客户的粘性信任度相比其他工具来讲更加高,早期360与QQ的3Q之争就验证了这样的一个道理: 2.用户量:目前其用户量达到了8亿之多,扣除一些其他因素,我们是不是可以变相的认为我国会上网的网民十

NSCoding的使用方法---Mac上的归档(优化版).

这个方法是根据上次发的那个方法进行了一些修改, 更加方便一些. 由于新建的类里面的代码没有更改, 所以这里不再写了. 优化的好处: 在开头的时候定义一个宏, 把路径直接放在宏这里, 如果以后要更改地址, 直接更改宏定义的就OK了. #import <Foundation/Foundation.h> #import "Human.h" #define PATH @"/Users/Cain/Desktop/Objective-C/实验代码/文件操作/归档/Human/

js数组遍历的常用的几种方法以及差异和性能优化

<script type="text/javascript"> /*对比: 1.map速度比foreach快 2.map会返回一个新数组,不对原数组产生影响,foreach不会产生新数组,foreach返回undefined 3.map因为返回数组所以可以链式操作,foreach不能 4, map里可以用return ,而foreach里用return不起作用,foreach不能用break,会直接报错*/ /*方法一:*/ var arr1 = [1, 2, 3, 4,