From bbeef5fd50766bedfaac91e2066f7c8364576d0e Mon Sep 17 00:00:00 2001 From: Lars Kusch Date: Sat, 17 Dec 2022 06:19:52 +0100 Subject: [PATCH] Added payment view for BACS --- app/PaymentDrivers/Stripe/BACS.php | 1 - public/js/clients/payments/stripe-bacs.js | 66 ++++++++++++++++++- resources/js/clients/payments/stripe-bacs.js | 25 ++++--- .../gateways/stripe/bacs/authorize.blade.php | 1 + .../gateways/stripe/bacs/pay.blade.php | 1 + 5 files changed, 83 insertions(+), 11 deletions(-) diff --git a/app/PaymentDrivers/Stripe/BACS.php b/app/PaymentDrivers/Stripe/BACS.php index 9dc28ab281d2..ab57def73b28 100644 --- a/app/PaymentDrivers/Stripe/BACS.php +++ b/app/PaymentDrivers/Stripe/BACS.php @@ -100,7 +100,6 @@ class BACS ]; $state = array_merge($state, $request->all()); - $state['store_card'] = boolval($state['store_card']); if ($request->has('token') && ! is_null($request->token)) { $state['store_card'] = false; diff --git a/public/js/clients/payments/stripe-bacs.js b/public/js/clients/payments/stripe-bacs.js index a4537ee2ab78..be0a7bcd8616 100644 --- a/public/js/clients/payments/stripe-bacs.js +++ b/public/js/clients/payments/stripe-bacs.js @@ -1,2 +1,64 @@ -/*! For license information please see stripe-bacs.js.LICENSE.txt */ -(()=>{var e,t,n,r;function i(e,t){for(var n=0;n svg").classList.remove("hidden"),document.querySelector("#authorize-bacs > span").classList.add("hidden"),location.href=document.querySelector("meta[name=stripe-redirect-url").content}))})),this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=n}));new a(null!==(e=null===(t=document.querySelector('meta[name="stripe-publishable-key"]'))||void 0===t?void 0:t.content)&&void 0!==e?e:"",null!==(n=null===(r=document.querySelector('meta[name="stripe-account-id"]'))||void 0===r?void 0:r.content)&&void 0!==n?n:"").setupStripe().handle()})(); \ No newline at end of file +/** + * Invoice Ninja (https://invoiceninja.com) + * + * @link https://github.com/invoiceninja/invoiceninja source repository + * + * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com) + * + * @license https://www.elastic.co/licensing/elastic-license + */ + +class ProcessBACS { + constructor(key, stripeConnect) { + this.key = key; + this.errors = document.getElementById('errors'); + this.stripeConnect = stripeConnect; + } + + setupStripe = () => { + + if (this.stripeConnect){ + // this.stripe.stripeAccount = this.stripeConnect; + + this.stripe = Stripe(this.key, { + stripeAccount: this.stripeConnect, + }); + + } + else { + this.stripe = Stripe(this.key); + } + + + return this; + }; + + handle = () => { + if (this.onlyAuthorization) { + document.getElementById('authorize-bacs').addEventListener('click', (e) => { + document.getElementById('authorize-bacs').disabled = true; + document.querySelector('#authorize-bacs > svg').classList.remove('hidden'); + document.querySelector('#authorize-bacs > span').classList.add('hidden'); + location.href=document.querySelector('meta[name=stripe-redirect-url').content; + });} + else{ + let token = document.querySelector('input[name=token]').value; + let payNowButton = document.getElementById('pay-now'); + this.payNowButton = payNowButton; + this.payNowButton.disabled = true; + this.payNowButton.querySelector('svg').classList.remove('hidden'); + this.payNowButton.querySelector('span').classList.add('hidden'); + } + }; +} + +const publishableKey = document.querySelector( + 'meta[name="stripe-publishable-key"]' +)?.content ?? ''; + +const stripeConnect = + document.querySelector('meta[name="stripe-account-id"]')?.content ?? ''; +const onlyAuthorization = + document.querySelector('meta[name="only-authorization"]')?.content ?? ''; + +new ProcessBACS(publishableKey, stripeConnect).setupStripe().handle(); diff --git a/resources/js/clients/payments/stripe-bacs.js b/resources/js/clients/payments/stripe-bacs.js index b0295b03f98a..be0a7bcd8616 100644 --- a/resources/js/clients/payments/stripe-bacs.js +++ b/resources/js/clients/payments/stripe-bacs.js @@ -34,14 +34,21 @@ class ProcessBACS { }; handle = () => { - document.getElementById('authorize-bacs').addEventListener('click', (e) => { - let errors = document.getElementById('errors'); - - document.getElementById('authorize-bacs').disabled = true; - document.querySelector('#authorize-bacs > svg').classList.remove('hidden'); - document.querySelector('#authorize-bacs > span').classList.add('hidden'); - location.href=document.querySelector('meta[name=stripe-redirect-url').content; - }); + if (this.onlyAuthorization) { + document.getElementById('authorize-bacs').addEventListener('click', (e) => { + document.getElementById('authorize-bacs').disabled = true; + document.querySelector('#authorize-bacs > svg').classList.remove('hidden'); + document.querySelector('#authorize-bacs > span').classList.add('hidden'); + location.href=document.querySelector('meta[name=stripe-redirect-url').content; + });} + else{ + let token = document.querySelector('input[name=token]').value; + let payNowButton = document.getElementById('pay-now'); + this.payNowButton = payNowButton; + this.payNowButton.disabled = true; + this.payNowButton.querySelector('svg').classList.remove('hidden'); + this.payNowButton.querySelector('span').classList.add('hidden'); + } }; } @@ -51,5 +58,7 @@ const publishableKey = document.querySelector( const stripeConnect = document.querySelector('meta[name="stripe-account-id"]')?.content ?? ''; +const onlyAuthorization = + document.querySelector('meta[name="only-authorization"]')?.content ?? ''; new ProcessBACS(publishableKey, stripeConnect).setupStripe().handle(); diff --git a/resources/views/portal/ninja2020/gateways/stripe/bacs/authorize.blade.php b/resources/views/portal/ninja2020/gateways/stripe/bacs/authorize.blade.php index 7eb969d268b2..f088cadd1315 100644 --- a/resources/views/portal/ninja2020/gateways/stripe/bacs/authorize.blade.php +++ b/resources/views/portal/ninja2020/gateways/stripe/bacs/authorize.blade.php @@ -9,6 +9,7 @@ @endif + @endsection diff --git a/resources/views/portal/ninja2020/gateways/stripe/bacs/pay.blade.php b/resources/views/portal/ninja2020/gateways/stripe/bacs/pay.blade.php index 4f8b81ee2388..faba871e55bf 100644 --- a/resources/views/portal/ninja2020/gateways/stripe/bacs/pay.blade.php +++ b/resources/views/portal/ninja2020/gateways/stripe/bacs/pay.blade.php @@ -7,6 +7,7 @@ @else @endif + @endsection @section('gateway_content')