|
|
@@ -2,23 +2,25 @@
|
|
|
declare(strict_types=1);
|
|
|
namespace SixShop\Payment;
|
|
|
|
|
|
+use SixShop\Payment\Contracts\PaymentProviderInterface;
|
|
|
use SixShop\Payment\Contracts\PaymentQueryResult;
|
|
|
+use SixShop\Payment\Contracts\PaymentRefundRequest;
|
|
|
+use SixShop\Payment\Contracts\PaymentRefundResult;
|
|
|
use SixShop\Payment\Contracts\PaymentResponse;
|
|
|
use SixShop\Payment\Entity\ExtensionPaymentEntity;
|
|
|
+use SixShop\Payment\Entity\ExtensionRefundEntity;
|
|
|
use SixShop\Payment\Enum\PaymentBizEnum;
|
|
|
use SixShop\Payment\Event\BeforePayEvent;
|
|
|
use SixShop\Payment\Event\GatheringPaymentEvent;
|
|
|
use SixShop\System\ExtensionManager;
|
|
|
use SixShop\System\Model\ExtensionModel;
|
|
|
use think\facade\Event;
|
|
|
-use think\Request;
|
|
|
|
|
|
readonly class PaymentManager
|
|
|
{
|
|
|
|
|
|
public function __construct(
|
|
|
private ExtensionManager $extensionManager,
|
|
|
- private ExtensionPaymentEntity $extensionPaymentEntity,
|
|
|
)
|
|
|
{
|
|
|
}
|
|
|
@@ -45,22 +47,27 @@ readonly class PaymentManager
|
|
|
/**
|
|
|
* 创建支付订单
|
|
|
*/
|
|
|
- public function create($paymentID, array $order, PaymentBizEnum $bizType = PaymentBizEnum::ORDER_PAY): PaymentResponse
|
|
|
+ public function create(string $paymentID, array $order, PaymentBizEnum $bizType = PaymentBizEnum::ORDER_PAY): PaymentResponse
|
|
|
{
|
|
|
- $extension = $this->extensionManager->getExtension($paymentID);
|
|
|
Event::trigger(new BeforePayEvent($order, $paymentID, $bizType));
|
|
|
- return $extension->getPaymentProvider()->create($order, $bizType);
|
|
|
+ return $this->getPaymentProvider($paymentID)->create($order, $bizType);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询支付订单
|
|
|
*/
|
|
|
- public function query($paymentID, $recordID): PaymentQueryResult
|
|
|
+ public function query(string $paymentID, $recordID): PaymentQueryResult
|
|
|
{
|
|
|
- $extension = $this->extensionManager->getExtension($paymentID);
|
|
|
- return $extension->getPaymentProvider()->query($recordID);
|
|
|
+ return $this->getPaymentProvider($paymentID)->query($recordID);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 退款
|
|
|
+ */
|
|
|
+ public function refund(string $paymentID, int $recordID, PaymentRefundRequest $param): PaymentRefundResult
|
|
|
+ {
|
|
|
+ return $this->getPaymentProvider($paymentID)->refund($recordID, $param);
|
|
|
+ }
|
|
|
/**
|
|
|
* 获取指定支付方式
|
|
|
*/
|
|
|
@@ -88,4 +95,11 @@ readonly class PaymentManager
|
|
|
// todo
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+ private function getPaymentProvider(string $paymentID): PaymentProviderInterface
|
|
|
+ {
|
|
|
+ $extension = $this->extensionManager->getExtension($paymentID);
|
|
|
+ return $extension->getPaymentProvider();
|
|
|
+ }
|
|
|
+
|
|
|
}
|