diff --git a/app/PaymentDrivers/CBAPowerBoard/CreditCard.php b/app/PaymentDrivers/CBAPowerBoard/CreditCard.php index 85e6a7875cbf..c9c37eb70c62 100644 --- a/app/PaymentDrivers/CBAPowerBoard/CreditCard.php +++ b/app/PaymentDrivers/CBAPowerBoard/CreditCard.php @@ -165,7 +165,7 @@ class CreditCard implements LivewireMethodInterface public function paymentResponse(PaymentResponseRequest $request) { nlog($request->all()); - $payment_hash = PaymentHash::where('hash', $request->payment_has)->first(); + $payment_hash = PaymentHash::where('hash', $request->payment_hash)->first(); // $token = $request->payment_source; $payload = []; @@ -197,22 +197,26 @@ class CreditCard implements LivewireMethodInterface } elseif($request->charge) { + $charge_request = json_decode($request->charge, true); + + nlog($charge_request); + $payload = [ - '3ds' => [ - 'id' => $request['charge']['charge_3ds_id'], + '_3ds' => [ + 'id' => $charge_request['charge_3ds_id'], ], "amount"=> $payment_hash->data->amount_with_fee, "currency"=> $this->powerboard->client->currency()->code, "store_cvv"=> true, ]; + nlog($payload); + $r = $this->powerboard->gatewayRequest("/v1/charges", (\App\Enum\HttpVerb::POST)->value, $payload, []); if($r->failed()) $r->throw(); - - $charge = (new \App\PaymentDrivers\CBAPowerBoard\Models\Parse())->encode(Charge::class, $r->object()->resource->data) ?? $r->throw(); if ($charge->status == 'complete') { @@ -273,7 +277,7 @@ class CreditCard implements LivewireMethodInterface $payment = $this->powerboard->createPayment($data, Payment::STATUS_COMPLETED); SystemLogger::dispatch( - ['response' => $this->powerboard->payment_hash->data->server_response, 'data' => $data], + ['response' => $charge, 'data' => $data], SystemLog::CATEGORY_GATEWAY_RESPONSE, SystemLog::EVENT_GATEWAY_SUCCESS, SystemLog::TYPE_POWERBOARD, diff --git a/app/PaymentDrivers/CBAPowerBoard/Models/Charge.php b/app/PaymentDrivers/CBAPowerBoard/Models/Charge.php index 3afb255fdc5c..a165876c0608 100644 --- a/app/PaymentDrivers/CBAPowerBoard/Models/Charge.php +++ b/app/PaymentDrivers/CBAPowerBoard/Models/Charge.php @@ -13,59 +13,56 @@ namespace App\PaymentDrivers\CBAPowerBoard\Models; class Charge { - /** @var string */ - public string $external_id; - /** @var string */ - public string $_id; - /** @var string */ - public string $created_at; - /** @var string */ - public string $updated_at; - /** @var string */ - public string $remittance_date; - /** @var string */ - public string $company_id; - /** @var int */ - public int $amount; - /** @var string */ - public string $currency; - /** @var int */ - public int $__v; - /** @var Transactions[] */ + /** @var ?string */ + public ?string $external_id; + /** @var ?string */ + public ?string $_id; + /** @var ?string */ + public ?string $created_at; + /** @var ?string */ + public ?string $updated_at; + /** @var ?string */ + public ?string $remittance_date; + /** @var ?string */ + public ?string $company_id; + /** @var float */ + public float $amount; + /** @var ?string */ + public ?string $currency; + /** @var ?int */ + public ?int $__v; + /** @var Transaction[] */ public array $transactions; - /** @var bool */ - public bool $one_off; - /** @var bool */ - public bool $archived; + /** @var ?bool */ + public ?bool $one_off; + /** @var ?bool */ + public ?bool $archived; /** @var Customer */ public Customer $customer; - /** @var bool */ - public bool $capture; - /** @var string */ - public string $status; - /** @var array */ - public array $items; + /** @var ?bool */ + public ?bool $capture; + /** @var ?string */ + public? string $status; + /** @var ?array */ + public ?array $items; - /** - * @param Transactions[] $transactions - */ public function __construct( - string $external_id, - string $_id, - string $created_at, - string $updated_at, - string $remittance_date, - string $company_id, - int $amount, - string $currency, - int $__v, + ?string $external_id, + ?string $_id, + ?string $created_at, + ?string $updated_at, + ?string $remittance_date, + ?string $company_id, + float $amount, + ?string $currency, + ?int $__v, array $transactions, - bool $one_off, - bool $archived, + ?bool $one_off, + ?bool $archived, Customer $customer, - bool $capture, - string $status, - array $items, + ?bool $capture, + ?string $status, + ?array $items, ) { $this->external_id = $external_id; $this->_id = $_id; diff --git a/app/PaymentDrivers/CBAPowerBoard/Models/Customer.php b/app/PaymentDrivers/CBAPowerBoard/Models/Customer.php index bcb1da8aefe1..b6b52ded3948 100644 --- a/app/PaymentDrivers/CBAPowerBoard/Models/Customer.php +++ b/app/PaymentDrivers/CBAPowerBoard/Models/Customer.php @@ -14,56 +14,53 @@ namespace App\PaymentDrivers\CBAPowerBoard\Models; class Customer { - /** @var string */ - public string $_id; - /** @var string */ - public string $_source_ip_address; - /** @var string */ - public string $first_name; - /** @var string */ - public string $last_name; - /** @var string */ - public string $email; - /** @var string */ - public string $reference; - /** @var string */ - public string $default_source; - /** @var string */ - public string $status; - /** @var bool */ - public bool $archived; - /** @var string */ - public string $created_at; - /** @var string */ - public string $updated_at; - /** @var bool */ - public bool $_check_expire_date; - /** @var PaymentSource[] */ - public array $payment_sources; - /** @var array */ - public array $payment_destinations; - /** @var string */ - public string $company_id; + /** @var ?string */ + public ?string $_id; + /** @var ?string */ + public ?string $_source_ip_address; + /** @var ?string */ + public ?string $first_name; + /** @var ?string */ + public ?string $last_name; + /** @var ?string */ + public ?string $email; + /** @var ?string */ + public ?string $reference; + /** @var ?string */ + public ?string $default_source; + /** @var ?string */ + public ?string $status; + /** @var ?bool */ + public ?bool $archived; + /** @var ?string */ + public ?string $created_at; + /** @var ?string */ + public ?string $updated_at; + /** @var ?bool */ + public ?bool $_check_expire_date; + /** @var ?PaymentSource[] */ + public ?array $payment_sources; + /** @var ?array */ + public ?array $payment_destinations; + /** @var ?string */ + public ?string $company_id; - /** - * @param PaymentSource[] $payment_sources - */ public function __construct( - string $_id, - string $_source_ip_address, - string $first_name, - string $last_name, - string $email, - string $reference, - string $default_source, - string $status, - bool $archived, - string $created_at, - string $updated_at, - bool $_check_expire_date, - array $payment_sources, - array $payment_destinations, - string $company_id + ?string $_id, + ?string $_source_ip_address, + ?string $first_name, + ?string $last_name, + ?string $email, + ?string $reference, + ?string $default_source, + ?string $status, + ?bool $archived, + ?string $created_at, + ?string $updated_at, + ?bool $_check_expire_date, + ?array $payment_sources, + ?array $payment_destinations, + ?string $company_id ) { $this->_id = $_id; $this->_source_ip_address = $_source_ip_address; diff --git a/app/PaymentDrivers/CBAPowerBoard/Models/Transaction.php b/app/PaymentDrivers/CBAPowerBoard/Models/Transaction.php index 33c7c07fca48..7ed6fef8bc55 100644 --- a/app/PaymentDrivers/CBAPowerBoard/Models/Transaction.php +++ b/app/PaymentDrivers/CBAPowerBoard/Models/Transaction.php @@ -11,54 +11,69 @@ namespace App\PaymentDrivers\CBAPowerBoard\Models; -class Transactions +class Threeds { - /** @var string */ - public string $created_at; - /** @var int */ - public int $amount; - /** @var string */ - public string $currency; - /** @var string */ - public string $_id; - /** @var string */ - public ?string $error_code; - /** @var ?string */ - public ?string $error_message; - /** @var ?string */ - public ?string $gateway_specific_description; - /** @var ?string */ - public ?string $gateway_specific_code; - /** @var string */ - public string $_source_ip_address; - /** @var string */ - public string $status; - /** @var string */ - public string $type; - - public function __construct( - string $created_at, - int $amount, - string $currency, - string $_id, - ?string $error_code, - ?string $error_message, - ?string $gateway_specific_description, - ?string $gateway_specific_code, - string $_source_ip_address, - string $status, - string $type - ) { - $this->created_at = $created_at; - $this->amount = $amount; - $this->currency = $currency; - $this->_id = $_id; - $this->error_code = $error_code; - $this->error_message = $error_message; - $this->gateway_specific_description = $gateway_specific_description; - $this->gateway_specific_code = $gateway_specific_code; - $this->_source_ip_address = $_source_ip_address; - $this->status = $status; - $this->type = $type; - } + public function __construct(public ?string $token){} +} + +class Transaction +{ + public ?Threeds $_3ds; + public ?string $gateway_specific_code; + public ?string $gateway_specific_description; + public ?string $error_message; + public ?string $error_code; + public ?string $status_code; + public ?string $status_code_description; + public ?string $type; + public ?string $status; + public float $amount; + public ?string $currency; + public ?string $_id; + public ?string $created_at; + public ?string $updated_at; + public ?string $processed_at; + public ?string $external_id; + public ?string $external_reference; + public ?string $authorization_code; + + public function __construct( + ?Threeds $_3ds, + ?string $gateway_specific_code, + ?string $gateway_specific_description, + ?string $error_message, + ?string $error_code, + ?string $status_code, + ?string $status_code_description, + ?string $type, + ?string $status, + float $amount, + ?string $currency, + ?string $_id, + ?string $created_at, + ?string $updated_at, + ?string $processed_at, + ?string $external_id, + ?string $external_reference, + ?string $authorization_code + ) { + $this->_3ds = $_3ds; + $this->gateway_specific_code = $gateway_specific_code; + $this->gateway_specific_description = $gateway_specific_description; + $this->error_message = $error_message; + $this->error_code = $error_code; + $this->status_code = $status_code; + $this->status_code_description = $status_code_description; + $this->type = $type; + $this->status = $status; + $this->amount = $amount; + $this->currency = $currency; + $this->_id = $_id; + $this->created_at = $created_at; + $this->updated_at = $updated_at; + $this->processed_at = $processed_at; + $this->external_id = $external_id; + $this->external_reference = $external_reference; + $this->authorization_code = $authorization_code; + } } diff --git a/resources/views/portal/ninja2020/gateways/powerboard/credit_card/pay.blade.php b/resources/views/portal/ninja2020/gateways/powerboard/credit_card/pay.blade.php index 1fca07754e6d..9f1cd1fdfb97 100644 --- a/resources/views/portal/ninja2020/gateways/powerboard/credit_card/pay.blade.php +++ b/resources/views/portal/ninja2020/gateways/powerboard/credit_card/pay.blade.php @@ -64,6 +64,7 @@
+
@include('portal.ninja2020.gateways.includes.save_card') @@ -144,45 +145,48 @@ console.log("3DS Token:", resource); console.log("pre canvas"); - + console.log(resource._3ds.token); + var canvas = new cba.Canvas3ds('#widget-3dsecure', resource._3ds.token); canvas.load(); - - console.log("post canvas"); - - canvas.on("chargeAuthSuccess", function(data) { - console.log(data); + + let widget = document.getElementById('widget'); + widget.classList.add('hidden'); - document.querySelector( - 'input[name="browser_details"]' - ).value = null; - - document.querySelector( - 'input[name="charge"]' - ).value = JSON.stringify(data); - - - document.getElementById('server-response').submit(); - - }); - - canvas.on("chargeAuthReject", function(data) { - console.log(data); - }); } catch (error) { console.error("Error fetching 3DS Token:", error); } + + + canvas.on("chargeAuthSuccess", function(data) { + console.log(data); + + document.querySelector( + 'input[name="browser_details"]' + ).value = null; + + document.querySelector( + 'input[name="charge"]' + ).value = JSON.stringify(data); + + document.getElementById('server-response').submit(); + + }); + + canvas.on("chargeAuthReject", function(data) { + console.log(data); + }); + + + canvas.load(); + }); widget.on("submit", async function (data){ console.log("submit"); - console.log(data); - - - - + console.log(data); }) widget.on('form_submit', function (data) {