安装依赖
1
| $ composer require overtrue/wechat:~4.0
|
app\Http\Middleware\WechatMiddleware.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| <?php
namespace App\Http\Middleware;
use EasyWeChat\Factory; use App\User; use Closure;
class WechatMiddleware {
public function handle($request, Closure $next) { $wechat_config = [ 'app_id' => 'app_id', 'secret' => 'secret', 'oauth' => [ 'scopes' => ['snsapi_userinfo'], 'callback' => '/', ] ];
$app = Factory::officialAccount($wechat_config);
$request->app = $app;
if(isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') === false ) {
return $next($request); }
if(session()->has('wechat_user')) { return $next($request); }
$oauth = $app->oauth;
if(!$request->has(['code', 'state'])) { return $oauth->setRequest($request) ->redirect(); }
$user = $oauth->user();
$openid = $user->getId();
$model = User::where('openid', $openid) ->first();
if(!$model) { $model = new User; $model->nickname = $user->getNickname(); $model->openid = $openid; $model->save(); }
session([ 'wechat_user' => $model->toArray() ]);
session()->save();
return redirect('/'); } }
|
app\Http\Kernel.php
1 2 3 4
| protected $routeMiddleware = [ ... 'wechat' => \App\Http\Middleware\WechatMiddleware::class, ];
|
routes\web.php
1 2 3
| Route::get('/', function () { return view('welcome'); })->middleware('wechat');
|