We will work on Apr 26th (Saturday) and will be off from Apr 30th (Wednesday) until May 2nd (Friday) for public holiday in our country

Commit 0c9dad61 authored by Alexandros Moraitis's avatar Alexandros Moraitis Committed by GitHub

[PW-3288] Google pay 3DS redirect (#870)

* google pay 3ds redirect

* Add the success page in the google pay config

* Fix code smell suggested from sonarcloud

* Remove google pay vault code

* Remove the response build method

* Remove unused parameter
parent 9cf251f3
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
namespace Adyen\Payment\Model; namespace Adyen\Payment\Model;
use Adyen\Payment\Model\Ui\AdyenCcConfigProvider; use Adyen\Payment\Model\Ui\AdyenCcConfigProvider;
use Adyen\Payment\Model\Ui\AdyenGooglePayConfigProvider;
use Adyen\Payment\Model\Ui\AdyenHppConfigProvider; use Adyen\Payment\Model\Ui\AdyenHppConfigProvider;
use Adyen\Payment\Model\Ui\AdyenOneclickConfigProvider; use Adyen\Payment\Model\Ui\AdyenOneclickConfigProvider;
...@@ -102,6 +103,15 @@ class AdyenOrderPaymentStatus implements \Adyen\Payment\Api\AdyenOrderPaymentSta ...@@ -102,6 +103,15 @@ class AdyenOrderPaymentStatus implements \Adyen\Payment\Api\AdyenOrderPaymentSta
return json_encode(['action' => $additionalInformation['action']]); return json_encode(['action' => $additionalInformation['action']]);
} }
} }
/**
* If payment method is google pay
*/
if ($payment->getMethod() === AdyenGooglePayConfigProvider::CODE) {
$additionalInformation = $payment->getAdditionalInformation();
if (!empty($additionalInformation['threeDSType'])) {
return json_encode(['type' => $additionalInformation['threeDSType']]);
}
}
return true; return true;
} }
......
...@@ -97,6 +97,10 @@ class AdyenGooglePayConfigProvider implements ConfigProviderInterface ...@@ -97,6 +97,10 @@ class AdyenGooglePayConfigProvider implements ConfigProviderInterface
self::CODE => [ self::CODE => [
'isActive' => true, 'isActive' => true,
'redirectUrl' => $this->urlBuilder->getUrl( 'redirectUrl' => $this->urlBuilder->getUrl(
'adyen/process/redirect/',
['_secure' => $this->_getRequest()->isSecure()]
),
'successUrl' => $this->urlBuilder->getUrl(
'checkout/onepage/success/', 'checkout/onepage/success/',
['_secure' => $this->_getRequest()->isSecure()] ['_secure' => $this->_getRequest()->isSecure()]
) )
......
...@@ -34,9 +34,10 @@ define( ...@@ -34,9 +34,10 @@ define(
'Magento_Checkout/js/model/full-screen-loader', 'Magento_Checkout/js/model/full-screen-loader',
'mage/url', 'mage/url',
'Magento_Vault/js/view/payment/vault-enabler', 'Magento_Vault/js/view/payment/vault-enabler',
'Adyen_Payment/js/model/adyen-payment-service',
'adyenCheckout' 'adyenCheckout'
], ],
function (ko, $, Component, placeOrderAction, additionalValidators, quote, urlBuilder, fullScreenLoader, url, VaultEnabler, AdyenCheckout) { function (ko, $, Component, placeOrderAction, additionalValidators, quote, urlBuilder, fullScreenLoader, url, VaultEnabler, adyenPaymentService,AdyenCheckout) {
'use strict'; 'use strict';
/** /**
...@@ -128,13 +129,16 @@ define( ...@@ -128,13 +129,16 @@ define(
self.isPlaceOrderActionAllowed(true); self.isPlaceOrderActionAllowed(true);
} }
).done( ).done(
function () { function (orderId) {
self.afterPlaceOrder(); self.afterPlaceOrder();
window.location.replace(url.build(window.checkoutConfig.payment[quote.paymentMethod().method].redirectUrl)); adyenPaymentService.getOrderPaymentStatus(orderId)
.done(function (responseJSON) {
} self.validateThreeDSOrPlaceOrder(responseJSON)
); });
}
);
} }
}, },
buttonColor: 'black', // default/black/white buttonColor: 'black', // default/black/white
buttonType: 'long', // long/short buttonType: 'long', // long/short
...@@ -150,6 +154,22 @@ define( ...@@ -150,6 +154,22 @@ define(
self.googlePayAllowed(false); self.googlePayAllowed(false);
}); });
}, },
/**
* Based on the response we can start a 3DS2 validation or place the order
* @param responseJSON
*/
validateThreeDSOrPlaceOrder: function (responseJSON) {
var response = JSON.parse(responseJSON);
var googlepayRedirectUrl = '';
if (response && response.type === 'RedirectShopper') {
googlepayRedirectUrl = window.checkoutConfig.payment[quote.paymentMethod().method].redirectUrl
} else {
window.location.replace(url.build(
googlepayRedirectUrl = window.checkoutConfig.payment[quote.paymentMethod().method].successUrl
));
}
window.location.replace(url.build(googlepayRedirectUrl));
},
isGooglePayAllowed: function () { isGooglePayAllowed: function () {
if (this.googlePayAllowed()) { if (this.googlePayAllowed()) {
return true; return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment