admin/addon/saasagent/event/MiniappAuth.php

84 lines
3.2 KiB
PHP

<?php
/**
* SAAS应用系统 --- 十年开发经验汇集巨献!
* ==========================================================
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
* ----------------------------------------------------------
* 官方网址: https://www.zoomtk.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
* ==========================================================
*/
namespace addon\saasagent\event;
use think\facade\Db;
class MiniappAuth
{
public function handle($param)
{
if (isset($param['app_type'])) {
switch ($param['app_type']) {
case 'aliapp' :
$data = [
'appid' => $param['appid'],
'site_id' => $param['site_id'],
'ag_site_id' => $param['ag_site_id'],
'app_type' => $param['app_type'],
'original_id' => $param['app_original'],
'auth_value' => json_encode($param['original_values']),
'app_auth_token' => $param['app_auth_token'],
];
$this->createAuth($data, $param);
break;
}
}
return success();
}
/***
* 创建小程序
* @param $data
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function createAuth($data, $original = [])
{
$where = [
'site_id' => $data['site_id'],
'appid' => $data['appid'],
'app_type' => $data['app_type'],
];
$appModel = new \addon\aliapp\model\MinCode();
$appModel->appAuthToken = $data['app_auth_token'];
$query = $appModel->requestApi('alipay.open.mini.baseinfo.query')['alipay_open_mini_baseinfo_query_response'];
if ($query && $query['code'] == '10000') {
$data['app_name'] = $query['app_name'];
$data['contact_phone'] = $query['service_phone'] ?? '';
}
if (isset($original['state']) && $original['state']) {
$state = explode('|', $original['state']);
if (isset($state['3'])) {
$data['cloud_order_id'] = $state['3'];
$c = [
'auth_value' => $data['auth_value'],
'order_status' => 1,
'contact_phone' => $query['service_phone'] ?? '',
];
Db::name('cloud_order')->where('id', '=', $state['3'])->update($c);
}
}
$miniInfo = Db::name('applet_list')->where($where)->find();
if ($miniInfo) {
$data['update_time'] = time();
Db::name('applet_list')->where($where)->update($data);
} else {
$data['create_time'] = time();
$data['update_time'] = time();
Db::name('applet_list')->insert($data);
}
}
}