diff --git a/app/Http/Controllers/Api/MiniProgramController.php b/app/Http/Controllers/Api/MiniProgramController.php index b8712e4..5855bb1 100644 --- a/app/Http/Controllers/Api/MiniProgramController.php +++ b/app/Http/Controllers/Api/MiniProgramController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use App\Models\AdminSetting; use App\Models\Agent; use App\Models\MiniProgramUploadLog; +use App\Service\OpenPlatform; use EasyWeChat\Factory; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -27,16 +28,8 @@ class MiniProgramController extends Controller 'created_at' => now(), ]); - $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); - $config = [ // 第三方平台信息 - 'app_id' => $setting['service_appid'], - 'secret' => $setting['service_appsecret'], - 'token' => $setting['service_token'], - 'aes_key' => $setting['service_aeskey'], - ]; - - $openPlatform = Factory::openPlatform($config); - $server = $openPlatform->server; + $openPlatform = new OpenPlatform(); + $server = $openPlatform->server(); // 处理授权成功事件:Guard::EVENT_AUTHORIZED // 处理授权更新事件:Guard::EVENT_UPDATE_AUTHORIZED @@ -75,23 +68,15 @@ class MiniProgramController extends Controller 'created_at' => now(), ]); - $setting = AdminSetting::val(['service_appid', 'service_appsecret', 'service_token', 'service_aeskey']); - $config = [ - 'app_id' => $setting['service_appid'], - 'secret' => $setting['service_appsecret'], - 'token' => $setting['service_token'], - 'aes_key' => $setting['service_aeskey'], - ]; - - $openPlatform = Factory::openPlatform($config); - $refreshToken = $openPlatform->getAuthorizer($appid)['authorization_info']['authorizer_refresh_token'] ?? null; + $openPlatform = new OpenPlatform(); + $refreshToken = $openPlatform->refreshToken($appid); if (!$refreshToken) { return $this->error('获取refresh_token失败'); } $server = $openPlatform->miniProgram($appid, $refreshToken)->server; //接收事件 https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/2.0/api/code/audit_event.html - $server->push(function ($message) use ($appid) { + $server->push(function ($message) use ($appid, $openPlatform, $refreshToken) { DB::table('mini_program_events') ->insert([ 'type' => 1, @@ -107,6 +92,14 @@ class MiniProgramController extends Controller 'weapp_audit_fail' => 1, //拒绝 'weapp_audit_delay' => 4, //审核延后 ]; + + //如果审核成功则发布 + if ($message['Event'] == 'weapp_audit_success') { + $code = $openPlatform->code($appid, $refreshToken); + $code->release(); + } + + //保存到日志 $log = MiniProgramUploadLog::query() ->where('appid', $appid) ->orderBy('id', 'desc') diff --git a/app/Service/OpenPlatform.php b/app/Service/OpenPlatform.php index 020242e..c83237d 100644 --- a/app/Service/OpenPlatform.php +++ b/app/Service/OpenPlatform.php @@ -5,6 +5,7 @@ namespace App\Service; use App\Models\AdminSetting; use EasyWeChat\Factory; use EasyWeChat\OpenPlatform\Application; +use EasyWeChat\OpenPlatform\Server\Guard; /** * 微信第三方开放平台 @@ -29,6 +30,10 @@ class OpenPlatform ]; $this->openPlatform = Factory::openPlatform($this->config); + } + + public function openPlatform(): Application + { return $this->openPlatform; } @@ -70,4 +75,19 @@ class OpenPlatform { return $this->openPlatform['component'] ?? null; } + + public function server(): Guard + { + return $this->openPlatform->server; + } + + public function __call($method, $args) + { + return $this->openPlatform->$method(...$args); + } + + public function __get(string $name) + { + return $this->openPlatform->$name; + } }