first
This commit is contained in:
73
modules/Payment/Http/Controllers/Admin/AlipayController.php
Normal file
73
modules/Payment/Http/Controllers/Admin/AlipayController.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Payment\Models\Alipay;
|
||||
|
||||
class AlipayController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '支付宝';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Alipay());
|
||||
$grid->disableFilter();
|
||||
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('name', '支付名称');
|
||||
$grid->column('app_id', '应用APPID');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Alipay());
|
||||
|
||||
$form->text('name', '支付名称')->required();
|
||||
|
||||
$form->text('app_id', '应用APPID')->required();
|
||||
$form->url('notify_url', '通知地址');
|
||||
$form->url('return_url', '返回地址');
|
||||
|
||||
$form->textarea('ali_public_key', '支付公钥');
|
||||
$form->textarea('private_key', '私钥');
|
||||
|
||||
$form->text('app_cert_path', '应用公钥证书')->help('相对/storage/app下的路径如:certs/XXX.crt');
|
||||
$form->text('alipay_cert_path', '支付宝公钥证书')->help('相对/storage/app下的路径如:certs/XXX.crt');
|
||||
$form->text('alipay_root_cert_path', '支付宝根证书文件')->help('相对/storage/app下的路径如:certs/XXX.crt');
|
||||
|
||||
$form->embeds('log', '日志配置', function (Form\EmbeddedForm $form) {
|
||||
$form->text('file', '日志文件名');
|
||||
$form->select('level')->options([
|
||||
'info' => 'info',
|
||||
'debug' => 'debug',
|
||||
])->default('info');
|
||||
$form->select('type', '记录方式')->options([
|
||||
'daily' => '按日期',
|
||||
'single' => '单文件',
|
||||
])->default('daily');
|
||||
$form->number('max_file')
|
||||
->default(30)
|
||||
->help('当 【记录方式】 为 【按日期】 时有效');
|
||||
});
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
public function ajax(Request $request)
|
||||
{
|
||||
$q = $request->q;
|
||||
|
||||
return Alipay::where('name', 'like', "%$q%")
|
||||
->orWhere('app_id', 'like', "%$q%")
|
||||
->paginate(null, ['id', 'name as text']);
|
||||
}
|
||||
|
||||
}
|
||||
26
modules/Payment/Http/Controllers/Admin/BillController.php
Normal file
26
modules/Payment/Http/Controllers/Admin/BillController.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Payment\Models\Bill;
|
||||
|
||||
class BillController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '日账单';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Bill());
|
||||
|
||||
$grid->column('date', '账单日期');
|
||||
$grid->column('total', '累计收款');
|
||||
$grid->column('refund', '累计退款');
|
||||
$grid->column('created_at', '统计时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
60
modules/Payment/Http/Controllers/Admin/IndexController.php
Normal file
60
modules/Payment/Http/Controllers/Admin/IndexController.php
Normal file
@@ -0,0 +1,60 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Payment\Models\Payment;
|
||||
|
||||
class IndexController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '支付订单';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Payment());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
|
||||
$grid->quickSearch('trade_id')->placeholder('交易单号');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->like('trade_id', '交易单号');
|
||||
$filter->like('transaction_id', '交易单号');
|
||||
$filter->like('user.username', '下单用户');
|
||||
$filter->between('created_at', '下单时间')->datetime();
|
||||
|
||||
});
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->equal('driver', '支付通道')->select(Payment::DRIVER_MAP);
|
||||
$filter->equal('state', '支付状态')->select(Payment::STATUS_MAP);
|
||||
$filter->between('paid_at', '支付时间')->datetime();
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('trade_id', '交易单号');
|
||||
$grid->column('transaction_id', '支付单号');
|
||||
$grid->column('user.username', '下单用户');
|
||||
$grid->column('driver', '支付通道')
|
||||
->using(Payment::DRIVER_MAP)
|
||||
->label(Payment::DRIVER_LABEL_MAP);
|
||||
$grid->column('gateway', '支付渠道');
|
||||
$grid->column('state', '支付状态')
|
||||
->using(Payment::STATUS_MAP)
|
||||
->label(Payment::STATUS_LABEL_MAP);
|
||||
$grid->column('total', '应付金额');
|
||||
$grid->column('paid_at', '支付时间');
|
||||
$grid->column('退款状态')->display(function () {
|
||||
return $this->refund_status_text;
|
||||
})->link(function () {
|
||||
return route('admin.payment.refunds.index', ['payment[trade_id]' => $this->trade_id]);
|
||||
}, '_self');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
50
modules/Payment/Http/Controllers/Admin/RedpackController.php
Normal file
50
modules/Payment/Http/Controllers/Admin/RedpackController.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Payment\Models\Payment;
|
||||
use Modules\Payment\Models\Redpack;
|
||||
|
||||
class RedpackController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '红包管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Redpack());
|
||||
|
||||
$grid->disableActions();
|
||||
$grid->disableCreateButton();
|
||||
|
||||
$grid->quickSearch('redpack_no')->placeholder('红包编号');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('redpack_no', '红包编号');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('driver', '发送渠道')->select(Payment::DRIVER_MAP);
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('type', '红包类型')->select(Redpack::TYPE_MAP);
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('redpack_no', '红包编号');
|
||||
$grid->column('driver', '发送渠道')
|
||||
->using(Payment::DRIVER_MAP)
|
||||
->label(Payment::DRIVER_LABEL_MAP);
|
||||
$grid->column('type', '红包类型')
|
||||
->using(Redpack::TYPE_MAP);
|
||||
$grid->column('amount', '红包金额');
|
||||
$grid->column('to', '发送对象');
|
||||
$grid->column('status', '发送状态');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
47
modules/Payment/Http/Controllers/Admin/RefundController.php
Normal file
47
modules/Payment/Http/Controllers/Admin/RefundController.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Payment\Models\Refund;
|
||||
|
||||
class RefundController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '退款订单';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Refund());
|
||||
|
||||
$grid->disableCreateButton();
|
||||
$grid->disableActions();
|
||||
|
||||
$grid->quickSearch('refund_no')->placeholder('退款单号');
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->like('payment.trade_id', '订单编号');
|
||||
});
|
||||
$filter->column(1 / 2, function (Grid\Filter $filter) {
|
||||
$filter->like('refund_no', '退款单号');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('payment.trade_id', '订单编号')
|
||||
->link(function () {
|
||||
return route('admin.payment.index', ['trade_id' => $this->payment->trade_id]);
|
||||
}, '_self');
|
||||
$grid->column('payment.total', '订单金额');
|
||||
$grid->column('refund_no', '退款单号');
|
||||
$grid->column('total', '退款金额');
|
||||
$grid->column('退款类型')->display(function () {
|
||||
return $this->total === $this->payment->total ? '全额退款' : '部分退款';
|
||||
});
|
||||
$grid->column('refund_at', '退款时间');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
73
modules/Payment/Http/Controllers/Admin/SettingController.php
Normal file
73
modules/Payment/Http/Controllers/Admin/SettingController.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Payment\Models\Alipay;
|
||||
use Modules\Payment\Models\Setting;
|
||||
use Modules\Payment\Models\Wechat;
|
||||
|
||||
class SettingController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '支付配置';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Setting());
|
||||
$grid->disableFilter();
|
||||
|
||||
$grid->model()->orderByDesc('in_use');
|
||||
|
||||
$grid->column('name', '配置名称');
|
||||
$grid->column('trade_id_counter_length', '计数器位数');
|
||||
$grid->column('in_use', '使用中')->bool();
|
||||
$grid->column('wechat.name', '微信支付');
|
||||
$grid->column('alipay.name', '支付宝');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Setting());
|
||||
|
||||
$form->text('name', '配置名称')
|
||||
->required();
|
||||
$form->number('trade_id_counter_length', '计数器位数')
|
||||
->required()
|
||||
->default(4)
|
||||
->rules('integer|max:16', [
|
||||
'max' => '计数器最大不能超过16',
|
||||
]);
|
||||
$form->switch('in_use', '当前配置');
|
||||
|
||||
$form->select('wechat_id', '微信支付')
|
||||
->options(function ($wechatId) {
|
||||
if ($wechatId) {
|
||||
$wechat = Wechat::find($wechatId);
|
||||
if ($wechat) {
|
||||
return [$wechat->id => $wechat->name];
|
||||
}
|
||||
}
|
||||
})
|
||||
->ajax(route('admin.payment.wechats.ajax'));
|
||||
$form->select('alipay_id', '支付宝')
|
||||
->options(function ($alipayId) {
|
||||
if ($alipayId) {
|
||||
$alipay = Alipay::find($alipayId);
|
||||
if ($alipay) {
|
||||
return [$alipay->id => $alipay->name];
|
||||
}
|
||||
}
|
||||
})
|
||||
->ajax(route('admin.payment.alipays.ajax'));
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Grid;
|
||||
use Modules\Payment\Models\Payment;
|
||||
use Modules\Payment\Models\Transfer;
|
||||
|
||||
class TransferController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '转账管理';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Transfer());
|
||||
|
||||
$grid->disableActions();
|
||||
$grid->disableCreateButton();
|
||||
|
||||
$grid->quickSearch('transfer_no')->placeholder('转账单号');
|
||||
|
||||
$grid->filter(function (Grid\Filter $filter) {
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('transfer_no', '转账单号');
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->equal('driver', '转账渠道')->select(Payment::DRIVER_MAP);
|
||||
});
|
||||
$filter->column(1 / 3, function (Grid\Filter $filter) {
|
||||
$filter->like('user_name', '收款人姓名');
|
||||
});
|
||||
});
|
||||
|
||||
$grid->column('transfer_no', '转账单号');
|
||||
$grid->column('driver', '转账渠道')
|
||||
->using(Payment::DRIVER_MAP)
|
||||
->label(Payment::DRIVER_LABEL_MAP);;
|
||||
$grid->column('to', '收款用户');
|
||||
$grid->column('check', '实名校验')->bool();
|
||||
$grid->column('user_name', '收款人姓名');
|
||||
$grid->column('desc', '转账附言');
|
||||
$grid->column('status', '转账状态');
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
}
|
||||
96
modules/Payment/Http/Controllers/Admin/WechatController.php
Normal file
96
modules/Payment/Http/Controllers/Admin/WechatController.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\Payment\Http\Controllers\Admin;
|
||||
|
||||
use Encore\Admin\Controllers\AdminController;
|
||||
use Encore\Admin\Form;
|
||||
use Encore\Admin\Grid;
|
||||
use Illuminate\Http\Request;
|
||||
use Modules\Payment\Models\Wechat;
|
||||
|
||||
class WechatController extends AdminController
|
||||
{
|
||||
|
||||
protected $title = '微信支付';
|
||||
|
||||
public function grid(): Grid
|
||||
{
|
||||
$grid = new Grid(new Wechat());
|
||||
|
||||
$grid->disableFilter();
|
||||
$grid->column('id', '#ID#');
|
||||
$grid->column('name', '支付名称');
|
||||
$grid->column('appid', 'APP APPID');
|
||||
$grid->column('app_id', '公众号 APPID');
|
||||
$grid->column('miniapp_id', '小程序 APPID');
|
||||
$grid->column('mch_id', '商户号');
|
||||
|
||||
$grid->column('created_at', '创建时间');
|
||||
|
||||
return $grid;
|
||||
}
|
||||
|
||||
public function form(): Form
|
||||
{
|
||||
$form = new Form(new Wechat());
|
||||
|
||||
$form->text('name', '支付名称')
|
||||
->required();
|
||||
|
||||
$form->text('appid', 'APP APPID');
|
||||
$form->text('app_id', '公众号 APPID');
|
||||
$form->text('miniapp_id', '小程序 APPID');
|
||||
$form->text('mch_id', '商户号')
|
||||
->required()
|
||||
->rules('required|size:10', [
|
||||
'required' => '商户号必须填写',
|
||||
'size' => '商户号长度应为:size位',
|
||||
]);
|
||||
$form->text('key', '支付密钥')
|
||||
->required()->rules('required|size:32', [
|
||||
'required' => '支付密钥必须填写',
|
||||
'size' => '支付密钥长度应为:size位',
|
||||
]);
|
||||
$form->url('notify_url', '通知地址');
|
||||
|
||||
// $form->file('cert_client', '公钥证书')
|
||||
// ->disk('local')
|
||||
// ->move('certs')
|
||||
// ->removable();
|
||||
//
|
||||
// $form->file('cert_key', '私钥证书')
|
||||
// ->disk('local')
|
||||
// ->move('certs')
|
||||
// ->removable();
|
||||
|
||||
$form->text('cert_client', '公钥证书')->help('相对/storage/app下的路径如:certs/apiclient_key.pem');
|
||||
$form->text('cert_key', '私钥证书')->help('相对/storage/app下的路径如:certs/apiclient_cert.pem');
|
||||
|
||||
$form->embeds('log', '日志配置', function (Form\EmbeddedForm $form) {
|
||||
$form->text('file', '日志文件名')->default('wechat');
|
||||
$form->select('level')->options([
|
||||
'info' => 'info',
|
||||
'debug' => 'debug',
|
||||
])->default('info');
|
||||
$form->select('type', '记录方式')->options([
|
||||
'daily' => '按日期',
|
||||
'single' => '单文件',
|
||||
])->default('daily');
|
||||
$form->number('max_file')
|
||||
->default(30)
|
||||
->help('当 【记录方式】 为 【按日期】 时有效');
|
||||
});
|
||||
|
||||
return $form;
|
||||
}
|
||||
|
||||
public function ajax(Request $request)
|
||||
{
|
||||
$q = $request->q;
|
||||
|
||||
return Wechat::where('name', 'like', "%$q%")
|
||||
->orWhere('mch_id', 'like', "%$q%")
|
||||
->paginate(null, ['id', 'name as text']);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user