canyin-project/ybcy/controllers/channelApi/WechatController.php
2024-11-01 16:07:54 +08:00

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;
}
}