|
|
@@ -19,6 +19,7 @@ use SixShop\Payment\Enum\PaymentStatusEnum;
|
|
|
use SixShop\Payment\Enum\RefundStatusEnum;
|
|
|
use SixShop\Payment\Event\PaymentSuccessEvent;
|
|
|
use SixShop\Payment\Event\RefundSuccessEvent;
|
|
|
+use SixShop\Payment\Model\ExtensionRefundModel;
|
|
|
use SixShop\Wechat\Facade\WechatUser;
|
|
|
use SixShop\WechatPay\Entity\WechatpayTransferBillEntity;
|
|
|
use SixShop\WechatPay\Job\QueryRefundJob;
|
|
|
@@ -180,6 +181,13 @@ class PaymentProvider implements PaymentProviderInterface
|
|
|
public function refund(int $recordID, PaymentRefundRequest $param): PaymentRefundResult
|
|
|
{
|
|
|
$payment = $this->extensionPaymentEntity->find($recordID);
|
|
|
+ // todo 订单分多次退款未实现
|
|
|
+ $refund = ExtensionRefundModel::where(
|
|
|
+ ['order_sn' => $payment->out_trade_no, 'status' =>RefundStatusEnum::SUCCESS]
|
|
|
+ )->findOrEmpty();
|
|
|
+ if (!$refund->isEmpty()) {
|
|
|
+ return new PaymentRefundResult($refund);
|
|
|
+ }
|
|
|
$refund = Db::transaction(function () use ($param, $payment) {
|
|
|
$refund = $this->extensionRefundEntity->create([
|
|
|
'payment_id' => $payment->id,
|