文件
mashangyoujiu/Application/Vip/Controller/OpenidController.class.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();
}
}