Throw error when hosted fields transaction declined and display an error message to the customer

This commit is contained in:
dinamiko 2020-11-20 15:40:01 +01:00
parent bc86c8341f
commit c5a107d02b
3 changed files with 26 additions and 8 deletions

View file

@ -10,6 +10,7 @@ declare( strict_types=1 );
namespace WooCommerce\PayPalCommerce\WcGateway\Gateway;
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
/**
* Trait ProcessPaymentTrait
@ -71,7 +72,15 @@ trait ProcessPaymentTrait {
}
$this->session_handler->destroy_session_data();
} catch ( RuntimeException $error ) {
$this->session_handler->destroy_session_data();
wc_add_notice(
__( 'Payment provider declined the payment, please use a different payment method.', 'woocommerce-paypal-payments' ),
'error'
);
return null;
}
wc_add_notice(
$this->order_processor->last_error(),
'error'

View file

@ -168,14 +168,10 @@ class OrderProcessor {
__( 'Awaiting payment.', 'woocommerce-paypal-payments' )
);
if ( $order->status()->is( OrderStatus::COMPLETED ) && $order->intent() === 'CAPTURE' ) {
$purchase_units_payments_captures_status = $order->purchase_units()[0]->payments()->captures()[0]->status() ?? '';
if ( $purchase_units_payments_captures_status && 'DECLINED' !== $purchase_units_payments_captures_status ) {
$wc_order->update_status(
'processing',
__( 'Payment received.', 'woocommerce-paypal-payments' )
);
}
$wc_order->update_status(
'processing',
__( 'Payment received.', 'woocommerce-paypal-payments' )
);
}
if ( $this->capture_authorized_downloads( $order ) && $this->authorized_payments_processor->process( $wc_order ) ) {