Browse Source

消息接收逻辑处理

master
李可松 4 years ago
parent
commit
3db88a22ab
  1. 35
      app/Http/Controllers/Api/MiniProgramController.php
  2. 20
      app/Service/OpenPlatform.php

35
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')

20
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;
}
}
Loading…
Cancel
Save