From 4f46fa102969c3b911ca9164626a8b4f0af2ca4e Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 10 Sep 2024 09:49:17 +1000 Subject: [PATCH] Testing powerboard --- .../CBAPowerBoard/CreditCard.php | 39 ++++- .../CBAPowerBoardPaymentDriver.php | 13 +- .../2024_09_06_042040_cba_powerboard.php | 2 +- .../credit_card/authorize_no_3ds.blade.php | 140 ++++++++++++++++++ 4 files changed, 185 insertions(+), 9 deletions(-) create mode 100644 resources/views/portal/ninja2020/gateways/powerboard/credit_card/authorize_no_3ds.blade.php diff --git a/app/PaymentDrivers/CBAPowerBoard/CreditCard.php b/app/PaymentDrivers/CBAPowerBoard/CreditCard.php index 87e2577ff8b5..bb416636c401 100644 --- a/app/PaymentDrivers/CBAPowerBoard/CreditCard.php +++ b/app/PaymentDrivers/CBAPowerBoard/CreditCard.php @@ -40,7 +40,8 @@ class CreditCard implements LivewireMethodInterface { $data['payment_method_id'] = GatewayType::CREDIT_CARD; - return render('gateways.powerboard.credit_card.authorize', $this->paymentData($data)); + $view = $this->powerboard->company_gateway->getConfigField('threeds') ? 'gateways.powerboard.credit_card.authorize' : 'gateways.powerboard.credit_card.authorize_no_3ds'; + return render($view, $this->paymentData($data)); } public function authorizeResponse($request) @@ -136,8 +137,28 @@ class CreditCard implements LivewireMethodInterface } + elseif($request->charge_no3d){ + nlog($request->all()); + + $payment_source = $this->storePaymentSource($request); - // $cgt = $this->powerboard->customer()->storePaymentMethod($request); + nlog($payment_source); + + $data = [ + "payment_source" => [ + "vault_token" => $payment_source->vault_token, + ], + ]; + + $customer = $this->powerboard->customer()->findOrCreateCustomer($data); + + $cgt = $this->powerboard->customer()->storePaymentMethod($payment_source, $customer); + $cgt->gateway_customer_reference = $this->powerboard->settings()->getGatewayId(GatewayType::CREDIT_CARD); + $cgt->save(); + + return redirect()->route('client.payment_methods.show', ['payment_method' => $cgt->hashed_id]); + + } return redirect()->route('client.payment_methods.index'); @@ -176,6 +197,8 @@ class CreditCard implements LivewireMethodInterface 'store_ccv' => true, ]); + nlog($payload); + $r = $this->powerboard->gatewayRequest('/v1/vault/payment_sources', (\App\Enum\HttpVerb::POST)->value, $payload, []); if($r->failed()) @@ -236,8 +259,13 @@ class CreditCard implements LivewireMethodInterface nlog($r->body()); - if($r->failed()) - return $this->processUnsuccessfulPayment($r); + if($r->failed()){ + // return $this->processUnsuccessfulPayment($r); + + $error_payload = $this->getErrorFromResponse($r); + throw new PaymentFailed($error_payload[0], $error_payload[1]); + + } $charge = (new \App\PaymentDrivers\CBAPowerBoard\Models\Parse())->encode(Charge::class, $r->object()->resource->data) ?? $r->throw(); @@ -414,9 +442,10 @@ class CreditCard implements LivewireMethodInterface $error_message = "Unknown error"; match($error_object->error->code) { + "GatewayError" => $error_message = $error_object->error->message, "UnfulfilledCondition" => $error_message = $error_object->error->message, "transaction_declined" => $error_message = $error_object->error->details[0]->status_code_description, - default => $error_message = "Unknown error", + default => $error_message = $error_object->error->message ?? "Unknown error", }; return [$error_message, $exception->getCode()]; diff --git a/app/PaymentDrivers/CBAPowerBoardPaymentDriver.php b/app/PaymentDrivers/CBAPowerBoardPaymentDriver.php index 5e0b64f0af5e..5c9b6055e998 100644 --- a/app/PaymentDrivers/CBAPowerBoardPaymentDriver.php +++ b/app/PaymentDrivers/CBAPowerBoardPaymentDriver.php @@ -56,9 +56,16 @@ class CBAPowerBoardPaymentDriver extends BaseDriver */ public function gatewayTypes(): array { - $types = [ - GatewayType::CREDIT_CARD, - ]; + + $types = []; + + if ($this->client + && isset($this->client->country) + && in_array($this->client->country->iso_3166_3, ['AUS']) + && in_array($this->client->currency()->code, ['AUD']) + ) { + $types[] = GatewayType::CREDIT_CARD; + } return $types; } diff --git a/database/migrations/2024_09_06_042040_cba_powerboard.php b/database/migrations/2024_09_06_042040_cba_powerboard.php index bcccbb2d2dfd..7c993e310d54 100644 --- a/database/migrations/2024_09_06_042040_cba_powerboard.php +++ b/database/migrations/2024_09_06_042040_cba_powerboard.php @@ -21,7 +21,7 @@ return new class extends Migration $fields->publicKey = ''; $fields->secretKey = ''; $fields->testMode = false; - $fields->Threeds = false; + $fields->threeds = false; $powerboard = new Gateway(); $powerboard->id = 64; diff --git a/resources/views/portal/ninja2020/gateways/powerboard/credit_card/authorize_no_3ds.blade.php b/resources/views/portal/ninja2020/gateways/powerboard/credit_card/authorize_no_3ds.blade.php new file mode 100644 index 000000000000..3c8c6b6dd038 --- /dev/null +++ b/resources/views/portal/ninja2020/gateways/powerboard/credit_card/authorize_no_3ds.blade.php @@ -0,0 +1,140 @@ +@extends('portal.ninja2020.layout.payments', ['gateway_title' => 'Credit card', 'card_title' => 'Credit card']) + +@section('gateway_head') + +@endsection + +@section('gateway_content') + +
+ @csrf + + + + + +
+ + + +
+
+
+ + @component('portal.ninja2020.gateways.includes.pay_now', ['id' => 'authorize-card']) + {{ ctrans('texts.add_payment_method') }} + @endcomponent + +@endsection + +@section('gateway_footer') + + + + + + + +@endsection + + +