diff --git a/app/Admin/Controllers/Activity/IndexController.php b/app/Admin/Controllers/Activity/IndexController.php index 0c352cf..9508774 100644 --- a/app/Admin/Controllers/Activity/IndexController.php +++ b/app/Admin/Controllers/Activity/IndexController.php @@ -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') : '---'; }); diff --git a/app/Admin/Controllers/Activity/RuleController.php b/app/Admin/Controllers/Activity/RuleController.php index 89459b4..82771d5 100644 --- a/app/Admin/Controllers/Activity/RuleController.php +++ b/app/Admin/Controllers/Activity/RuleController.php @@ -54,25 +54,27 @@ class RuleController extends AdminController $form->switch('status', '状态')->default(1); $form->saving(function (Form $form) { - $code = $form->code; + if ($form->code) { + $code = $form->code; - $ticket = explode('-', $code); - if (!is_array($ticket) || count($ticket) != 3) { - $error = new MessageBag([ - 'title' => '错误', - 'message' => '规则编号格式错误', - ]); + $ticket = explode('-', $code); + if (!is_array($ticket) || count($ticket) != 3) { + $error = new MessageBag([ + 'title' => '错误', + '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; diff --git a/app/Admin/Controllers/Finance/IndexController.php b/app/Admin/Controllers/Finance/IndexController.php index f36a2af..a74bb5d 100644 --- a/app/Admin/Controllers/Finance/IndexController.php +++ b/app/Admin/Controllers/Finance/IndexController.php @@ -59,7 +59,6 @@ class IndexController extends AdminController ->whereHas('identity', function ($query) { $query->where('identity_id', 1); }) - ->where('type', 'pingan') ->get() ->pluck('nickname', 'id'); diff --git a/app/Admin/Controllers/User/IndexController.php b/app/Admin/Controllers/User/IndexController.php index 2463d38..0b81aad 100644 --- a/app/Admin/Controllers/User/IndexController.php +++ b/app/Admin/Controllers/User/IndexController.php @@ -143,15 +143,13 @@ class IndexController extends AdminController $grid->column('分润规则')->display(function ($title, $column) { return '点击展开'; })->modal(function ($model) { - + if ($model->code) { $codes = $model->code->map(function ($code) { return $code->only(['name', 'code', 'profit']); }); - $table = new Table(['名称', '规则项', '分润金额(元)'], $codes->toArray()); - - return trim($table->render(), '"'); + return new Table(['名称', '规则项', '分润金额(元)'], $codes->toArray()); } }); diff --git a/app/Api/Controllers/UnionPayController.php b/app/Api/Controllers/UnionPayController.php index e8fff8f..2c3b935 100644 --- a/app/Api/Controllers/UnionPayController.php +++ b/app/Api/Controllers/UnionPayController.php @@ -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(); diff --git a/config/unionpay.php b/config/unionpay.php index cfc82cc..183e07b 100644 --- a/config/unionpay.php +++ b/config/unionpay.php @@ -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" => "报文类型", diff --git a/packages/unionpay/src/UnionPay.php b/packages/unionpay/src/UnionPay.php index ee7825e..83ccc4b 100644 --- a/packages/unionpay/src/UnionPay.php +++ b/packages/unionpay/src/UnionPay.php @@ -40,10 +40,10 @@ class UnionPay extends Init { //设置基础数据 $this->getOutBaseData(); - + //校验数据 + $this->checkInData(); try { - //校验数据 - $this->checkInData(); + //查询是否是幂等 就是重复查询 $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();