海南旅游SAAS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

81 lines
2.6 KiB

<?php
namespace App\Http\Controllers\Api;
use App\Http\Controllers\Controller;
use App\Models\AdminSetting;
use App\Models\Agent;
use EasyWeChat\Factory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
/**
* 小程序授权等相关
* Class MiniProgramController
* @package App\Http\Controllers\Api
*/
class MiniProgramController extends Controller
{
// 第三方平台授权事件通知
public function authEvent(Request $request)
{
DB::table('mini_program_events')->insert(['response' => json_encode($request->all()), '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;
// 处理授权成功事件:Guard::EVENT_AUTHORIZED
// 处理授权更新事件:Guard::EVENT_UPDATE_AUTHORIZED
// 处理授权取消事件:Guard::EVENT_UNAUTHORIZED
$server->push(function ($message) {
DB::table('mini_program_events')->insert([
'response' => json_encode($message),
'event' => $message['InfoType'] ?? '',
'created_at' => now()
]);
if (isset($message['InfoType'], $message['status'], $message['msg'], $message['info']) && $message['status'] == 0 && $message['msg'] == 'OK') {
//注册成功授权通知
if ($message['InfoType'] == 'notify_third_fasteregister') {
Agent::where(['company_name' => $message['info']['name'], 'credit_codes' => $message['info']['code']])
->update(['appid' => $message['appid']]);
}
}
});
return $server->serve();
}
public function msgEvent(Request $request)
{
$appid = $request->route('appid');
DB::table('mini_program_events')->insert(['appid' => $appid, 'response' => json_encode($request->all()), '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;
//接收事件
$server->push(function ($message) {
if (isset($message['MsgType'], $message['Event']) && $message['MsgType'] == 'event') {
}
});
return $server->serve();
}
}