更新代码

This commit is contained in:
2020-09-29 15:26:37 +08:00
parent abfcfab3ba
commit 648147cd4d
4 changed files with 94 additions and 42 deletions

View File

@@ -10,6 +10,7 @@ class UnionPayController extends Controller
public function index() public function index()
{ {
$str = 'msg_type=00&msg_txn_code=002100&msg_crrltn_id=12345678901234567890123456789000&msg_flg=0&msg_sender=01&msg_time=20130318162412&msg_sys_sn=12345678900987654321&msg_ver=0.1&mchnt_no=8981231234567890&term_no=12345678&shop_no=086123456123456789&req_serial_no=12345678900987654321&orig_req_serial_no=12345678900987654321&enc_card_no=123123123123123123123sdfadqerqr&acq_term_sn=123456&refer_no=123456789012&sett_date=20130318&txn_date=20130318&txn_time=162850&orig_amt=10000&discount_amt=2000&pay_amt=8000&pay_mode=1'; $str = 'msg_type=00&msg_txn_code=002100&msg_crrltn_id=12345678901234567890123456789000&msg_flg=0&msg_sender=01&msg_time=20130318162412&msg_sys_sn=12345678900987654321&msg_ver=0.1&mchnt_no=8981231234567890&term_no=12345678&shop_no=086123456123456789&req_serial_no=12345678900987654321&orig_req_serial_no=12345678900987654321&enc_card_no=123123123123123123123sdfadqerqr&acq_term_sn=123456&refer_no=123456789012&sett_date=20130318&txn_date=20130318&txn_time=162850&orig_amt=10000&discount_amt=2000&pay_amt=8000&pay_mode=1';
parse_str($str, $arr_str); parse_str($str, $arr_str);
@@ -32,25 +33,12 @@ class UnionPayController extends Controller
public function query(Request $request) public function query(Request $request)
{ {
$inputs = $request->all(); $inputs = $request->all();
$sign = $inputs['sign'];
unset($inputs['sign']);
if (!isset($inputs['msg_txn_code'])) { $action = new UnionPay($inputs, $sign);
$res = $action->start();
} dd($res);
$validator = \Validator::make($inputs, [
'activityId' => 'required',
'outletId' => 'required',
'mobile' => 'required',
], [
'activityId.required' => '缺少活动编码',
'outletId.required' => '缺少网点id',
'mobile.required' => '缺少手机号',
]);
if ($validator->fails()) {
return $this->error($validator->errors()->first());
}
} }
} }

View File

@@ -1,6 +1,15 @@
<?php <?php
return [ return [
//分配的渠道号
'msg_sender' => 01,
//打印在小票上,由活动标题、优惠金额、原始金额组合而成
'pos_receipt' => '',
//广告,用于打印在小票上
'pos_ad' => '',
//营销联盟广告,用于打印在小票上
'pos_mkt_ad' => '',
'check' => [ 'check' => [
'self' => [ 'self' => [
'private' => storage_path('cert/unionpay/self/private_rsa.pem'), 'private' => storage_path('cert/unionpay/self/private_rsa.pem'),

View File

@@ -2,20 +2,25 @@
namespace XuanChen\UnionPay\Action; namespace XuanChen\UnionPay\Action;
use Illuminate\Http\Request; use Illuminate\Http\Request;
class Init class Init
{ {
public $params; public $params;
public $sign; public $sign;
public $msg_txn_code;
public $msg_sender;
/** /**
* RSA验签 * RSA验签
* @param $params 待签名数据 * @param $params 待签名数据
* @param $public_key 公钥字符串 * @param $public_key 公钥字符串
* @param $sign 要校对的的签名结果 * @param $sign 要校对的的签名结果
* return 验证结果 * return 验证结果
*/ */
public function checkSign($self = false) public function checkSign($self = false)
{ {
@@ -41,12 +46,12 @@ class Init
/** /**
* Notes: 签名 * Notes: 签名
* @Author: 玄尘 * @Author: 玄尘
* @Date: 2020/9/29 9:56 * @Date : 2020/9/29 9:56
* @return string * @return string
*/ */
public function getSign() public function getSign()
{ {
$signStr = $this->getSignString(); $signStr = $this->getSignString();
$private_key = $this->getPrivate(); $private_key = $this->getPrivate();
$privKeyId = openssl_pkey_get_private($private_key); $privKeyId = openssl_pkey_get_private($private_key);
@@ -70,6 +75,7 @@ class Init
$params = array_filter($this->params); $params = array_filter($this->params);
ksort($params); ksort($params);
$signStr = http_build_query($params); $signStr = http_build_query($params);
return $signStr; return $signStr;
} }

View File

@@ -13,8 +13,57 @@ class UnionPay extends Init
public function __construct($params, $sign = '') public function __construct($params, $sign = '')
{ {
$this->params = $params; $this->params = collect($params);
$this->sign = $sign; $this->sign = $sign;
$this->msg_txn_code = $params['msg_txn_code'];
$this->msg_sender = config('unionpay.msg_sender');
}
public function start()
{
$out = $this->out();
}
public function out_data()
{
$basics = [
"msg_type" => "00",
"msg_txn_code" => $this->msg_txn_code,
"msg_crrltn_id" => $this->params->msg_crrltn_id,
"msg_flg" => 1,
"msg_sender" => $this->msg_sender,
"msg_time" => now()->format('YmdHis'),
"msg_sys_sn" => $this->params->msg_sys_sn,
"msg_rsp_code" => "0000",
"msg_rsp_desc" => "成功",
];
switch ($this->msg_txn_code) {
case '002025':
$basics = array_merge($basics, [
"discount" => 0,
"actual_amt" => 0,
"pos_display" => "POS显示",
// "pos_receipt" => config('unionpay.pos_receipt'),
// "pos_ad" => config('unionpay.pos_ad'),
"pos_mkt_ad" => config('unionpay.pos_receipt'),
]);
break;
case '002100':
$data = array_merge($basics, [
'msg_ver' => 0.1,
]);
break;
case '002101':
break;
case '002102':
break;
default:
break;
}
return $basics;
} }
/** /**
@@ -27,7 +76,7 @@ class UnionPay extends Init
{ {
$inputs = $request->all(); $inputs = $request->all();
$sign = $inputs['sign']; $sign = $inputs['sign'];
unset($inputs['sign']); unset($inputs['sign']);
if (!$redemptionCode) { if (!$redemptionCode) {
@@ -40,8 +89,8 @@ class UnionPay extends Init
} }
return $model->setCode($redemptionCode) return $model->setCode($redemptionCode)
->setOutletId($outletId) ->setOutletId($outletId)
->detail(); ->detail();
} }
/** /**
@@ -61,8 +110,8 @@ class UnionPay extends Init
} }
return $model->setCode($redemptionCode) return $model->setCode($redemptionCode)
->setOutletId($outletId) ->setOutletId($outletId)
->destroy(); ->destroy();
} catch (\Exception $e) { } catch (\Exception $e) {
return $e->getMessage(); return $e->getMessage();
} }
@@ -103,11 +152,11 @@ class UnionPay extends Init
* Notes: description * Notes: description
* @Author: 玄尘 * @Author: 玄尘
* @Date : 2020/8/21 13:33 * @Date : 2020/8/21 13:33
* @param \App\Models\User $user 渠道 * @param \App\Models\User $user 渠道
* @param string $redemptionCode 要核销的券码 * @param string $redemptionCode 要核销的券码
* @param float $total 订单金额 * @param float $total 订单金额
* @param string $outletId 网点id * @param string $outletId 网点id
* @param string $orderid 订单id * @param string $orderid 订单id
* @return string * @return string
*/ */
public static function Redemption(User $user, string $redemptionCode, float $total, string $outletId, string $orderid = '') public static function Redemption(User $user, string $redemptionCode, float $total, string $outletId, string $orderid = '')
@@ -120,11 +169,11 @@ class UnionPay extends Init
} }
return $model->setUser($user) return $model->setUser($user)
->setCode($redemptionCode) ->setCode($redemptionCode)
->setTotal($total) ->setTotal($total)
->setOutletId($outletId) ->setOutletId($outletId)
->setOrderId($orderid) ->setOrderId($orderid)
->start(); ->start();
} catch (\Exception $e) { } catch (\Exception $e) {
return $e->getMessage(); return $e->getMessage();