From 98d2a4a4074bdc5d9cf1759c4d9127af644c9cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Tue, 19 Oct 2021 15:37:23 +0200 Subject: [PATCH] Support for DIRECT_DEBIT on authorization pages --- .../ClientPortal/PaymentMethodController.php | 6 +++--- app/Models/Client.php | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/ClientPortal/PaymentMethodController.php b/app/Http/Controllers/ClientPortal/PaymentMethodController.php index 2ab293af2397..809dedac63a1 100644 --- a/app/Http/Controllers/ClientPortal/PaymentMethodController.php +++ b/app/Http/Controllers/ClientPortal/PaymentMethodController.php @@ -149,11 +149,11 @@ class PaymentMethodController extends Controller private function getClientGateway() { if (request()->query('method') == GatewayType::CREDIT_CARD) { - return $gateway = auth()->user()->client->getCreditCardGateway(); + return auth()->user()->client->getCreditCardGateway(); } - if (request()->query('method') == GatewayType::BANK_TRANSFER) { - return $gateway = auth()->user()->client->getBankTransferGateway(); + if (in_array(request()->query('method'), [GatewayType::BANK_TRANSFER, GatewayType::DIRECT_DEBIT])) { + return auth()->user()->client->getBankTransferGateway(); } abort(404, 'Gateway not found.'); diff --git a/app/Models/Client.php b/app/Models/Client.php index aaf56737c465..8aade69c1943 100644 --- a/app/Models/Client.php +++ b/app/Models/Client.php @@ -518,6 +518,18 @@ class Client extends BaseModel implements HasLocalePreference } + if ($this->country->iso_3166_3 == 'GBR' && in_array(GatewayType::DIRECT_DEBIT, array_column($pms, 'gateway_type_id'))) { + foreach ($pms as $pm) { + if ($pm['gateway_type_id'] == GatewayType::DIRECT_DEBIT) { + $cg = CompanyGateway::find($pm['company_gateway_id']); + + if ($cg && $cg->fees_and_limits->{GatewayType::DIRECT_DEBIT}->is_enabled) { + return $cg; + } + } + } + } + return null; // $company_gateways = $this->getSetting('company_gateway_ids'); @@ -556,6 +568,10 @@ class Client extends BaseModel implements HasLocalePreference if ($this->currency()->code == 'EUR') { return GatewayType::SEPA; } + + if ($this->currency()->code == 'GBP') { + return GatewayType::DIRECT_DEBIT; + } } public function getCurrencyCode()