From 3a1906bd8727bba65913d6a1d0f805c0e98485a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 21 Sep 2020 11:17:16 +0200 Subject: [PATCH 1/4] Stripe: Optin/optout for saving card --- app/PaymentDrivers/Stripe/CreditCard.php | 2 +- .../gateways/stripe/add_credit_card.blade.php | 30 +++++++++++++------ .../gateways/stripe/credit_card.blade.php | 26 ++++++++++++++-- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/app/PaymentDrivers/Stripe/CreditCard.php b/app/PaymentDrivers/Stripe/CreditCard.php index c86707b4d8c4..50c2089b15c7 100644 --- a/app/PaymentDrivers/Stripe/CreditCard.php +++ b/app/PaymentDrivers/Stripe/CreditCard.php @@ -179,7 +179,7 @@ class CreditCard $payment_type = PaymentType::parseCardType($payment_method_object['card']['brand']); - if ($state['save_card'] == true) { + if ($state['save_card'] == true || $state['save_card'] == 'true') { $this->saveCard($state); } diff --git a/resources/views/portal/ninja2020/gateways/stripe/add_credit_card.blade.php b/resources/views/portal/ninja2020/gateways/stripe/add_credit_card.blade.php index 5532e5730ee7..587ea00a4414 100644 --- a/resources/views/portal/ninja2020/gateways/stripe/add_credit_card.blade.php +++ b/resources/views/portal/ninja2020/gateways/stripe/add_credit_card.blade.php @@ -22,7 +22,7 @@

{{ ctrans('texts.add_credit_card') }}

-

+

{{ ctrans('texts.authorize_for_future_use') }}

@@ -43,18 +43,30 @@
-
+
- {{ ctrans('texts.save_as_default') }} + {{ ctrans('texts.token_billing_checkbox') }}
-
diff --git a/resources/views/portal/ninja2020/gateways/stripe/credit_card.blade.php b/resources/views/portal/ninja2020/gateways/stripe/credit_card.blade.php index 77c91ba8e5c3..8410aa0f72ee 100644 --- a/resources/views/portal/ninja2020/gateways/stripe/credit_card.blade.php +++ b/resources/views/portal/ninja2020/gateways/stripe/credit_card.blade.php @@ -65,6 +65,7 @@ placeholder="{{ ctrans('texts.name') }}">
+
{{ ctrans('texts.credit_card') }} @@ -73,14 +74,35 @@
-
+ +
{{ ctrans('texts.token_billing_checkbox') }}
- + +
+
@include('portal.ninja2020.gateways.authorize.credit_card') - -
+ +
{{ ctrans('texts.token_billing_checkbox') }}
- + +
From c6b24d1c75b3d91b0bba6907cbe8218d14979607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 21 Sep 2020 11:34:06 +0200 Subject: [PATCH 3/4] Checkout: Optin/optout for saving card --- .../authorize-authorize-card.js | 5 ---- resources/js/clients/payments/checkout.com.js | 2 +- .../gateways/checkout/credit_card.blade.php | 25 ++++++++++++++++--- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/resources/js/clients/payment_methods/authorize-authorize-card.js b/resources/js/clients/payment_methods/authorize-authorize-card.js index 89b45482041b..9af8543c825d 100644 --- a/resources/js/clients/payment_methods/authorize-authorize-card.js +++ b/resources/js/clients/payment_methods/authorize-authorize-card.js @@ -66,11 +66,6 @@ class AuthorizeAuthorizeCard { } handle() { - //this.handleFormValidation(); - - // At this point as an small API you can request this.form.valid to check if input elements are valid. - // Note: this.form.valid will not handle empty fields. - this.cardButton.addEventListener("click", () => { this.cardButton.disabled = !this.cardButton.disabled; this.handleAuthorization(); diff --git a/resources/js/clients/payments/checkout.com.js b/resources/js/clients/payments/checkout.com.js index 1d4d4de59002..f00797a9628b 100644 --- a/resources/js/clients/payments/checkout.com.js +++ b/resources/js/clients/payments/checkout.com.js @@ -23,7 +23,7 @@ window.CKOConfig = { document.querySelector( 'input[name="store_card"]' - ).value = document.getElementById('store-card-checkbox').checked ? 1 : 0; + ).value = document.querySelector('input[name=token-billing-checkbox]:checked').value; document.getElementById('server-response').submit(); }, diff --git a/resources/views/portal/ninja2020/gateways/checkout/credit_card.blade.php b/resources/views/portal/ninja2020/gateways/checkout/credit_card.blade.php index 0c0f85f5fdd7..4c97ad520b6f 100644 --- a/resources/views/portal/ninja2020/gateways/checkout/credit_card.blade.php +++ b/resources/views/portal/ninja2020/gateways/checkout/credit_card.blade.php @@ -84,12 +84,31 @@
@else -
-
+
+
{{ ctrans('texts.token_billing_checkbox') }}
- + +
From 5579758a23241349a9c58510695ff4a088090fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Mon, 21 Sep 2020 11:38:54 +0200 Subject: [PATCH 4/4] Production builds of assets --- public/js/clients/payments/checkout.com.js | 2 +- public/mix-manifest.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/js/clients/payments/checkout.com.js b/public/js/clients/payments/checkout.com.js index 3fbd93d87430..70d0db5931e3 100644 --- a/public/js/clients/payments/checkout.com.js +++ b/public/js/clients/payments/checkout.com.js @@ -1,2 +1,2 @@ /*! For license information please see checkout.com.js.LICENSE.txt */ -!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=9)}({9:function(e,t,n){e.exports=n("XYrq")},XYrq:function(e,t){window.CKOConfig={publicKey:document.querySelector('meta[name="public-key"]').content,customerEmail:document.querySelector('meta[name="customer-email"]').content,value:document.querySelector('meta[name="value"]').content,currency:document.querySelector('meta[name="currency"]').content,paymentMode:"cards",cardFormMode:"cardTokenisation",cardTokenised:function(e){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.data),document.querySelector('input[name="store_card"]').value=document.getElementById("store-card-checkbox").checked?1:0,document.getElementById("server-response").submit()}}}}); \ No newline at end of file +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/",n(n.s=9)}({9:function(e,t,n){e.exports=n("XYrq")},XYrq:function(e,t){window.CKOConfig={publicKey:document.querySelector('meta[name="public-key"]').content,customerEmail:document.querySelector('meta[name="customer-email"]').content,value:document.querySelector('meta[name="value"]').content,currency:document.querySelector('meta[name="currency"]').content,paymentMode:"cards",cardFormMode:"cardTokenisation",cardTokenised:function(e){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.data),document.querySelector('input[name="store_card"]').value=document.querySelector("input[name=token-billing-checkbox]:checked").value,document.getElementById("server-response").submit()}}}}); \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 3949c1d94763..ea07f12968c8 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -9,7 +9,7 @@ "/js/clients/payments/alipay.js": "/js/clients/payments/alipay.js?id=766690d4207c0d8e75d1", "/js/clients/payments/authorize-credit-card-payment.js": "/js/clients/payments/authorize-credit-card-payment.js?id=914bbac0c52e458a55ea", "/js/clients/payments/card-js.min.js": "/js/clients/payments/card-js.min.js?id=7200ac43b87bddf1bedc", - "/js/clients/payments/checkout.com.js": "/js/clients/payments/checkout.com.js?id=42d239882b80af83ad22", + "/js/clients/payments/checkout.com.js": "/js/clients/payments/checkout.com.js?id=bee8407bd5dfae80dc6a", "/js/clients/payments/process.js": "/js/clients/payments/process.js?id=8f0a87e44b6e6824c010", "/js/clients/payments/sofort.js": "/js/clients/payments/sofort.js?id=ca99b358b094202d1e3a", "/js/clients/quotes/action-selectors.js": "/js/clients/quotes/action-selectors.js?id=1702ddb9f59521c7758f",