diff --git a/modules/ppcp-wc-gateway/src/Processor/ThreeDSecureHandlingTrait.php b/modules/ppcp-wc-gateway/src/Processor/ThreeDSecureHandlingTrait.php new file mode 100644 index 000000000..a7ed71792 --- /dev/null +++ b/modules/ppcp-wc-gateway/src/Processor/ThreeDSecureHandlingTrait.php @@ -0,0 +1,76 @@ +payment_source(); + if ( ! $payment_source ) { + return; + } + + $authentication_result = $payment_source->properties()->authentication_result ?? null; + + if ( $authentication_result ) { + $card_authentication_result_factory = new CardAuthenticationResultFactory(); + $result = $card_authentication_result_factory->from_paypal_response( $authentication_result ); + + $three_d_response_order_note_title = __( '3DS authentication result', 'woocommerce-paypal-payments' ); + /* translators: %1$s is 3DS order note title, %2$s is 3DS order note result markup */ + $three_d_response_order_note_format = __( '%1$s %2$s', 'woocommerce-paypal-payments' ); + $three_d_response_order_note_result_format = ''; + $three_d_response_order_note_result = sprintf( + $three_d_response_order_note_result_format, + /* translators: %s is enrollment status */ + sprintf( __( 'Enrollment Status: %s', 'woocommerce-paypal-payments' ), esc_html( $result->enrollment_status() ) ), + /* translators: %s is authentication status */ + sprintf( __( 'Authentication Status: %s', 'woocommerce-paypal-payments' ), esc_html( $result->authentication_result() ) ) + ); + $three_d_response_order_note = sprintf( + $three_d_response_order_note_format, + esc_html( $three_d_response_order_note_title ), + wp_kses_post( $three_d_response_order_note_result ) + ); + $wc_order->add_order_note( $three_d_response_order_note ); + $wc_order->update_meta_data( PayPalGateway::THREE_D_AUTH_RESULT_META_KEY, $three_d ); + $wc_order->save_meta_data(); + + /** + * Fired when the 3DS secure information is added to WC order. + */ + do_action( 'woocommerce_paypal_payments_thee_d_secure_added', $wc_order, $order ); + } + } +}