<?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的更多相关文章

  1. 解析nodejs微信开发-2获取ticket

    获取ticket是需要拼接url,url中需要获得的tocken 1.先判断有无tocken:若有则拼接url: 2.请求url: a.处理回调数据,注意时间戳和签名处理方式,此两项并未存到ticke ...

  2. 微信获取ticket及生成二维码(临时或永久)

    微信获取ticket及生成二维码(临时或永久) curl.php---- define("APPID",""); define("APPSECRET& ...

  3. php获取微信token和ticket并返回签名

    jssdk.php页,主要获取token和ticket <?php /* * 微信公众号后台里获取appId和appSecret,并在公众号后台=>安全中心=>IP白名单中设置当前页 ...

  4. 转:微信开发获取地理位置实例(java,非常详细,附工程源码)

    微信开发获取地理位置实例(java,非常详细,附工程源码)   在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础: 1.微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一 ...

  5. 微信开发获取地理位置实例(java,非常详细,附工程源码)

    在本篇博客之前,博主已经写了4篇关于微信相关文章,其中三篇是本文基础: 1.微信开发之入门教程,该文章详细讲解了企业号体验号免费申请与一些必要的配置,以及如何调用微信接口. 2.微信开发之通过代理调试 ...

  6. [转] Android进阶——安卓接入微信,获取OpenID

    PS: sendAuthRequest拿到code,通过code拿到access_token和openId,access_token可以拿到用户的信息 http://blog.csdn.net/hao ...

  7. 绑定微信以及获取openId

    由于公司最近在做一个微信公众号的项目,需要获取用户openId,我再一次踏入了微信的坑! 先在这里告诫后来的同志,如果一样要开始做有关微信的东西,最好是有前辈,或者直接看完文档,不懂或者纳闷的地方直接 ...

  8. 微信授权获取用户openid前端实现

    近来,倒霉的后台跟我说让我拿个openid做微信支付使用,寻思很简单,开始干活.   首先引导用户打开如下链接,只需要将appid修改为自己的就可以,redirect_url写你的重定向url   h ...

  9. 百度webAPI配合微信JSDK获取用户当前位子

    逻辑: ①通过微信JS-SDK 获取地理位置接口 获取经纬度 ②调用百度地图转换经纬度的API,得到百度地图的经纬度 ③调用百度地图 正/逆地址编码服务-->国际化逆地理编码 得到JSON数据, ...

随机推荐

  1. Mongodb数据库命令端经常使用操作

    数据库基本命令操作 数据库经常使用命令 1.Help查看命令提示 help db.help(); db.yourColl.help(); db.youColl.find().help(); rs.he ...

  2. 快速定位MS Sql Server 数据库死锁进程

    最近在做一个大型项目,由于数据设计采用离散型数据库设计,以方便需求变更及用户自定义流程要素,因为要素用户自定义,数据完整性靠代码约束变得不太现实,只能依靠表间关系来约束,结果因此导致数据的操作经常产生 ...

  3. android入门——Activity(1)

    结构图 mainfests文件夹下面有一个AndroidMainfest.xml文件,类似web开发中的web.xml文件负责整个项目的配置,每当我们新建一个activity,都要在这个文件中进行配置 ...

  4. STL模板_map

    map -key - value -键值无法重复 multimap -键值可以重复 声明: -map<int, string> m -multimap<int, string> ...

  5. hdu 4033 Regular Polygon 计算几何 二分+余弦定理

    题目链接 给一个n个顶点的正多边形, 给出多边形内部一个点到n个顶点的距离, 让你求出这个多边形的边长. 二分边长, 然后用余弦定理求出给出的相邻的两个边之间的夹角, 看所有的加起来是不是2Pi. # ...

  6. why-and-howto-calculate-your-events-per-second

    http://eromang.zataz.com/2011/04/12/why-and-howto-calculate-your-events-per-second/

  7. BlueTooth的EDR是什么

    EDR 即Enhanced data rate,是蓝牙技术中增强速率的缩写,其特色是大大提高了蓝牙技术的数据传输速率,达到了2.1Mbps ,是目前蓝牙技术的三倍.因此除了可获得更稳定的音频流传送的更 ...

  8. Vim 实用技术,第 1 部分: 实用技巧(转)

    原文链接:http://blog.jobbole.com/20604/ 0. Vim 简介 作为开源世界最重要的编辑器之一(另一个是 Emacs),Vim 以其强大的功能和可定制能力被众多开发者所喜爱 ...

  9. How to get the xpath by clicking an html element

    How to get the xpath by clicking an html element How to get the xpath by clicking an html element

  10. Linux特殊权限:SUID、SGID、SBIT

    SUID:      只对二进制程序有效      执行者对于程序需要有x权限      在程序运行过程中,执行者拥有程序拥有者的权限      例如:      普通用户执行passwd命令.   ...