微信 php 获取ticket
<?php
header('content-type:text/html; charset=utf8');
define('TOKEN', 'youtoken'); // TOKEN
define('APP_ID', 'youid'); // 开发者AppID,服务号可获取
define('APP_SECRET', 'youSECRET'); // 开发者AppSecret,服务号可获取
set_time_limit(30); //为防止access_token获取失败导致死循环
$wechatObj = new test();
//echo '二维码地址:'.$wechatObj->QrcodeCreate(111);
//echo '显示结果'.$wechatObj->AccessTokenGet();
//连接数据库
$con = mysql_connect("localhost","root","mimabugaoshuini");
mysql_query("SET NAMES utf8");
mysql_select_db("servicedb", $con);
$a=$wechatObj->QrcodeCreate(111);
$arr = explode("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=",$a);
$query = "update sipuser set ticketid='".$arr[1]."' where id=100001";
$result = mysql_query($query) or die("Error in query: $query. ".mysql_error());
mysql_close($con);
//echo '二维码地址:'.$query;
class test {
private $token;
private $appID;
private $appSecret;
private $accessToken;
public function __CONSTRUCT(){
$this->token = TOKEN;
$this->appID = APP_ID;
$this->appSecret = APP_SECRET;
$this->accessToken = './access_token';
if(!file_exists($this->accessToken)){
$this->AccessTokenGet();
}
}
/* 创建二维码 @param - $qrcodeID传递的参数,$qrcodeType二维码类型 默认为临时二维码 @return - 返回二维码图片地址 */
public function QrcodeCreate($qrcodeID, $qrcodeType = 0) {
if ($qrcodeType == 0) {
$qrcodeType = 'QR_SCENE';
} else {
$qrcodeType = 'QR_LIMIT_SCENE';
}
$tempJson = '{"expire_seconds": 1800, "action_name": "' . $qrcodeType . '", "action_info": {"scene": {"scene_id": ' . $qrcodeID . '}}}';
$access_token = file_get_contents ( $this->accessToken );
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" . $access_token;
$tempArr = json_decode ( $this->JsonPost ( $url, $tempJson ), true );
if (@array_key_exists ( 'ticket', $tempArr )) {
return 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . $tempArr ['ticket'];
} else {
$this->ErrorLogger ( 'qrcode create falied.' );
$this->AccessTokenGet ();
$this->QrcodeCreate ();
}
}
private function AccessTokenGet(){
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$this->appID.'&secret='.$this->appSecret;
//$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxfcbb68eb1c87a00d&secret=a450e03bb8347ea77e4876590256badd';
$tempArr = json_decode(file_get_contents($url), true);
if(@array_key_exists('access_token', $tempArr)){
$tempWriter = fopen($this->accessToken, 'w');
fwrite($tempWriter, $tempArr['access_token']);
}else{
$this->ErrorLogger('access_token get falied.');
exit();
}
}
// /* 用户分组查询 */
public function GroupsQuery(){
$access_token = file_get_contents($this->accessToken);
$url = 'https://api.weixin.qq.com/cgi-bin/groups/get?access_token='.$access_token;
$tempArr = json_decode(file_get_contents($url), true);
if(@array_key_exists('groups', $tempArr)){
return $tempArr['groups']; //返回数组格式的分组信息
}else{
$this->ErrorLogger('groups query falied.');
$this->AccessTokenGet();
$this->GroupsQuery();
}
}
// 工具函数 //
/* 使用curl来post一个json数据 */
// CURLOPT_SSL_VERIFYPEER,CURLOPT_SSL_VERIFYHOST - 在做https中要用到
// CURLOPT_RETURNTRANSFER - 不以文件流返回,带1
private function JsonPost($url, $jsonData){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
if (curl_errno($curl)) {
$this->ErrorLogger('curl falied. Error Info: '.curl_error($curl));
}
curl_close($curl);
return $result;
}
/* 错误日志记录 */
private function ErrorLogger($errMsg){
$logger = fopen('./ErrorLog.txt', 'a+');
fwrite($logger, date('Y-m-d H:i:s')." Error Info : ".$errMsg."\r\n");
}
}
?>
微信 php 获取ticket的更多相关文章
- 解析nodejs微信开发-2获取ticket
获取ticket是需要拼接url,url中需要获得的tocken 1.先判断有无tocken:若有则拼接url: 2.请求url: a.处理回调数据,注意时间戳和签名处理方式,此两项并未存到ticke ...
- 微信获取ticket及生成二维码(临时或永久)
微信获取ticket及生成二维码(临时或永久) curl.php---- define("APPID",""); define("APPSECRET& ...
- php获取微信token和ticket并返回签名
jssdk.php页,主要获取token和ticket <?php /* * 微信公众号后台里获取appId和appSecret,并在公众号后台=>安全中心=>IP白名单中设置当前页 ...
- 转:微信开发获取地理位置实例(java,非常详细,附工程源码)
微信开发获取地理位置实例(java,非常详细,附工程源码) 在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础: 1.微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一 ...
- 微信开发获取地理位置实例(java,非常详细,附工程源码)
在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础: 1.微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一些必要的配置,以及如何调用微信接口. 2.微信开发之通过代理调试 ...
- [转] Android进阶——安卓接入微信,获取OpenID
PS: sendAuthRequest拿到code,通过code拿到access_token和openId,access_token可以拿到用户的信息 http://blog.csdn.net/hao ...
- 绑定微信以及获取openId
由于公司最近在做一个微信公众号的项目,需要获取用户openId,我再一次踏入了微信的坑! 先在这里告诫后来的同志,如果一样要开始做有关微信的东西,最好是有前辈,或者直接看完文档,不懂或者纳闷的地方直接 ...
- 微信授权获取用户openid前端实现
近来,倒霉的后台跟我说让我拿个openid做微信支付使用,寻思很简单,开始干活. 首先引导用户打开如下链接,只需要将appid修改为自己的就可以,redirect_url写你的重定向url h ...
- 百度webAPI配合微信JSDK获取用户当前位子
逻辑: ①通过微信JS-SDK 获取地理位置接口 获取经纬度 ②调用百度地图转换经纬度的API,得到百度地图的经纬度 ③调用百度地图 正/逆地址编码服务-->国际化逆地理编码 得到JSON数据, ...
随机推荐
- Android 开发ListView适配器优化
我们都知道Android中Adapter的作用就是ListView界面与数据之间的桥梁,当列表里的每一项显示到页面时,都会调用Adapter的getView方法返回一个View.想过没有? 在我们的列 ...
- IOS开发之xcode 快捷键
IOS开发也有一年多了,发现Xcode快捷键,还不熟,恶补一下.要不然真影响工作效率,呵呵! 1. 文件 CMD + N: 新文件 CMD + SHIFT + N: 新项目 CMD + O: 打开 C ...
- Image editing techniques and algorithms using Qt
费了好半天劲先翻译这一点.还有好多地方不明白.先弄明白这一点.继续以后的翻译. 这一篇文章我们将讨论不同的技术和算法来修改图像使用Qt.但是在这之前我们继续你必须知道一些原则处理图片. 这里主要有两种 ...
- 用纯jsp实现用户的登录、注册与退出
用户的登录.注册和退出是一个系统最常见的功能,现将各功能用jsp代码表示出来 用户的登录: 其中connDB是数据库连接类,将用户名username放入session中 <%@ page con ...
- GWT工程 —— HostedMode(宿主模式下调试) 所有的运行命令
Unknown argument: -helpGoogle Web Toolkit 1.7.0HostedMode [-noserver] [-port port-number | "aut ...
- 经典SQL语句集锦
下列语句部分是MsSql语句,不可以在access中使用. SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELET ...
- BZOJ 3277: 串/ BZOJ 3473: 字符串 ( 后缀数组 + RMQ + 二分 )
CF原题(http://codeforces.com/blog/entry/4849, 204E), CF的解法是O(Nlog^2N)的..记某个字符串以第i位开头的字符串对答案的贡献f(i), 那么 ...
- URL伪静态设置 (apache2.4)
` ` 1.修改apche主配置文件 主要是 #LoadModule rewrite_module modules/mod_rewrite.so 改为 LoadModule rewrite_modul ...
- 【LeetCode题意分析&解答】38. Count and Say
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
- LintCode-数组划分
题目描述: 给出一个整数数组nums和一个整数k.划分数组(即移动数组nums中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中第一个位置i,满足 ...