作者 lyh

gx

  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :Wechat.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2023/8/23 18:18
  8 + */
  9 +
  10 +namespace App\Helper;
  11 +
  12 +use \GuzzleHttp\Client;
  13 +use Illuminate\Support\Facades\Cache;
  14 +
  15 +/**
  16 + * @remark :微信相关
  17 + * @name :Wechat
  18 + * @author :lyh
  19 + * @method :post
  20 + * @time :2023/8/23 18:19
  21 + */
  22 +class Wechat
  23 +{
  24 + public $alias = 'global6.0';
  25 + public $appid = 'wx8253a38fd7ae78f0';
  26 + public $appSecret = '20981cca3d00c074a8886f115d19548d';
  27 +
  28 + /**
  29 + * @remark :生成access_token
  30 + * @name :getAccessToken
  31 + * @author :lyh
  32 + * @method :post
  33 + * @time :2023/8/23 18:28
  34 + */
  35 + public function getAccessToken()
  36 + {
  37 + $cacheKey = 'access_token';
  38 + if (Cache::has($cacheKey)) {
  39 + return Cache::get($cacheKey);
  40 + }
  41 + $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $this->appid . '&secret=' . $this->appSecret;
  42 + $client = new Client();
  43 + $response = $client->get($url);
  44 + $data = json_decode($response->getBody(), true);
  45 + $accessToken = $data['access_token'];
  46 + // 将accessToken缓存起来,避免多次请求
  47 + Cache::put($cacheKey, $accessToken, $data['expires_in'] / 60);
  48 + return $accessToken;
  49 + }
  50 + /**
  51 + * @remark :生成二维码
  52 + * @name :setQrcode
  53 + * @author :lyh
  54 + * @method :post
  55 + * @time :2023/8/23 18:19
  56 + */
  57 + public function setQrcode($type,$accessToken){
  58 + $url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=' . $accessToken;
  59 + $client = new Client();
  60 + $response = $client->post($url, [
  61 + 'json' => [
  62 + 'expire_seconds' => 3600,
  63 + 'action_name' => 'QR_STR_SCENE',
  64 + 'action_info' => [
  65 + 'scene' => [
  66 + 'scene_str' => $type.uniqid().$this->alias,
  67 + ],
  68 + ],
  69 + ],
  70 + ]);
  71 + $data = json_decode($response->getBody(), true);
  72 + return $data;
  73 + }
  74 +
  75 +}
@@ -11,6 +11,7 @@ namespace App\Http\Controllers\Bside; @@ -11,6 +11,7 @@ namespace App\Http\Controllers\Bside;
11 11
12 use App\Enums\Common\Code; 12 use App\Enums\Common\Code;
13 use App\Helper\Translate; 13 use App\Helper\Translate;
  14 +use App\Helper\Wechat;
14 use App\Http\Logic\Bside\User\UserLoginLogic; 15 use App\Http\Logic\Bside\User\UserLoginLogic;
15 use App\Models\Service\Service; 16 use App\Models\Service\Service;
16 use App\Models\Sms\SmsLog; 17 use App\Models\Sms\SmsLog;
@@ -113,5 +114,17 @@ class LoginController extends BaseController @@ -113,5 +114,17 @@ class LoginController extends BaseController
113 $this->response('success',Code::SUCCESS,strtolower($str)); 114 $this->response('success',Code::SUCCESS,strtolower($str));
114 } 115 }
115 116
116 - 117 + /**
  118 + * @remark :微信登录
  119 + * @name :wechatLogin
  120 + * @author :lyh
  121 + * @method :post
  122 + * @time :2023/8/23 18:46
  123 + */
  124 + public function qrcode(){
  125 + $wechat = new Wechat();
  126 + $accessToken = $wechat->getAccessToken();
  127 + $data = $wechat->setQrcode('global-v6',$accessToken);
  128 + $this->response('success',Code::SUCCESS,$data);
  129 + }
117 } 130 }
@@ -338,4 +338,5 @@ Route::group([], function () { @@ -338,4 +338,5 @@ Route::group([], function () {
338 Route::any('/stringTranslation', [\App\Http\Controllers\Bside\LoginController::class, 'stringTranslation'])->name('stringTranslation'); 338 Route::any('/stringTranslation', [\App\Http\Controllers\Bside\LoginController::class, 'stringTranslation'])->name('stringTranslation');
339 Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\LoginController::class, 'sendLoginSms'])->name('sendLoginSms'); 339 Route::any('/sendLoginSms', [\App\Http\Controllers\Bside\LoginController::class, 'sendLoginSms'])->name('sendLoginSms');
340 Route::any('/autologin', [\App\Http\Controllers\Bside\LoginController::class, 'autologin'])->name('autologin'); 340 Route::any('/autologin', [\App\Http\Controllers\Bside\LoginController::class, 'autologin'])->name('autologin');
  341 + Route::any('/qrcode', [\App\Http\Controllers\Bside\LoginController::class, 'qrcode'])->name('qrcode');
341 }); 342 });