This commit is contained in:
2020-10-13 13:44:45 +08:00
parent 59cf8a26c4
commit 4d97481515
7 changed files with 132 additions and 84 deletions

View File

@@ -2,6 +2,7 @@
namespace App\Admin\Controllers\Activity; namespace App\Admin\Controllers\Activity;
use App\Admin\Renderable\Activity\Grants;
use App\Models\Activity; use App\Models\Activity;
use App\Models\ActivityGrant; use App\Models\ActivityGrant;
use App\Models\ActivityRule; use App\Models\ActivityRule;
@@ -86,7 +87,6 @@ class IndexController extends AdminController
$query->where('identity_id', 1); $query->where('identity_id', 1);
})->get()->pluck('nickname', 'id'); })->get()->pluck('nickname', 'id');
$filter->equal('user_id', '渠道')->select($users);
}); });
$filter->column(1 / 2, function ($filter) { $filter->column(1 / 2, function ($filter) {
@@ -100,10 +100,6 @@ class IndexController extends AdminController
$grid->column('title', '活动名称'); $grid->column('title', '活动名称');
$grid->column('code', '活动编号'); $grid->column('code', '活动编号');
$grid->column('rule.code', '卡券规则'); $grid->column('rule.code', '卡券规则');
$grid->column('所属')->display(function () {
return $this->user_id ? $this->user->nickname : '系统';
});
$grid->column('类型')->display(function () { $grid->column('类型')->display(function () {
return $this->type_text; return $this->type_text;
}); });
@@ -111,6 +107,20 @@ class IndexController extends AdminController
$grid->column('days', '延期(天)'); $grid->column('days', '延期(天)');
$grid->column('rule.full', '满足金额'); $grid->column('rule.full', '满足金额');
$grid->column('rule.take', '扣除金额'); $grid->column('rule.take', '扣除金额');
$grid->column('发券')
->display(function () {
return $this->grants->pluck('user_nickname');
})
->label()
->hide();
$grid->column('核券')
->display(function () {
return $this->verifications->pluck('user_nickname');
})
->label()
->hide();
$grid->column('开始时间')->display(function () { $grid->column('开始时间')->display(function () {
return $this->type == Activity::TYPE_SCOPE ? $this->start_at->format('Y-m-d') : '---'; return $this->type == Activity::TYPE_SCOPE ? $this->start_at->format('Y-m-d') : '---';
}); });

View File

@@ -54,25 +54,27 @@ class RuleController extends AdminController
$form->switch('status', '状态')->default(1); $form->switch('status', '状态')->default(1);
$form->saving(function (Form $form) { $form->saving(function (Form $form) {
$code = $form->code; if ($form->code) {
$code = $form->code;
$ticket = explode('-', $code); $ticket = explode('-', $code);
if (!is_array($ticket) || count($ticket) != 3) { if (!is_array($ticket) || count($ticket) != 3) {
$error = new MessageBag([ $error = new MessageBag([
'title' => '错误', 'title' => '错误',
'message' => '规则编号格式错误', 'message' => '规则编号格式错误',
]); ]);
return back()->withInput()->with(compact('error')); return back()->withInput()->with(compact('error'));
}
$full = $ticket[1]; //full100
$price = $ticket[2];
preg_match('/\d+/', $full, $match);
$form->full = $match[0];
$form->take = $price;
} }
$full = $ticket[1]; //full100
$price = $ticket[2];
preg_match('/\d+/', $full, $match);
$form->full = $match[0];
$form->take = $price;
}); });
return $form; return $form;

View File

@@ -59,7 +59,6 @@ class IndexController extends AdminController
->whereHas('identity', function ($query) { ->whereHas('identity', function ($query) {
$query->where('identity_id', 1); $query->where('identity_id', 1);
}) })
->where('type', 'pingan')
->get() ->get()
->pluck('nickname', 'id'); ->pluck('nickname', 'id');

View File

@@ -149,9 +149,7 @@ class IndexController extends AdminController
return $code->only(['name', 'code', 'profit']); return $code->only(['name', 'code', 'profit']);
}); });
$table = new Table(['名称', '规则项', '分润金额(元)'], $codes->toArray()); return new Table(['名称', '规则项', '分润金额(元)'], $codes->toArray());
return trim($table->render(), '"');
} }
}); });

View File

@@ -24,54 +24,6 @@ class UnionPayController extends Controller
} }
//签名
public function toSign($sign_data)
{
//签名字段
// $sign_data['msg_type'] = $array['msg_type'];
// $sign_data['msg_txn_code'] = $array['msg_txn_code'];
// $sign_data['msg_crrltn_id'] = $array['msg_crrltn_id'];
// $sign_data['msg_flg'] = $array['msg_flg'];
// $sign_data['msg_sender'] = $array['msg_sender'];
// $sign_data['msg_time'] = $array['msg_time'];
// $sign_data['msg_sys_sn'] = $array['msg_sys_sn'];
// $sign_data['msg_ver'] = $array['msg_ver'];
// if (isset($array['msg_rsp_code'])) {
// $sign_data['msg_rsp_code'] = $array['msg_rsp_code'];
// }
// if (isset($array['msg_rsp_desc'])) {
// $sign_data['msg_rsp_desc'] = $array['msg_rsp_desc'];
// }
//将字段名按字母表顺序排序
ksort($sign_data);
//将post的数据utf-8编码
$str_data = utf8_encode(http_build_query($sign_data));
//获取私钥资源ID
$private = config('unionpay.check.self.private');
if (!file_exists($private)) {
throw new \Exception('缺少私钥文件');
}
$private_key = file_get_contents($private);
$pkeyid = openssl_get_privatekey($private_key);
//签名赋值sign
if (openssl_sign($str_data, $sign, $pkeyid)) {
$sign_data = bin2hex($sign);
} else {
$sign_data = '';
}
//释放ssl资源
openssl_free_key($pkeyid);
return $sign_data;
}
/** /**
* Notes: 银联接口 * Notes: 银联接口
* @Author: 玄尘 * @Author: 玄尘
@@ -86,10 +38,10 @@ class UnionPayController extends Controller
unset($inputs['sign']); unset($inputs['sign']);
$action = new UnionPay($inputs, $sign); $action = new UnionPay($inputs, $sign);
// $action->addLog(); $action->addLog();
$action->start(); $action->start();
// $action->updateLog(); $action->updateLog();
return $action->respond(); return $action->respond();

View File

@@ -39,7 +39,65 @@ return [
'002101' => 'reversal', '002101' => 'reversal',
'002102' => 'annul', '002102' => 'annul',
], ],
//基础数据 //需要校验的数据
'validator' => [
'002025' => [
"msg_type",
"msg_txn_code",
"msg_crrltn_id",
"msg_flg",
"msg_sender",
"msg_time",
"msg_ver",
"msg_sys_sn",
"req_serial_no",
"mkt_code",
"amount",
"avl_amt",
],
'002100' => [
"msg_type",
"msg_txn_code",
"msg_crrltn_id",
"msg_flg",
"msg_sender",
"msg_time",
"msg_sys_sn",
"msg_ver",
"req_serial_no",
"orig_req_serial_no",
"sett_date",
"txn_date",
"txn_time",
"orig_amt",
"discount_amt",
],
'002101' => [
"msg_type",
"msg_txn_code",
"msg_crrltn_id",
"msg_flg",
"msg_sender",
"msg_time",
"msg_sys_sn",
"msg_ver",
"req_serial_no",
"orig_req_serial_no",
],
'002102' => [
"msg_type",
"msg_txn_code",
"msg_crrltn_id",
"msg_flg",
"msg_sender",
"msg_time",
"msg_sys_sn",
"msg_ver",
"req_serial_no",
"orig_req_serial_no",
],
],
//入库基础数据
'regular' => [ 'regular' => [
'002025' => [ '002025' => [
"msg_type", "msg_type",
@@ -101,6 +159,7 @@ return [
"msg_flg" => "报文请求应答标志", "msg_flg" => "报文请求应答标志",
"msg_sender" => "报文发送方", "msg_sender" => "报文发送方",
"msg_time" => "报文日期", "msg_time" => "报文日期",
"msg_sys_sn" => "平台流水号",
"msg_ver" => "报文版本号", "msg_ver" => "报文版本号",
"req_serial_no" => "查询流水号", "req_serial_no" => "查询流水号",
"shop_no" => "门店号", "shop_no" => "门店号",
@@ -124,7 +183,7 @@ return [
"user_code_type" => "用户号类型", "user_code_type" => "用户号类型",
"dev_id" => "设备id", "dev_id" => "设备id",
], ],
"sign" => " 签名域", "sign" => "签名域",
], ],
'out' => [ 'out' => [
"msg_type" => "报文类型", "msg_type" => "报文类型",

View File

@@ -40,10 +40,10 @@ class UnionPay extends Init
{ {
//设置基础数据 //设置基础数据
$this->getOutBaseData(); $this->getOutBaseData();
//校验数据
$this->checkInData();
try { try {
//校验数据
$this->checkInData();
//查询是否是幂等 就是重复查询 //查询是否是幂等 就是重复查询
$this->idempotent(); $this->idempotent();
//入库请求参数 //入库请求参数
@@ -106,6 +106,9 @@ class UnionPay extends Init
break; break;
} }
} else {
$this->outdata['msg_rsp_code'] = $this->msg_rsp_code;
$this->outdata['msg_rsp_desc'] = $this->msg_rsp_desc;
} }
} }
@@ -143,10 +146,35 @@ class UnionPay extends Init
*/ */
public function checkInData() public function checkInData()
{ {
if ($this->params['msg_txn_code'] == '002025' && (!isset($this->params['mkt_code']) || empty($this->params['mkt_code']))) { //验签
$this->msg_rsp_code = 9999; $res = $this->checkSign(false, false);
$this->msg_rsp_desc = '聚合营销码不能为空'; if ($res !== true) {
$this->msg_rsp_code = 9996;
$this->msg_rsp_desc = '验签失败';
} }
if ($this->msg_txn_code && $this->msg_rsp_code == '0000') {
$rule_code = config('unionpay.validator')[$this->msg_txn_code];
$rule_msg = config('unionpay.fields')[$this->msg_txn_code]['in'];
foreach ($rule_code as $item) {
$rule[$item] = 'required';
$msg[$item . '.required'] = $rule_msg[$item] . '不能为空';
}
$validator = \Validator::make($this->params, $rule, $msg);
if ($validator->fails()) {
$this->msg_rsp_code = 9996;
$this->msg_rsp_desc = $validator->errors()->first();
}
} else {
$this->msg_rsp_code = 9996;
$this->msg_rsp_desc = $this->msg_rsp_code == '0000' ? '平台流水号不能为空。' : $this->msg_rsp_desc;
}
} }
/** /**
@@ -230,7 +258,7 @@ class UnionPay extends Init
{ {
$this->outdata['sign'] = $this->getSign(); $this->outdata['sign'] = $this->getSign();
$this->model->out_source = $this->outdata; $this->model->out_source = $this->outdata;
if ($this->outdata['msg_rsp_code'] == '9999') { if ($this->outdata['msg_rsp_code'] != '0000') {
$this->model->status = 0; $this->model->status = 0;
} }
$this->model->save(); $this->model->save();