修改支付配置参数及注释

This commit is contained in:
邹景立 2022-01-09 16:13:14 +08:00
parent 88992e29f0
commit 0430a0d543
7 changed files with 89 additions and 101 deletions

View File

@ -280,49 +280,49 @@ abstract class PaymentService
* 创建支付订单
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 交易订单描述
* @param string $paymentReturn 支付回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 交易订单描述
* @param string $payReturn 支付回跳地址
* @param string $payImage 支付凭证图片
* @return array
*/
abstract public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array;
abstract public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array;
/**
* 创建支付行为
* @param string $orderNo 商户订单单号
* @param string $paymentTitle 商户订单标题
* @param string $paymentAmount 需要支付金额
* @param string $payTitle 商户订单标题
* @param string $payAmount 需要支付金额
*/
protected function createPaymentAction(string $orderNo, string $paymentTitle, string $paymentAmount)
protected function createPaymentAction(string $orderNo, string $payTitle, string $payAmount)
{
DataUserPayment::mk()->insert([
'payment_code' => $this->code,
'payment_type' => $this->type,
'order_no' => $orderNo,
'order_name' => $paymentTitle,
'order_amount' => $paymentAmount,
'order_name' => $payTitle,
'order_amount' => $payAmount,
]);
}
/**
* 更新支付记录并更新订单
* @param string $orderNo 商户订单单号
* @param string $paymentTrade 平台交易单号
* @param string $paymentAmount 实际到账金额
* @param string $paymentRemark 平台支付备注
* @param string $payTrade 平台交易单号
* @param string $payAmount 实际到账金额
* @param string $payRemark 平台支付备注
* @return boolean
*/
protected function updatePaymentAction(string $orderNo, string $paymentTrade, string $paymentAmount, string $paymentRemark = '在线支付'): bool
protected function updatePaymentAction(string $orderNo, string $payTrade, string $payAmount, string $payRemark = '在线支付'): bool
{
// 更新支付记录
DataUserPayment::mUpdate([
'order_no' => $orderNo,
'payment_code' => $this->code,
'payment_type' => $this->type,
'payment_trade' => $paymentTrade,
'payment_amount' => $paymentAmount,
'payment_trade' => $payTrade,
'payment_amount' => $payAmount,
'payment_status' => 1,
'payment_datatime' => date('Y-m-d H:i:s'),
], 'order_no', [
@ -330,19 +330,19 @@ abstract class PaymentService
'payment_type' => $this->type,
]);
// 更新记录状态
return $this->updatePaymentOrder($orderNo, $paymentTrade, $paymentAmount, $paymentRemark);
return $this->updatePaymentOrder($orderNo, $payTrade, $payAmount, $payRemark);
}
/**
* 订单支付更新操作
* @param string $orderNo 订单单号
* @param string $paymentTrade 交易单号
* @param string $paymentAmount 支付金额
* @param string $paymentRemark 支付描述
* @param string $paymentImage 支付凭证
* @param string $payTrade 交易单号
* @param string $payAmount 支付金额
* @param string $payRemark 支付描述
* @param string $payImage 支付凭证
* @return boolean
*/
protected function updatePaymentOrder(string $orderNo, string $paymentTrade, string $paymentAmount, string $paymentRemark = '在线支付', string $paymentImage = ''): bool
protected function updatePaymentOrder(string $orderNo, string $payTrade, string $payAmount, string $payRemark = '在线支付', string $payImage = ''): bool
{
$map = ['status' => 2, 'order_no' => $orderNo, 'payment_status' => 0];
$order = ShopOrder::mk()->where($map)->findOrEmpty();
@ -359,10 +359,10 @@ abstract class PaymentService
$order['stauts'] = $status;
$order['payment_code'] = $this->code;
$order['payment_type'] = $this->type;
$order['payment_trade'] = $paymentTrade;
$order['payment_image'] = $paymentImage;
$order['payment_amount'] = $paymentAmount;
$order['payment_remark'] = $paymentRemark;
$order['payment_trade'] = $payTrade;
$order['payment_image'] = $payImage;
$order['payment_amount'] = $payAmount;
$order['payment_remark'] = $payRemark;
$order['payment_status'] = 1;
$order['payment_datetime'] = date('Y-m-d H:i:s');
$order->save();

View File

@ -28,15 +28,15 @@ class AlipayPaymentService extends PaymentService
* 创建订单支付参数
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 订单订单描述
* @param string $paymentReturn 完成回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 订单订单描述
* @param string $payReturn 完成回跳地址
* @param string $payImage 支付凭证图片
* @return array
* @throws Exception
*/
public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array
public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array
{
try {
if (isset(static::TYPES[$this->type])) {
@ -46,10 +46,10 @@ class AlipayPaymentService extends PaymentService
}
$this->config['notify_url'] = sysuri("@data/api.notify/alipay/scene/order/param/{$this->code}", [], false, true);
if (in_array($tradeType, [static::PAYMENT_ALIPAY_WAP, static::PAYMENT_ALIPAY_WEB])) {
if (empty($paymentReturn)) {
if (empty($payReturn)) {
throw new Exception('支付回跳地址不能为空!');
} else {
$this->config['return_url'] = $paymentReturn;
$this->config['return_url'] = $payReturn;
}
}
if ($tradeType === static::PAYMENT_WECHAT_APP) {
@ -61,11 +61,11 @@ class AlipayPaymentService extends PaymentService
} else {
throw new Exception("支付类型[{$tradeType}]暂时不支持!");
}
$data = ['out_trade_no' => $orderNo, 'total_amount' => $paymentAmount, 'subject' => $paymentTitle];
if (!empty($paymentRemark)) $data['body'] = $paymentRemark;
$data = ['out_trade_no' => $orderNo, 'total_amount' => $payAmount, 'subject' => $payTitle];
if (!empty($payRemark)) $data['body'] = $payRemark;
$result = $payment->apply($data);
// 创建支付记录
$this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount);
$this->createPaymentAction($orderNo, $payTitle, $payAmount);
// 返回支付参数
return ['result' => $result];
} catch (Exception $exception) {
@ -78,10 +78,7 @@ class AlipayPaymentService extends PaymentService
/**
* 支付结果处理
* @return string
* @throws \WeChat\Exceptions\InvalidResponseException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @throws InvalidResponseException
*/
public function notify(): string
{

View File

@ -39,44 +39,44 @@ class BalancePyamentService extends PaymentService
* 创建订单支付参数
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 订单订单描述
* @param string $paymentReturn 完成回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 订单订单描述
* @param string $payReturn 完成回跳地址
* @param string $payImage 支付凭证图片
* @return array
* @throws \think\admin\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array
public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array
{
$order = ShopOrder::mk()->where(['order_no' => $orderNo])->find();
if (empty($order)) throw new Exception("订单不存在");
if ($order['status'] !== 2) throw new Exception("不可发起支付");
// 创建支付行为
$this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount);
$this->createPaymentAction($orderNo, $payTitle, $payAmount);
// 检查能否支付
[$total, $count] = UserBalanceService::instance()->amount($order['uuid'], [$orderNo]);
if ($paymentAmount > $total - $count) throw new Exception("可抵扣余额不足");
if ($payAmount > $total - $count) throw new Exception("可抵扣余额不足");
try {
// 扣减用户余额
$this->app->db->transaction(function () use ($order, $paymentAmount) {
$this->app->db->transaction(function () use ($order, $payAmount) {
// 更新订单余额
ShopOrder::mk()->where(['order_no' => $order['order_no']])->update([
'payment_balance' => $paymentAmount,
'payment_balance' => $payAmount,
]);
// 扣除余额金额
data_save(DataUserBalance::mk(), [
'uuid' => $order['uuid'],
'code' => "KC{$order['order_no']}",
'name' => "账户余额支付",
'remark' => "支付订单 {$order['order_no']} 的扣除余额 {$paymentAmount}",
'amount' => -$paymentAmount,
'remark' => "支付订单 {$order['order_no']} 的扣除余额 {$payAmount}",
'amount' => -$payAmount,
], 'code');
// 更新支付行为
$this->updatePaymentAction($order['order_no'], CodeExtend::uniqidDate(20), $paymentAmount, '账户余额支付');
$this->updatePaymentAction($order['order_no'], CodeExtend::uniqidDate(20), $payAmount, '账户余额支付');
});
// 刷新用户余额
UserBalanceService::instance()->amount($order['uuid']);

View File

@ -38,26 +38,26 @@ class EmptyPaymentService extends PaymentService
* 创建订单支付参数
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 订单订单描述
* @param string $paymentReturn 完成回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 订单订单描述
* @param string $payReturn 完成回跳地址
* @param string $payImage 支付凭证图片
* @return array
* @throws \think\admin\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array
public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array
{
$order = ShopOrder::mk()->where(['order_no' => $orderNo])->find();
if (empty($order)) throw new Exception("订单不存在");
if ($order['status'] !== 2) throw new Exception("不可发起支付");
// 创建支付行为
$this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount);
$this->createPaymentAction($orderNo, $payTitle, $payAmount);
// 更新支付行为
$this->updatePaymentAction($orderNo, CodeExtend::uniqidDate(20), $paymentAmount, '无需支付');
$this->updatePaymentAction($orderNo, CodeExtend::uniqidDate(20), $payAmount, '无需支付');
return ['code' => 1, 'info' => '订单无需支付'];
}
}

View File

@ -47,15 +47,15 @@ class JoinpayPaymentService extends PaymentService
* 创建订单支付参数
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 订单订单描述
* @param string $paymentReturn 完成回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 订单订单描述
* @param string $payReturn 完成回跳地址
* @param string $payImage 支付凭证图片
* @return array
* @throws Exception
*/
public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array
public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array
{
try {
if (isset(static::TYPES[$this->type])) {
@ -67,10 +67,10 @@ class JoinpayPaymentService extends PaymentService
'p0_Version' => '1.0',
'p1_MerchantNo' => $this->mchid,
'p2_OrderNo' => $orderNo,
'p3_Amount' => $paymentAmount,
'p3_Amount' => $payAmount,
'p4_Cur' => '1',
'p5_ProductName' => $paymentTitle,
'p6_ProductDesc' => $paymentRemark,
'p5_ProductName' => $payTitle,
'p6_ProductDesc' => $payRemark,
'p9_NotifyUrl' => sysuri("@data/api.notify/joinpay/scene/order/param/{$this->code}", [], false, true),
'q1_FrpCode' => $tradeType ?? '',
'q5_OpenId' => $openid,
@ -80,12 +80,12 @@ class JoinpayPaymentService extends PaymentService
if (empty($data['q5_OpenId'])) unset($data['q5_OpenId']);
$this->uri = 'https://www.joinpay.com/trade/uniPayApi.action';
$result = $this->_doReuest($data);
if (is_array($result) && isset($result['ra_Code']) && intval($result['ra_Code']) === 100) {
if (isset($result['ra_Code']) && intval($result['ra_Code']) === 100) {
// 创建支付记录
$this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount);
$this->createPaymentAction($orderNo, $payTitle, $payAmount);
// 返回支付参数
return json_decode($result['rc_Result'], true);
} elseif (is_array($result) && isset($result['rb_CodeMsg'])) {
} elseif (isset($result['rb_CodeMsg'])) {
throw new Exception($result['rb_CodeMsg']);
} else {
throw new Exception('获取预支付码失败!');
@ -134,9 +134,6 @@ class JoinpayPaymentService extends PaymentService
/**
* 支付结果处理
* @return string
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function notify(): string
{

View File

@ -37,24 +37,24 @@ class VoucherPaymentService extends PaymentService
* 创建订单支付参数
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 订单订单描述
* @param string $paymentReturn 完成回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 订单订单描述
* @param string $payReturn 完成回跳地址
* @param string $payImage 支付凭证图片
* @return array
* @throws \think\admin\Exception
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array
public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array
{
$order = ShopOrder::mk()->where(['order_no' => $orderNo])->find();
if (empty($order)) throw new Exception("订单不存在");
if ($order['status'] !== 2) throw new Exception("不可发起支付");
if (empty($paymentImage)) throw new Exception('支付凭证不能为空');
$this->updatePaymentOrder($orderNo, CodeExtend::uniqidDate(20), $paymentAmount, '单据凭证支付', $paymentImage);
if (empty($payImage)) throw new Exception('支付凭证不能为空');
$this->updatePaymentOrder($orderNo, CodeExtend::uniqidDate(20), $payAmount, '单据凭证支付', $payImage);
return ['code' => 1, 'info' => '支付凭证上传成功!'];
}
}

View File

@ -23,15 +23,15 @@ class WechatPaymentService extends PaymentService
* 创建订单支付参数
* @param string $openid 用户OPENID
* @param string $orderNo 交易订单单号
* @param string $paymentAmount 交易订单金额(元)
* @param string $paymentTitle 交易订单名称
* @param string $paymentRemark 订单订单描述
* @param string $paymentReturn 完成回跳地址
* @param string $paymentImage 支付凭证图片
* @param string $payAmount 交易订单金额(元)
* @param string $payTitle 交易订单名称
* @param string $payRemark 订单订单描述
* @param string $payReturn 完成回跳地址
* @param string $payImage 支付凭证图片
* @return array
* @throws Exception
*/
public function create(string $openid, string $orderNo, string $paymentAmount, string $paymentTitle, string $paymentRemark, string $paymentReturn = '', string $paymentImage = ''): array
public function create(string $openid, string $orderNo, string $payAmount, string $payTitle, string $payRemark, string $payReturn = '', string $payImage = ''): array
{
try {
if (isset(static::TYPES[$this->type])) {
@ -39,14 +39,14 @@ class WechatPaymentService extends PaymentService
} else {
throw new Exception(sprintf('支付类型[%s]未配置定义!', $this->type));
}
$body = empty($paymentRemark) ? $paymentTitle : ($paymentTitle . '-' . $paymentRemark);
$body = empty($payRemark) ? $payTitle : ($payTitle . '-' . $payRemark);
$data = [
'body' => $body,
'openid' => $openid,
'attach' => $this->code,
'out_trade_no' => $orderNo,
'trade_type' => $tradeType ?: '',
'total_fee' => $paymentAmount * 100,
'total_fee' => $payAmount * 100,
'notify_url' => sysuri("@data/api.notify/wxpay/scene/order/param/{$this->code}", [], false, true),
'spbill_create_ip' => $this->app->request->ip(),
];
@ -54,7 +54,7 @@ class WechatPaymentService extends PaymentService
$info = $this->payment->create($data);
if ($info['return_code'] === 'SUCCESS' && $info['result_code'] === 'SUCCESS') {
// 创建支付记录
$this->createPaymentAction($orderNo, $paymentTitle, $paymentAmount);
$this->createPaymentAction($orderNo, $payTitle, $payAmount);
// 返回支付参数
return $this->payment->jsapiParams($info['prepay_id']);
}
@ -72,9 +72,6 @@ class WechatPaymentService extends PaymentService
* @return array
* @throws \WeChat\Exceptions\InvalidResponseException
* @throws \WeChat\Exceptions\LocalCacheException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function query(string $orderNo): array
{
@ -91,9 +88,6 @@ class WechatPaymentService extends PaymentService
* 支付结果处理
* @return string
* @throws \WeChat\Exceptions\InvalidResponseException
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function notify(): string
{