|
@@ -5,6 +5,8 @@ namespace Modules\Channel\Http\Controllers;
|
|
use Catch\Base\CatchController;
|
|
use Catch\Base\CatchController;
|
|
use EasyWeChat\OpenPlatform\Application;
|
|
use EasyWeChat\OpenPlatform\Application;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
|
|
+use Illuminate\Support\Facades\DB;
|
|
|
|
+use Modules\Channel\Models\WechatAuthorizationInfo;
|
|
use Modules\Channel\Services\WechatOpenPlatform\WechatOpenPlatformService;
|
|
use Modules\Channel\Services\WechatOpenPlatform\WechatOpenPlatformService;
|
|
use Modules\Common\Errors\Errors;
|
|
use Modules\Common\Errors\Errors;
|
|
use Modules\Common\Exceptions\CommonBusinessException;
|
|
use Modules\Common\Exceptions\CommonBusinessException;
|
|
@@ -16,7 +18,7 @@ class WechatOpenPlatformController extends CatchController
|
|
// 授权跳转页
|
|
// 授权跳转页
|
|
public function preauth(Request $request) {
|
|
public function preauth(Request $request) {
|
|
$currentUser = $this->getCurrentUser();
|
|
$currentUser = $this->getCurrentUser();
|
|
- $componentInfo = WechatOpenPlatformService::getComponentInfo($currentUser->pid);
|
|
|
|
|
|
+ $componentInfo = WechatOpenPlatformService::getComponentInfoByCompanyUid($currentUser->pid);
|
|
if(!$componentInfo) {
|
|
if(!$componentInfo) {
|
|
CommonBusinessException::throwError(Errors::OPENPLATFORM_COMPANY_INFO_NOT_EXISTS);
|
|
CommonBusinessException::throwError(Errors::OPENPLATFORM_COMPANY_INFO_NOT_EXISTS);
|
|
}
|
|
}
|
|
@@ -37,6 +39,40 @@ class WechatOpenPlatformController extends CatchController
|
|
}
|
|
}
|
|
|
|
|
|
public function auth(Request $request, $component_appid) {
|
|
public function auth(Request $request, $component_appid) {
|
|
|
|
+ $auth_code = $request->input('auth_code');
|
|
|
|
+ $componentInfo = WechatOpenPlatformService::getComponentInfoByCompanyUid($component_appid);
|
|
|
|
+ if(!$componentInfo) {
|
|
|
|
+ CommonBusinessException::throwError(Errors::OPENPLATFORM_COMPANY_INFO_NOT_EXISTS);
|
|
|
|
+ }
|
|
|
|
+ $config = [
|
|
|
|
+ 'app_id' => $componentInfo->app_id, // 开放平台账号的 appid
|
|
|
|
+ 'secret' => $componentInfo->secret, // 开放平台账号的 secret
|
|
|
|
+ 'token' => $componentInfo->token, // 开放平台账号的 token
|
|
|
|
+ 'aes_key' => $componentInfo->aes_key, // 明文模式请勿填写 EncodingAESKey
|
|
|
|
+ 'http' => [
|
|
|
|
+ 'throw' => true, // 状态码非 200、300 时是否抛出异常,默认为开启
|
|
|
|
+ 'timeout' => 5.0,
|
|
|
|
+ 'retry' => true, // 使用默认重试配置
|
|
|
|
+ ],
|
|
|
|
+ ];
|
|
|
|
+ $app = new Application($config);
|
|
|
|
+ $client = $app->getClient();
|
|
|
|
+ $response = $client->post('/cgi-bin/component/api_query_auth', [
|
|
|
|
+ 'component_appid' => $component_appid,
|
|
|
|
+ 'authorization_code' => $auth_code
|
|
|
|
+ ]);
|
|
|
|
+ $authorizer_appid = $response['authorization_info']['authorizer_appid'];
|
|
|
|
+ $authorizer_refresh_token = $response['authorization_info']['authorizer_refresh_token'];
|
|
|
|
+ $currentUser = $this->getCurrentUser();
|
|
|
|
+ WechatAuthorizationInfo::updateOrCreate([
|
|
|
|
+ 'authorizer_appid' => $authorizer_appid,
|
|
|
|
+ 'component_appid' => $component_appid,
|
|
|
|
+ 'user_id' => $currentUser->id,
|
|
|
|
+ 'puser_id' => $currentUser->pid,
|
|
|
|
+ ], [
|
|
|
|
+ 'authorizer_refresh_token' => $authorizer_refresh_token
|
|
|
|
+ ]);
|
|
|
|
|
|
|
|
+ return view('wechat.openPlatform.authSuccess')->with('url', url('/'));
|
|
}
|
|
}
|
|
}
|
|
}
|