/**
* 微信商城系统
* Copyright (c) 2018
* Author:linhe
*/
namespace app\modules\m\controllers;
use app\common\components\HttpClient;
use app\common\services\UrlService;
use app\models\member\Member;
use app\models\oauth\OauthMemberBind;
use app\modules\m\controllers\common\BaseController;
use app\modules\m\controllers\common\MobileController;
use yii\web\controller;
/**
* Class OauthController
* @package app\modules\m\controllers
* 微信授权class
*/
class OauthController extends BaseController
{
public function actionLogin(){
$scope = $this->get("scope","snsapi_userinfo");
//获取code
$appid = \Yii::$app->params['weixin']['appid'];
//配置信息获取appid
$redirect_uri=UrlService::buildMurl('/oauth/callback');
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$appid}&redirect_uri={$redirect_uri}&response_type=code&scope={$scope}&state=STATE#wechat_redirect";
return $this->redirect($url);
//跳转
}
/**
* @return \yii\web\Response
* 微信回调
*/
public function actionCallback(){
$appid = \Yii::$app->params['weixin']['appid'];
//拉取appid
$sk = \Yii::$app->params['weixin']['sk'];
//获取sk
$code =$this->get("code","");
//获取code
if(!$code){
return $this->goHome();
}
$url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid={$appid}&secret={$sk}&code={$code}&grant_type=authorization_code";
$ret = HttpClient::get($url);//curl的get请求
$ret = @json_decode($ret,true);//返回信息
$ret_token = isset($ret['access_token'])?$ret['access_token']:'';
if(!$ret_token){
return $this->goHome();
}
$openid = isset($ret['openid'])?$ret['openid']:'';
$scope = isset($ret['scope'])?$ret['scope']:'';
$this->setLoginStatus($openid);
if($scope == "snsapi_userinfo") {
$url = "https://api.weixin.qq.com/sns/userinfo?access_token={$ret_token}&openid={$openid}&lang=zh_CN";
$wechat_user_info = HttpClient::get($url);
$wechat_user_info=@json_decode($wechat_user_info,true);
$reg_bind = Member::find()->where(['openid'=>$openid])->one();
if(!$reg_bind){
$member_info = new Member();
$member_info ->openid= $wechat_user_info['openid'];
$member_info ->nickname= $wechat_user_info['nickname'];
$member_info ->avatar= $wechat_user_info['headimgurl'];
$member_info ->sex= $wechat_user_info['sex'];
$member_info->save(0);
//存入数据库
}
}
return $this->redirect(UrlService::buildMurl("/user/index"));
}
}