diff --git a/app/Ninja/PaymentDrivers/BasePaymentDriver.php b/app/Ninja/PaymentDrivers/BasePaymentDriver.php index b7eb8007f6b2..38336ef7e7aa 100644 --- a/app/Ninja/PaymentDrivers/BasePaymentDriver.php +++ b/app/Ninja/PaymentDrivers/BasePaymentDriver.php @@ -38,6 +38,8 @@ class BasePaymentDriver protected $customerReferenceParam; protected $transactionReferenceParam; + public $canRefundPayments = false; + public function __construct($accountGateway = false, $invitation = false, $gatewayType = false) { $this->accountGateway = $accountGateway; diff --git a/app/Ninja/PaymentDrivers/BraintreePaymentDriver.php b/app/Ninja/PaymentDrivers/BraintreePaymentDriver.php index 6a53c8d29240..0b7f66e5f07f 100644 --- a/app/Ninja/PaymentDrivers/BraintreePaymentDriver.php +++ b/app/Ninja/PaymentDrivers/BraintreePaymentDriver.php @@ -11,6 +11,7 @@ class BraintreePaymentDriver extends BasePaymentDriver { protected $customerReferenceParam = 'customerId'; protected $sourceReferenceParam = 'paymentMethodToken'; + public $canRefundPayments = true; public function gatewayTypes() { diff --git a/app/Ninja/PaymentDrivers/StripePaymentDriver.php b/app/Ninja/PaymentDrivers/StripePaymentDriver.php index b739e019d430..d83e88eae231 100644 --- a/app/Ninja/PaymentDrivers/StripePaymentDriver.php +++ b/app/Ninja/PaymentDrivers/StripePaymentDriver.php @@ -10,6 +10,7 @@ use Exception; class StripePaymentDriver extends BasePaymentDriver { protected $customerReferenceParam = 'customerReference'; + public $canRefundPayments = true; public function gatewayTypes() { diff --git a/app/Ninja/PaymentDrivers/WePayPaymentDriver.php b/app/Ninja/PaymentDrivers/WePayPaymentDriver.php index 7398844c1404..293a6abded08 100644 --- a/app/Ninja/PaymentDrivers/WePayPaymentDriver.php +++ b/app/Ninja/PaymentDrivers/WePayPaymentDriver.php @@ -10,6 +10,8 @@ use Utils; class WePayPaymentDriver extends BasePaymentDriver { + public $canRefundPayments = true; + public function gatewayTypes() { $types = [ diff --git a/app/Services/PaymentService.php b/app/Services/PaymentService.php index c6e2829d298f..e65e57e7f439 100644 --- a/app/Services/PaymentService.php +++ b/app/Services/PaymentService.php @@ -178,8 +178,11 @@ class PaymentService extends BaseService foreach ($payments as $payment) { if (Auth::user()->can('edit', $payment)) { $amount = ! empty($params['refund_amount']) ? floatval($params['refund_amount']) : null; + $paymentDriver = false; if ($accountGateway = $payment->account_gateway) { $paymentDriver = $accountGateway->paymentDriver(); + } + if ($paymentDriver && $paymentDriver->canRefundPayments) { if ($paymentDriver->refundPayment($payment, $amount)) { $successful++; }