182 行
7.8 KiB
PHP
可执行文件
182 行
7.8 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Vip\Controller;
|
|
|
|
use Think\Controller;
|
|
use Think\Jssdk;
|
|
use Think\Jssdks;
|
|
class OpenidController extends Controller {
|
|
public static $SET;//全局静态配置
|
|
//微信缓存
|
|
protected static $_wxappid;
|
|
protected static $_wxappsecret;
|
|
protected static $_cardinfo;
|
|
|
|
public function storeCardInfo(){
|
|
//通过门店id 获取会员卡信息
|
|
$where['storeid'] = session('primaryid');
|
|
$cardinfo = M('wx_membercard')->Field('id,card_id')->where($where)->find();
|
|
return $cardinfo;
|
|
}
|
|
Public function _initialize() {
|
|
//定义全局门店id
|
|
/*$this->diemsg('商家会员卡权限未开启,请联系商家');*/
|
|
$storeid = I('get.primaryid');
|
|
$storeids = session('primaryid');
|
|
//存储商户id
|
|
if(!empty($storeid)){
|
|
if(!empty($_SESSION['sqmode']) && session('wxuser')['primaryid']!=$storeid){
|
|
session('sqmode',null);
|
|
}
|
|
session('primaryid',$storeid);
|
|
}else if(empty($storeids)){
|
|
$this->diemsg(0,'未知的门店信息');
|
|
exit;
|
|
}
|
|
|
|
//判断当前门店是否有使用会员卡的权限
|
|
$info = D('Plug')->getAccess(!empty($storeid)?$storeid:$storeids,'vip');
|
|
if(!$info){
|
|
$this->diemsg(0,'商家会员卡权限未开启,请联系商家');
|
|
exit;
|
|
}
|
|
self::$SET = $_SESSION['SET'] = $this->checkSet();
|
|
self::$_cardinfo = $this->storeCardInfo();
|
|
$appset = self::$SET;
|
|
/*dump($appset);
|
|
exit;*/
|
|
if($appset['type']==1){
|
|
//用户自定义配置微信公众号
|
|
self::$_wxappid = self::$SET['appid'];
|
|
self::$_wxappsecret = self::$SET['appsercet'];
|
|
if (!$_SESSION['sqmode']) {
|
|
if (strpos($_SERVER["HTTP_USER_AGENT"], "MicroMessenger")) {
|
|
//判断code是否存在
|
|
if ($_GET['code']) {
|
|
$_url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
if ($_GET['code'] != 'authdeny') {
|
|
//用户授权
|
|
$options['appid'] = self::$_wxappid;
|
|
$options['appsecret'] = self::$_wxappsecret;
|
|
$wx = new \Util\Wx\Wechat($options);
|
|
$re = $wx->getOauthAccessToken($_GET['code']);//获取access_token和openid
|
|
$access_token = $re['access_token'];
|
|
$openid = $re['openid'];
|
|
$user = $wx->getOauthUserinfo($access_token, $openid);
|
|
$user['primaryid'] = session('primaryid');
|
|
if ($re) {
|
|
$_SESSION['sqmode'] = 'wecha';
|
|
$_SESSION['sqopenid'] = $openid;
|
|
$_SESSION['wxuser'] = $user;
|
|
}
|
|
//正常处理完成,返回原链接
|
|
$rurl = $_SESSION['oaurl'];
|
|
$this->redirect($rurl);
|
|
} else {
|
|
$this->diemsg(0, '本应用需要您的授权才可以使用!');
|
|
}
|
|
}else{
|
|
$_url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
|
|
$options['appid'] = self::$_wxappid;
|
|
|
|
$options['appsecret'] = self::$_wxappsecret;
|
|
$wx = new \Util\Wx\Wechat($options);
|
|
$squrl = $wx->getOauthRedirect($_url, '1', 'snsapi_base');
|
|
header("Location:" . $squrl);
|
|
exit;
|
|
}
|
|
}else{
|
|
$this->diemsg(0, '请使用微信浏览器访问本应用!');
|
|
}
|
|
}
|
|
}else if($appset['type']==2){
|
|
//第三方授权微信公众号
|
|
$appinfo = M('appweixin')->where('id = 1')->find();
|
|
|
|
$options['appid'] = self::$SET['authorizer_appid'];
|
|
if (!$_SESSION['sqmode']) {
|
|
if (strpos($_SERVER["HTTP_USER_AGENT"], "MicroMessenger")) {
|
|
//判断code是否存在
|
|
if ($_GET['code']) {
|
|
$_url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
if ($_GET['code'] != 'authdeny') {
|
|
//用户授权
|
|
$wx = new \Util\Wx\Wechat($options);
|
|
$token = get_acc_token();
|
|
$re = $wx->getOauthAccessTokens($_GET['code'],$appinfo['appid'],$token);//获取access_token和openid
|
|
|
|
$access_token = $re['access_token'];
|
|
$openid = $re['openid'];
|
|
$user = $wx->getOauthUserinfos($access_token, $openid,$options['appid']);
|
|
if ($re) {
|
|
$_SESSION['sqmode'] = 'wecha';
|
|
$_SESSION['sqopenid'] = $openid;
|
|
$_SESSION['wxuser'] = $user;
|
|
}
|
|
//正常处理完成,返回原链接
|
|
$rurl = $_SESSION['oaurl'];
|
|
$this->redirect($rurl);
|
|
} else {
|
|
$this->diemsg(0, '本应用需要您的授权才可以使用!');
|
|
}
|
|
}else{
|
|
$_url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
|
|
$wx = new \Util\Wx\Wechat($options);
|
|
$squrl = $wx->getOauthRedirects($_url, '1', 'snsapi_base',$appinfo['appid']);
|
|
header("Location:" . $squrl);
|
|
exit;
|
|
}
|
|
}else{
|
|
$this->diemsg(0, '请使用微信浏览器访问本应用!');
|
|
}
|
|
}
|
|
}
|
|
//主店id 会员卡id
|
|
$primaryid = I('get.primaryid')?I('get.primaryid'):session('primaryid');
|
|
session('primaryid',$primaryid);
|
|
//查找用户是否激活会员卡
|
|
$map['openid'] = $_SESSION['sqopenid'];
|
|
session('openid',$_SESSION['sqopenid']);
|
|
$map['primaryid'] = session('primaryid');
|
|
$userinfo = M('vip')->where($map)->find();
|
|
}
|
|
public function index(){
|
|
//$url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']."?openid=".session('openid');
|
|
$map['storeid'] = session('primaryid');
|
|
$wechat = M('wxconfig')->where($map)->find();
|
|
if($wechat['type']==1){
|
|
$jssdk = new Jssdk($wechat['appid'],self::$_wxappsecret);
|
|
}else if($wechat['type']==2){
|
|
$access_token = get_authorizer_access_token($map['storeid']);
|
|
$jssdk = new Jssdks($wechat['authorizer_appid'],$access_token);
|
|
}else{
|
|
$this->error('微信配置参数有误');
|
|
}
|
|
|
|
$signPackage = $jssdk->GetSignPackage();
|
|
$this->assign('signPackage',$signPackage);
|
|
$openid = session('openid');
|
|
$this->assign('openid',$openid);
|
|
$this->display();
|
|
}
|
|
//设置全局变量 全局缓存SET
|
|
public function checkSet()
|
|
{
|
|
$storeid = session('primaryid');
|
|
$set = M('wxconfig')->where('storeid = "'.$storeid.'"')->find();
|
|
//print_r(session('wxuser'));
|
|
return $set ? $set : $this->error('系统全局设置未定义!');
|
|
}
|
|
//禁止不动的失败提示的信息
|
|
public function diemsg($status, $msg)
|
|
{
|
|
//成功为1,失败为0
|
|
$this->error($msg);
|
|
|
|
//$tpl = $this->fetch('');
|
|
$this->display('Base_diemsg');
|
|
die();
|
|
}
|
|
} |