From 39f648b084444e1c5e4c97608fda06dd1c0e2e3e Mon Sep 17 00:00:00 2001 From: Narek Zakarian Date: Tue, 23 Jan 2024 19:03:36 +0400 Subject: [PATCH] Handle the 3DS details when captured & authorized --- .../ppcp-wc-gateway/src/WCGatewayModule.php | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/modules/ppcp-wc-gateway/src/WCGatewayModule.php b/modules/ppcp-wc-gateway/src/WCGatewayModule.php index 79a6dc127..fb3168803 100644 --- a/modules/ppcp-wc-gateway/src/WCGatewayModule.php +++ b/modules/ppcp-wc-gateway/src/WCGatewayModule.php @@ -11,10 +11,11 @@ namespace WooCommerce\PayPalCommerce\WcGateway; use Psr\Log\LoggerInterface; use Throwable; +use WooCommerce\PayPalCommerce\ApiClient\Entity\Authorization; use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException; use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache; use WooCommerce\PayPalCommerce\WcGateway\Endpoint\RefreshFeatureStatusEndpoint; -use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper; +use WooCommerce\PayPalCommerce\WcGateway\Processor\ThreeDSecureHandlingTrait; use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider; use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface; use WC_Order; @@ -56,6 +57,8 @@ use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; */ class WCGatewayModule implements ModuleInterface { + use ThreeDSecureHandlingTrait; + /** * {@inheritDoc} */ @@ -92,7 +95,7 @@ class WCGatewayModule implements ModuleInterface { add_action( 'woocommerce_paypal_payments_order_captured', - function ( WC_Order $wc_order, Capture $capture ) { + function ( WC_Order $wc_order, Capture $capture ) use ( $c ) { $breakdown = $capture->seller_receivable_breakdown(); if ( $breakdown ) { $wc_order->update_meta_data( PayPalGateway::FEES_META_KEY, $breakdown->to_array() ); @@ -141,6 +144,19 @@ class WCGatewayModule implements ModuleInterface { ); $wc_order->add_order_note( $cvv_response_order_note ); } + + $order = $c->get( 'session.handler' )->order(); + $this->handle_three_d_secure( $order, $wc_order ); + }, + 10, + 2 + ); + + add_action( + 'woocommerce_paypal_payments_order_authorized', + function ( WC_Order $wc_order, Authorization $authorization ) use ( $c ) { + $order = $c->get( 'session.handler' )->order(); + $this->handle_three_d_secure( $order, $wc_order ); }, 10, 2