5 changed files with 197 additions and 13 deletions
-
4app/Admin/Controllers/ImsCjdcOrderMainController.php
-
61app/Http/Controllers/GrabOrderController.php
-
53app/Http/Middleware/WechatAuth.php
-
86resources/views/web/grab_order.blade.php
-
6routes/web.php
@ -0,0 +1,53 @@ |
|||
<?php |
|||
|
|||
namespace App\Http\Middleware; |
|||
|
|||
use App\Models\v3\User; |
|||
use Closure; |
|||
use EasyWeChat\Factory; |
|||
use Exception; |
|||
use Illuminate\Http\Request; |
|||
|
|||
class WechatAuth |
|||
{ |
|||
/** |
|||
* Handle an incoming request. |
|||
* |
|||
* @param Request $request |
|||
* @param Closure $next |
|||
* @return mixed |
|||
* @throws Exception |
|||
*/ |
|||
public function handle(Request $request, Closure $next) |
|||
{ |
|||
$sessionKey = 'wechat_user'; |
|||
$user = $request->session()->get($sessionKey); |
|||
if (!$user) { |
|||
$config = config('wechat.official_account.default'); |
|||
$app = Factory::officialAccount($config); |
|||
|
|||
$code = $request->input('code'); |
|||
if (empty($code)) { |
|||
return $app->oauth->scopes(['snsapi_userinfo'])->redirect($request->url()); |
|||
} else { |
|||
$wechatUser = $app->oauth->user(); |
|||
if (!$wechatUser) { |
|||
throw new \Exception('获取用户信息失败'); |
|||
} else if (empty($user->unionid)) { |
|||
# TODO 调试unionid
|
|||
if (config('app.debug') && $request->server('REMOTE_ADDR') == '127.0.0.1') { |
|||
$wechatUser['unionid'] = 'onhl355f-ofX5e0-4I4vn0bswVPM'; |
|||
} else |
|||
throw new Exception('获取UnionId失败'); |
|||
} |
|||
} |
|||
|
|||
$user = User::where('unionid', $wechatUser->unionid)->first(); |
|||
if (!$user) { |
|||
throw new Exception('您的账号未在小程序上登录过,获取用户信息失败'); |
|||
} |
|||
$request->session()->put($sessionKey, $user); |
|||
} |
|||
return $next($request); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue