This repository has been archived on 2021-03-23. You can view files and clone it, but cannot push or open issues or pull requests.
Files
pingan_unionpay/packages/unionpay/src/UnionPay.php
2020-09-29 14:17:56 +08:00

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();
}
}
}