qlg.tsgz.moe/wxtmp/pptWXBase.php
2019-09-06 23:53:10 +08:00

215 lines
7.1 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
require '../vendor/wechat/vendor/autoload.php';
class pptWXBase
{
protected $openid;
public function __construct(){
session_start();
//$_SESSION['openid'] = null;
if(!isset($_SESSION['openid'])){
$openid = $this->getHeaderValue('openid');
if(empty($openid)){
//去登录
$code = isset($_GET['code']) ? $_GET['code'] : '';
$this->wxLogin($code);
exit();
}else{
//已经有openid了不用登录
$_SESSION['openid'] = $openid;
}
}
$this->openid = $_SESSION['openid'];
}
/**
* 获取请求头
* @param [string] $keyName [头名]
* @return [string] [头值]
*/
public function getHeaderValue($keyName){
$headerValue = '';
if (function_exists('apache_request_headers') && $result = apache_request_headers()) {
$headerValue = $result[$keyName];
} else {
foreach ($_SERVER as $key => $val) {
if (0 === strpos($key, 'HTTP_')) {
$key = str_replace('_', '-', strtolower(substr($key, 5)));
if($key == $keyName){
$headerValue = $val;
break;
}
}
}
}
return $headerValue;
}
/**
* 调用微信登录
* @return [type] [description]
*/
public function wxLogin($code){
//登录过程
if(!$code){
//调取授权
$this->getAuth();
}else{
//获取openid同时获取用户信息
$authInfo = $this->getOpenid($code,true);
if(isset($authInfo['openid'])){
$_SESSION['openid'] = $authInfo['openid'];
$this->openid = $_SESSION['openid'];
echo "<script>document.location.reload()</script>";exit();
}
}
}
/**
*第一步用户同意授权获取code
*getAuth();
*第二步通过code换取网页授权access_token
*getOpenid($code,$type=false){
*第三步:拉取用户信息(需scope为 snsapi_userinfo)
*微信用户信息
*第一种直接在第二步获取openid时获取
*getOpenid($code,$type=true);
*第二种 通过用户授权accress_token获取
*getUserInfo($userAuthAccessToken, $openid);
*第三种 通过公众号accressToken获取
*getUserInfoByToken($accessToken, $openid)
*
*
*/
/**
* 获取用户授权CODE回调为当前地址需要判断Code
*
*/
public function getAuth(){
\WeChat\Core\User::code(); # 重载微信授权
}
/**
* 通过code获取openidaccess_token或用户信息
* @param [string] $code [用户授权code]
* @param [string] $type [true:同时获取用户信息 | false:只获取用户openid]
* @return [string] [openid]
*/
public function getOpenid($code, $type=false){
return \WeChat\Core\User::openid($code, $type);
}
/**
* 通过用户授权access_token获取用户信息
* @param [string] $userAuthAaccessToken [用户授权access_token]
* @param [string] $openid [用户openid]
* @return [array] []
*/
public function getUserInfo($userAuthAccessToken, $openid){
return \WeChat\Core\User::userInfo($userAuthAccessToken, $openid);
}
/**
* 通过公众号accessToken获取用户信息
* @param [string] $accessToken [公众号access_token]
* @param [string] $openid [用户openid]
* @return [array] []
*/
public function getUserInfoByToken($openid){
return \WeChat\Core\User::newUserInfo($openid);
}
/**
* 获取公众号下所有模板信息
* @return [array] [模板列表]
*/
public function getAllTemplateMsg(){
$accessToken = $this->getAccessToken();
return \WeChat\Core\Template::gain($accessToken);
}
/**
* 获取用户accessToken
* @return [string] accessToken
*/
public function getAccessToken(){
$accessToken = \WeChat\Core\Token::gain(); # 获取微信access_token
$accessToken = $accessToken['access_token'];
return $accessToken;
}
/**
* 发送模板消息
* @param [string] $templateId [模板ID]
* @param [string] $openid [用户openid]
* @param [array] $data [消息数据]
* @param [string] $url [点击跳转地址]
* @param string $color [标题颜色]
* @return [array] 消息是否成功发送
* errcode: 0成功其他失败
* errmsg: 错误信息ok成功其他失败
* msgid: 消息id
*
*/
public function sendTemplateMsg($templateId, $openid, $data, $url, $color = '#7B68EE'){
//\WeChat\Core\User::code($appID); # 重载微信授权
$accessToken = $this->getAccessToken();
return \WeChat\Core\Send::push($accessToken, $templateId, $openid, $data, $url, $color);
}
}
// $templateId = 'ObkTv-txyqsv8Toie4HC8PnBFJmwygw9zPJbx8h0FcM';
// $openid = 'objYQuHNqKTi2sjSTzLTc7C7PjDo';
// $url = 'http://t.ect99.com';
// //模板消息
// $data = [
// 'first'=>['value'=>'您的活动已通过','color'=>"#FF0000"],
// 'keyword1'=>['value'=>'测试文章标题'], //keyword需要与配置的模板消息对应
// 'keyword2'=>['value'=>date("Y-m-d H:i:s")],
// 'keyword3'=>['value'=>'测试发布人'],
// 'keyword4'=>['value'=>'测试状态'],
// 'remark' =>['value'=>'备注:这是测试']
// ];
// var_dump(pptWX->sendTemplateMsg($templateId, $openid, $data, $url));
// //登录过程
// $code = isset($_GET['code']) ? $_GET['code'] : '';
// if(!$code){
// //调取授权
// pptWXBase::getAuth();
// }else{
// //获取授权信息只获取openid
// //$authInfo = pptWXBase::getOpenid($code);
// // 返回代码示例
// // array(5) {
// // ["access_token"]=>
// // string(89) "22_HQ4kM7_gbUZ-fGP1TnFLeh-wxk-jWyjc_PzrbYpICXyuGCNKWEi_Yz5_qnStDGP56I8OD4xJvNRVS98U1TC6Zw"
// // ["expires_in"]=>
// // int(7200)
// // ["refresh_token"]=>
// // string(89) "22_bdxpWwS0wADfSNO1y6Sq7txoWBK3hG4x3vvx_WOe-sovDig-yWZ43MsBtzJlY2svcxmlvLxKwBughKbJL14b8A"
// // ["openid"]=>
// // string(28) "objYQuHNqKTi2sjSTzLTc7C7PjDo"
// // ["scope"]=>
// // string(15) "snsapi_userinfo"
// // }
// //获取用户信息
// //通过授权token获取用户信息
// //$userInfo = pptWXBase::getUserInfo($authInfo['access_token'], $authInfo['openid']);
// //获取openid同时获取用户信息
// $authInfo = pptWXBase::getOpenid($code,true);
// // 返回代码示例
// // array(9) {
// // ["openid"]=>
// // string(28) "objYQuHNqKTi2sjSTzLTc7C7PjDo"
// // ["nickname"]=>
// // string(12) "网事悠悠"
// // ["sex"]=>
// // int(1)
// // ["language"]=>
// // string(5) "zh_CN"
// // ["city"]=>
// // string(6) "枣庄"
// // ["province"]=>
// // string(6) "山东"
// // ["country"]=>
// // string(6) "中国"
// // ["headimgurl"]=>
// // string(130) "http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTJW7ghRsPm6dJReYJ97lUMicgjQLVdSaPr3SKBZ29riaZ3KOFaw1nmKyt4LtibvN2FkzFTTESgetm9QQ/132"
// // ["privilege"]=>
// // array(0) {
// // }
// // }
// var_dump($authInfo);
// }