76 lines
3.1 KiB
PHP
76 lines
3.1 KiB
PHP
<?php
|
|
namespace app\controllers\channelApi;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Yii;
|
|
use yii\web\Controller;
|
|
use app\models\common\WeChat;
|
|
use app\models\common\Config;
|
|
use EasyWeChat\Factory;
|
|
class WechatController extends Controller{
|
|
protected $uniacid;
|
|
public $enableCsrfValidation = false;
|
|
public function actionCallback(){
|
|
$uniacid=Yii::$app->session->get('configData')['uniacid'];
|
|
$data=WeChat::checkAuth($uniacid,$_GET['code']);
|
|
$data=json_decode($data,true);
|
|
if($data){
|
|
$access_token=$data['access_token'];
|
|
$openid=$data['openid'];
|
|
$url2 = "https://api.weixin.qq.com/sns/userinfo?access_token=".$access_token."&openid=".$openid."&lang=zh_CN";
|
|
$resss= httpRequest($url2);
|
|
$user=json_decode($resss,true);
|
|
$user['uniacid']=$uniacid;
|
|
|
|
Yii::$app->session->set('wechat_user',$user);
|
|
if($data['openid']&&$data['unionid']){
|
|
$res=(new \yii\db\Query())
|
|
->from('{{%ybwm_member}}')
|
|
->where('unionid=:unionid and bindType=1 and uniacid='.$uniacid,[':unionid'=>$data['unionid']])
|
|
->one();
|
|
//如果小程序有记录合并记录
|
|
if($res){
|
|
Yii::$app->db->createCommand()->update('{{%ybwm_member}}', ['wechatOpenId'=>$data['openid']],['id'=>$res['id']])->execute();
|
|
}
|
|
}
|
|
$url=urldecode(Yii::$app->session->get('target_url'));
|
|
|
|
//微擎版本
|
|
Yii::$app->response->redirect($url);
|
|
}
|
|
}
|
|
public function actionLogin(){
|
|
$result=axios_request();
|
|
$uniacid=Yii::$app->request->headers->get('uniacid');
|
|
$configData=['uniacid'=>$uniacid];
|
|
Yii::$app->session->set('configData',$configData);
|
|
$session=Yii::$app->session;
|
|
$wechat_user=$session->get('wechat_user');
|
|
|
|
// 未登录
|
|
if (empty($wechat_user)||$wechat_user['uniacid']!==$uniacid) {
|
|
$config=Config::getSystemSet('wechatConfig',$uniacid);
|
|
$appid = $config['appId'];
|
|
$redirect_uri = Yii::$app->request->hostInfo.'/channelApi/wechat/callback';
|
|
$redirect_uri = urlencode($redirect_uri);
|
|
Yii::$app->session->set('target_url',urlencode($result['url']));
|
|
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appid&redirect_uri=$redirect_uri&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
|
|
echo json_encode(['code'=>1,'data'=>$url]);
|
|
die;
|
|
}
|
|
// 已经登录过
|
|
// $session=Yii::$app->session;
|
|
// $data = $session->get('wechat_user');
|
|
// echo json_encode(['code'=>1,'data'=>$data]);
|
|
// die;
|
|
}
|
|
//获取公众号jssdk签名
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function actionGetWxSign(){
|
|
$result=axios_request();
|
|
$uniacid=Yii::$app->request->headers->get('uniacid');
|
|
$sign=WeChat::getSignPackage($uniacid,$result['url']);
|
|
echo json_encode(['code'=>1,'msg'=>'成功','data'=>$sign]);die;
|
|
}
|
|
} |