微信 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数据, ...
随机推荐
- 04737_C++程序设计_第9章_运算符重载及流类库
例9.1 完整实现str类的例子. #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> ...
- 整理Linux查看系统日志的一些经常使用命令
整理Linux查看系统日志的一些经常使用命令 last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行. -d 指定记录文件.指定记录文件.将IP地址转换成主机名称. -f <记录文 ...
- 【Android进阶学习】shape和selector的结合使用
shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...
- Canvas路径、描边、填充
<script> var context = document.getElementById('canvas').getContext('2d'); context.font = '48p ...
- 集合的实现 -- 数据结构与算法的javascript描述 第九章
集合 集合(set)是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在. code function Set() ...
- 更改DataTable列名方法
1.通过DataAdapter将查询的结果填充到DataSet的表(DataTable)中: 如:dataAdapter.Fill(dataSet),这时dataSet的表名默认为Table 如果使用 ...
- Nutch
nutch 插件开发[资料整理]:http://my.oschina.net/cloudcoder/blog/472915 Nutch2.3+Mongodb+ElasticSearch:http:// ...
- linux php文件include失败 一个很神奇的问题
1. html生成失败,权限问题 前天用php生成模板,在windows上开发,include文件,读缓存写文件,顺风顺水,晚上写完后传到linux上html生成失败,发现文件和文件夹都没生成,网上查 ...
- HelloWorld——Cocos2d-x学习历程(二)
HelloWorld分析: 1."resource"文件夹 该文件夹主要用于存放游戏中需要的图片.音频和配置等资源文件. 2."include"和"s ...
- hadoop笔记之hdfs
1.HDFS设计基础与目标 1.HDFS设计基础与目标 (1)硬件错误是常态,因此需要冗余. (2)流式数据访问.即数据批量读取而非随机读写,Hadoop擅长做的是数据分析而不是事务处理. (3)大规 ...