Browse Source

微信授权换成完整地址

shish 6 years ago
parent
commit
441a73da8f

+ 17 - 28
app/mobile/controllers/AuthController.php

@@ -5,6 +5,7 @@ namespace mobile\controllers;
 use biz\merchant\services\MerchantService;
 use biz\platform\services\WxOpenService;
 use biz\user\services\UserService;
+use common\components\httpUtil;
 use common\components\jwt;
 use common\components\stringUtil;
 use Yii;
@@ -31,11 +32,14 @@ class AuthController extends PublicController
 	public function actionPrepare()
 	{
 		$get = Yii::$app->request->get();
-		$suffixUrl = isset($get['suffixUrl']) && !empty($get['suffixUrl']) ? $get['suffixUrl'] : '';
-		if (empty($suffixUrl)) {
+		$url = isset($get['url']) && !empty($get['url']) ? $get['url'] : '';
+		if (empty($url)) {
 			util::fail('没有网址');
 		}
-		$account = isset($get['account']) ? $get['account'] : 0;
+		$account = httpUtil::getAccount($url);
+		if (empty($account)) {
+			util::fail('没有商家帐号');
+		}
 		$merchant = MerchantService::getById($account);
 		if (empty($merchant)) {
 			util::fail('商家无效');
@@ -48,12 +52,10 @@ class AuthController extends PublicController
 		 * 4.snsapi_base静默方式使用的场景更多,所以参数authScope默认使用snsapi_base
 		 */
 		$authScope = isset($get['authScope']) ? $get['authScope'] : 'snsapi_base';
-		$host = Yii::$app->request->getHostInfo();
-		$suffixUrlEncode = stringUtil::urlSafeB64Encode($suffixUrl);
-		$url = $host . '/auth/get-user-info?suffixUrl=' . $suffixUrlEncode . '&authScope=' . $authScope;
-		Yii::info($url);
-		weixinUtil::getToken($url, $merchant, $authScope);
-		util::success();
+		$urlEncode = stringUtil::urlSafeB64Encode($url);
+		//微信授权获取code shish 2019.11.24
+		weixinUtil::getCode($urlEncode, $merchant, $authScope);
+		util::end();
 	}
 	
 	//授权获取用户信息 shish 2019.11.20
@@ -67,18 +69,9 @@ class AuthController extends PublicController
 		if (isset($get['state']) && $get['state'] == 'authdeny') {
 			util::fail('auth fail');
 		}
-		//这里要换成根据前端的数据来转 todo
-		$account = 0;
-		$suffixUrlEncode = $get['suffixUrl'];
-		$suffixUrl = stringUtil::urlSafeBase64Decode($suffixUrlEncode);
-		$newSuffixUrl = str_replace("#", "", $suffixUrl);
-		$parse = parse_url($newSuffixUrl);
-		if (isset($parse['query'])) {
-			parse_str($parse['query'], $queryArray);
-			if (isset($queryArray['account']) && !empty($queryArray['account'])) {
-				$account = $queryArray['account'];
-			}
-		}
+		$urlEncode = $get['url'];
+		$url = stringUtil::urlSafeBase64Decode($urlEncode);
+		$account = httpUtil::getAccount($url);
 		if (empty($account)) {
 			util::stop('商店ID无效!');
 		}
@@ -92,10 +85,9 @@ class AuthController extends PublicController
 			util::stop('没有授权类型');
 		}
 		$data = weixinUtil::getOpenId($code, $merchant);
-		//获取code失败,重新获取
 		if ($data === false) {
-			$url = 'http://' . $_SERVER['HTTP_HOST'] . '/auth/get-user-info?suffixUrl=' . $suffixUrlEncode . '&authScope=' . $authScope;
-			weixinUtil::getToken($url, $merchant, $authScope);
+			//微信授权获取code shish 2019.11.24
+			weixinUtil::getCode($urlEncode, $merchant, $authScope);
 			util::end();
 		}
 		$openId = $data['openid'];
@@ -140,15 +132,12 @@ class AuthController extends PublicController
 		Yii::$app->params['user'] = $user;
 		Yii::$app->params['merchantId'] = $merchantId;
 		Yii::$app->params['merchant'] = $merchant;
-		$host = Yii::$app->request->getHostInfo();
 		//来源
 		$sourceId = WxOpenService::getSourceId();
 		$userId = $user['id'];
 		//获取token
 		$token = jwt::get($sourceId, $userId);
-		$suffixUrl = strpos($suffixUrl, '?') === false ? $suffixUrl . '?token=' . $token : $suffixUrl . '&token=' . $token;
-		$url = $host . '/' . $suffixUrl;
-		echo $url;die;
+		$url = strpos($url, '?') === false ? $url . '?token=' . $token : $url . '&token=' . $token;
 		$this->redirect($url);
 	}
 	

+ 4 - 1
app/mobile/controllers/MainController.php

@@ -35,7 +35,10 @@ class MainController extends PublicController
 
 	public function actionJwt()
 	{
-		UserService::getById(12536631);
+		
+		$newUrl = 'http://m.huaml.com/#/pay/index?account=12358&shopId=15680';
+
+
 		 $arr = array(
 	       1 => array('id'=>'1','parentid'=>0,'name'=>'一级栏目一'),
 	       2 => array('id'=>'2','parentid'=>0,'name'=>'一级栏目二'),

+ 20 - 1
common/components/httpUtil.php

@@ -51,5 +51,24 @@ class httpUtil
 		//$token = isset($headers['token']) ? $headers['token'] : '';
 		return $headers;
 	}
-	
+
+	//获取地址里的account shish 2019.11.24
+	public static function getAccount($url)
+	{
+		//前端链接,需要去掉链接#号前面部分进行解析
+		$pos = strpos($url, '#');
+		if (isset($pos)) {
+			$url = substr($url, $pos + 1);
+		}
+		$parse = parse_url($url);
+		$account = 0;
+		if (isset($parse['query'])) {
+			parse_str($parse['query'], $queryArray);
+			if (isset($queryArray['account']) && !empty($queryArray['account'])) {
+				$account = $queryArray['account'];
+			}
+		}
+		return $account;
+	}
+
 }

+ 1 - 1
common/components/stringUtil.php

@@ -459,5 +459,5 @@ class stringUtil
 			return $strlen == 2 ? $firstStr . str_repeat('*', mb_strlen($name, 'utf-8') - 1) : $firstStr . str_repeat("*", $strlen - 2) . $lastStr;
 		}
 	}
-	
+
 }

+ 6 - 3
common/components/weixinUtil.php

@@ -520,10 +520,13 @@ class weixinUtil
 	}
 	
 	/**
-	 * 获取Token
+	 * 微信授权获取code
 	 */
-	public static function getToken($REDIRECT_URI, $merchant, $scope)
+	public static function getCode($urlEncode, $merchant, $scope)
 	{
+		$host = Yii::$app->request->getHostInfo();
+		$REDIRECT_URI = $host . '/auth/get-user-info?url=' . $urlEncode . '&authScope=' . $scope;
+		Yii::info($REDIRECT_URI);
 		$appId = $merchant['wxAppId'];
 		$id = configDict::getConfig('openId');
 		$open = xhWxOpenService::getById($id);
@@ -1321,7 +1324,7 @@ class weixinUtil
 		}
 		return ['url' => $url];
 	}
-
+	
 	/**
 	 * 拉取门店所有的设备信息
 	 * @return array