feat: 初始化雄戈商城服务端代码与Webhook自动部署配置

这个提交包含在:
wikiboss
2026-09-12 16:40:24 +08:00
当前提交 e90ec58e61
共有 6438 个文件被更改,包括 1136083 次插入 和 0 次删除

查看文件

@@ -0,0 +1,67 @@
<?php
namespace app\admin\controller\shopro_huifu;
use app\common\controller\Backend;
use think\Db;
class Config extends Backend
{
protected $noNeedRight = [];
public function index()
{
if ($this->request->isAjax()) {
$list = Db::name('shopro_huifu_config')->select();
$data = [];
foreach ($list as $item) {
$value = $item['value'];
if (in_array($item['name'], ['merchant_private_key', 'huifu_public_key']) && $value) {
$value = substr($value, 0, 8) . '******';
}
$data[$item['name']] = $value;
}
$cfg = \addons\shopro_huifu\library\HuifuConfig::getInstance();
$data['notify_url'] = $cfg->getNotifyUrl('pay');
$data['refund_notify_url_display'] = $cfg->getNotifyUrl('refund');
$data['site_base_url'] = $cfg->get('site_base_url') ?: $cfg->getSiteBaseUrl();
$mini = Db::name('shopro_config')->where('name', 'wxMiniProgram')->value('value');
$mini = json_decode($mini, true);
$data['mini_program_app_id'] = $mini['app_id'] ?? '';
$data['onboard_notify_url'] = rtrim($cfg->getSiteBaseUrl(), '/') . '/addons/shopro_huifu/onboard/notify';
return $this->success('操作成功', null, $data);
}
return $this->view->fetch();
}
public function save()
{
$params = $this->request->post('row/a');
if (!$params) {
$this->error('参数错误');
}
if (($params['miniprogram_channel'] ?? '') === 'huifu') {
if (empty($params['huifu_id']) || empty($params['sys_id']) || empty($params['product_id'])) {
$this->error('汇付通道需填写商户号、系统号、产品号');
}
}
foreach ($params as $name => $value) {
if (strpos($value, '******') !== false) {
continue;
}
Db::name('shopro_huifu_config')->where('name', $name)->update(['value' => $value]);
}
if (($params['miniprogram_channel'] ?? '') === 'huifu') {
try {
\addons\shopro_huifu\library\HuifuConfig::reload()->validateKeys();
} catch (\Exception $e) {
$this->error('密钥校验失败:' . $e->getMessage());
}
}
$this->success('保存成功');
}
}

查看文件

@@ -0,0 +1,101 @@
<?php
namespace app\admin\controller\shopro_huifu;
use addons\shopro_huifu\library\onboard\HuifuOnboardAdminView;
use addons\shopro_huifu\library\onboard\HuifuOnboardQuery;
use addons\shopro_huifu\library\onboard\HuifuOnboardService;
use addons\shopro_huifu\model\Onboard as OnboardModel;
use app\admin\controller\shopro\Base;
class Onboard extends Base
{
public function index()
{
if ($this->request->isAjax()) {
$detailId = intval($this->request->get('detail_id', 0));
if ($detailId > 0) {
return $this->detail($detailId);
}
$status = $this->request->get('status');
$query = OnboardModel::order('id desc');
if ($status) {
$query->where('onboard_status', $status);
}
$total = $query->count();
$list = $query->limit($this->request->get('offset', 0), $this->request->get('limit', 20))->select();
$rows = [];
foreach ($list as $item) {
$rows[] = HuifuOnboardAdminView::enrichListRow($item);
}
return $this->success('ok', null, ['total' => $total, 'rows' => $rows]);
}
return $this->view->fetch();
}
/**
* 进件资料详情(Ajax 请优先走 index?detail_id= 复用 index 权限)
*/
public function detail($ids = null)
{
if (!$this->request->isAjax() && !$this->request->isPost()) {
$this->error('非法请求');
}
$row = OnboardModel::get($ids);
if (!$row) {
$this->error('记录不存在');
}
$this->success('ok', null, HuifuOnboardAdminView::buildDetail($row));
}
public function poll($ids = null)
{
$row = OnboardModel::get($ids);
if (!$row) {
$this->error('记录不存在');
}
$query = new HuifuOnboardQuery();
$query->pollAndUpdate($row);
$this->success('已刷新状态', null, $row);
}
public function submit($ids = null)
{
$row = OnboardModel::get($ids);
if (!$row) {
$this->error('记录不存在');
}
if ($row['onboard_status'] !== OnboardModel::STATUS_DRAFT) {
$this->error('仅待后台审核的记录可提交汇付');
}
try {
$service = new HuifuOnboardService();
$service->submitFromDraft($row['user_id'], $row['role_type'], $row['role_ref_id']);
$this->success('已提交汇付进件');
} catch (\Throwable $e) {
$this->error($e->getMessage());
}
}
public function retry($ids = null)
{
$row = OnboardModel::get($ids);
if (!$row) {
$this->error('记录不存在');
}
if ($row['onboard_status'] === OnboardModel::STATUS_APPROVED) {
$this->error('已通过,无需重试');
}
$payload = json_decode($row['payload'] ?? '', true);
if (!$payload) {
$this->error('缺少原始进件资料,请用户在小程序重新提交');
}
try {
$service = new HuifuOnboardService();
$service->resubmit($row['user_id'], $row['role_type'], $row['role_ref_id'], $payload);
$this->success('已重新提交进件');
} catch (\Throwable $e) {
$this->error($e->getMessage());
}
}
}