136 lines
3.1 KiB
PHP
136 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace XuanChen\UnionPay;
|
|
|
|
use App\Models\User;
|
|
use XuanChen\UnionPay\Action\Init;
|
|
|
|
/**
|
|
* 银联入口
|
|
*/
|
|
class UnionPay extends Init
|
|
{
|
|
|
|
public function __construct($params, $sign = '')
|
|
{
|
|
$this->params = $params;
|
|
$this->sign = $sign;
|
|
}
|
|
|
|
/**
|
|
* Notes: 查询接口
|
|
* @Author: 玄尘
|
|
* @Date : 2020/7/21 11:58
|
|
* @param $redemptionCode
|
|
*/
|
|
public static function Query(Request $request)
|
|
{
|
|
|
|
$inputs = $request->all();
|
|
$sign = $inputs['sign'];
|
|
unset($inputs['sign']);
|
|
|
|
if (!$redemptionCode) {
|
|
return '查询失败,未获取到券码';
|
|
}
|
|
|
|
$model = self::getModelByCode($redemptionCode);
|
|
if (is_string($model)) {
|
|
return $model;
|
|
}
|
|
|
|
return $model->setCode($redemptionCode)
|
|
->setOutletId($outletId)
|
|
->detail();
|
|
}
|
|
|
|
/**
|
|
* Notes: 卡券作废
|
|
* @Author: 玄尘
|
|
* @Date : 2020/9/2 16:54
|
|
* @param $redemptionCode
|
|
* @param $outletId
|
|
* @return string
|
|
*/
|
|
public static function Destroy($redemptionCode, $outletId)
|
|
{
|
|
try {
|
|
$model = self::getModelByCode($redemptionCode);
|
|
if (is_string($model)) {
|
|
return $model;
|
|
}
|
|
|
|
return $model->setCode($redemptionCode)
|
|
->setOutletId($outletId)
|
|
->destroy();
|
|
} catch (\Exception $e) {
|
|
return $e->getMessage();
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Notes: 根据券码 获取class
|
|
* @Author: 玄尘
|
|
* @Date : 2020/7/21 12:00
|
|
* @param $code
|
|
* @return string
|
|
*/
|
|
public static function getModelByCode($code)
|
|
{
|
|
$rules = config('xuanchen_coupon.rules');
|
|
if (!$rules) {
|
|
return '系统出错,未找到配置文件';
|
|
}
|
|
|
|
$model = '';
|
|
foreach ($rules as $rule) {
|
|
if (preg_match($rule['pattern'], $code, $matches)) {
|
|
$model = $rule['model'];
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (!$model) {
|
|
throw new \Exception('卡券核销失败。未查到卡券所属');
|
|
}
|
|
|
|
return new $model;
|
|
|
|
}
|
|
|
|
/**
|
|
* Notes: description
|
|
* @Author: 玄尘
|
|
* @Date : 2020/8/21 13:33
|
|
* @param \App\Models\User $user 渠道
|
|
* @param string $redemptionCode 要核销的券码
|
|
* @param float $total 订单金额
|
|
* @param string $outletId 网点id
|
|
* @param string $orderid 订单id
|
|
* @return string
|
|
*/
|
|
public static function Redemption(User $user, string $redemptionCode, float $total, string $outletId, string $orderid = '')
|
|
{
|
|
|
|
try {
|
|
$model = self::getModelByCode($redemptionCode);
|
|
if (is_string($model)) {
|
|
return $model;
|
|
}
|
|
|
|
return $model->setUser($user)
|
|
->setCode($redemptionCode)
|
|
->setTotal($total)
|
|
->setOutletId($outletId)
|
|
->setOrderId($orderid)
|
|
->start();
|
|
|
|
} catch (\Exception $e) {
|
|
return $e->getMessage();
|
|
}
|
|
|
|
}
|
|
|
|
}
|