Преглед изворни кода

公众号授权回调地址变更

shish пре 6 година
родитељ
комит
cd08042d5c
2 измењених фајлова са 53 додато и 49 уклоњено
  1. 44 41
      app/www/config/main.php
  2. 9 8
      app/www/controllers/WxOpenController.php

+ 44 - 41
app/www/config/main.php

@@ -1,47 +1,50 @@
 <?php
 $params = array_merge(
-    require(__DIR__ . '/../../../common/config/params.php'),
-    require(__DIR__ . '/../../../common/config/params-local.php'),
-    require(__DIR__ . '/params.php'),
-    require(__DIR__ . '/params-local.php')
+	require(__DIR__ . '/../../../common/config/params.php'),
+	require(__DIR__ . '/../../../common/config/params-local.php'),
+	require(__DIR__ . '/params.php'),
+	require(__DIR__ . '/params-local.php')
 );
 
 return [
-    'id' => 'app-www',
-    'basePath' => dirname(__DIR__),
-    'controllerNamespace' => 'www\controllers',
-    'bootstrap' => ['log'],
-    'defaultRoute' => 'main/index',//默认控制器
-    'modules' => [],
-    'components' => [
-	    'user' => [
-		    'identityClass' => 'common\models\xhWxOpenAdmin',
-		    'enableAutoLogin' => true,
-		    'identityCookie' => [
-		    	'name' => 'platformUser', // unique for platform
-		    ],
-		    'loginUrl' => ['main/login'],
-	    ],
-        'log' => [
-            'traceLevel' => YII_DEBUG ? 3 : 0,
-            'targets' => [
-                [
-                    'class' => 'yii\log\FileTarget',
-                    'levels' => ['error', 'warning'],
-                ],
-            ],
-        ],
-        'errorHandler' => [
-            'errorAction' => 'site/error',
-        ],
-        'urlManager' => [
-            'enablePrettyUrl' => true,
-            'showScriptName' => false,
-            'rules' => [
-            	'wx/<appId:\w+>' => 'wx/api',//公众号消息与事件接收URL
-            	'<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
-            ],
-        ],
-    ],
-    'params' => $params,
+	'id' => 'app-www',
+	'basePath' => dirname(__DIR__),
+	'controllerNamespace' => 'www\controllers',
+	'bootstrap' => ['log'],
+	'defaultRoute' => 'main/index',//默认控制器
+	'modules' => [],
+	'components' => [
+		'user' => [
+			'identityClass' => 'common\models\xhWxOpenAdmin',
+			'enableAutoLogin' => true,
+			'identityCookie' => [
+				'name' => 'platformUser', // unique for platform
+			],
+			'loginUrl' => ['main/login'],
+		],
+		'log' => [
+			'traceLevel' => YII_DEBUG ? 3 : 0,
+			'targets' => [
+				[
+					'class' => 'yii\log\FileTarget',
+					'levels' => ['error', 'warning'],
+				],
+			],
+		],
+		'errorHandler' => [
+			'errorAction' => 'site/error',
+		],
+		'urlManager' => [
+			'enablePrettyUrl' => true,
+			'showScriptName' => false,
+			'rules' => [
+				//公众号消息与事件接收地址
+				'wx/<appId:\w+>' => 'wx/api',
+				//公众号授权回调通知地址
+				'wx-open-callback/<merchantId:\w+>' => 'wx-open/callback',
+				'<controller:\w+>/<action:\w+>' => '<controller>/<action>',
+			],
+		],
+	],
+	'params' => $params,
 ];

+ 9 - 8
app/www/controllers/WxOpenController.php

@@ -30,6 +30,7 @@ class WxOpenController extends PublicController
 	public function actionBeginAuth()
 	{
 		$id = 1;
+		$merchantId = Yii::$app->request->get('id', 0);
 		$open = xhWxOpenService::getById($id);
 		$pre = wxUtil::getPreAuthCode($open);
 		$appId = $open['appId'];
@@ -37,7 +38,7 @@ class WxOpenController extends PublicController
 		$oData['preAuthCodeTime'] = date("Y-m-d H:i:s");
 		//设置预授码过期,让下个用户可以获取新的预授码
 		xhWxOpenService::updateById($id, $oData);
-		$url = Yii::$app->params['wHost'] . '/wx-open/callback';
+		$url = Yii::$app->params['wHost'] . '/wx-open-callback/' . $merchantId;
 		echo "<a href='https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid={$appId}&pre_auth_code={$pre}&redirect_uri={$url}'>授权</a>";
 	}
 	
@@ -123,7 +124,7 @@ class WxOpenController extends PublicController
 			Yii::info('小程序信息更新成功:' . json_encode($authorize_info));
 			util::stop("小程序信息更新成功");
 		}
-
+		
 		$merchant = xhMerchantService::getByAppId($authorizeAppId);
 		Yii::info('appId:' . $authorizeAppId);
 		$set = xhSetMealService::getRandOne();
@@ -171,20 +172,20 @@ class WxOpenController extends PublicController
 			$appData['agentLevel'] = 1;//默认设置为代理商
 			$merchant = xhMerchantService::applyCreateMerchant($appData);
 			$merchantId = $merchant['id'];
-
+			
 			$wxOpenId = configDict::getConfig('openId');
 			$open = xhWxOpenService::getById($wxOpenId);
-			if(isset($open['merchantId']) && !empty($open['merchantId'])){
+			if (isset($open['merchantId']) && !empty($open['merchantId'])) {
 				xhWxOpenService::updateById($wxOpenId, ['merchantId' => $merchantId]);
 			}
-
+			
 			$data = ['merchantId' => $merchantId, 'platform' => 1];
 			$producer = Yii::$app->rabbitmq->getProducer('openShopInitProducer');
 			$msg = serialize($data);
 			$producer->publish($msg, 'openShopInitExchange', 'openShopInitRoute');
-
+			
 		} else {
-
+			
 			$cData = [];
 			$cData['wxAccessToken'] = $authorize_access_token;
 			$cData['wxAccessTokenTime'] = $accessTokenTime;
@@ -193,7 +194,7 @@ class WxOpenController extends PublicController
 			$cData['status'] = 1;
 			$merchantId = $merchant['id'];
 			xhMerchantService::updateById($merchantId, $cData);
-
+			
 		}
 		echo 'ok';