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

View File

@@ -54,6 +54,7 @@ class RuleController extends AdminController
$form->switch('status', '状态')->default(1);
$form->saving(function (Form $form) {
if ($form->code) {
$code = $form->code;
$ticket = explode('-', $code);
@@ -72,6 +73,7 @@ class RuleController extends AdminController
$form->full = $match[0];
$form->take = $price;
}
});

View File

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

View File

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

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: 银联接口
* @Author: 玄尘
@@ -86,10 +38,10 @@ class UnionPayController extends Controller
unset($inputs['sign']);
$action = new UnionPay($inputs, $sign);
// $action->addLog();
$action->addLog();
$action->start();
// $action->updateLog();
$action->updateLog();
return $action->respond();

View File

@@ -39,7 +39,65 @@ return [
'002101' => 'reversal',
'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' => [
'002025' => [
"msg_type",
@@ -101,6 +159,7 @@ return [
"msg_flg" => "报文请求应答标志",
"msg_sender" => "报文发送方",
"msg_time" => "报文日期",
"msg_sys_sn" => "平台流水号",
"msg_ver" => "报文版本号",
"req_serial_no" => "查询流水号",
"shop_no" => "门店号",
@@ -124,7 +183,7 @@ return [
"user_code_type" => "用户号类型",
"dev_id" => "设备id",
],
"sign" => " 签名域",
"sign" => "签名域",
],
'out' => [
"msg_type" => "报文类型",

View File

@@ -40,10 +40,10 @@ class UnionPay extends Init
{
//设置基础数据
$this->getOutBaseData();
try {
//校验数据
$this->checkInData();
try {
//查询是否是幂等 就是重复查询
$this->idempotent();
//入库请求参数
@@ -106,6 +106,9 @@ class UnionPay extends Init
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()
{
if ($this->params['msg_txn_code'] == '002025' && (!isset($this->params['mkt_code']) || empty($this->params['mkt_code']))) {
$this->msg_rsp_code = 9999;
$this->msg_rsp_desc = '聚合营销码不能为空';
//验签
$res = $this->checkSign(false, false);
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->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->save();