Do not check order approved status if it does not contains physical goods

This commit is contained in:
dinamiko 2022-06-02 15:11:01 +02:00
parent 77230fefa8
commit 0a993f854d
7 changed files with 88 additions and 8 deletions

View file

@ -218,6 +218,7 @@ return array(
$environment = $container->get( 'onboarding.environment' );
$logger = $container->get( 'woocommerce.logger.woocommerce' );
$subscription_helper = $container->get( 'subscription.helper' );
$order_helper = $container->get('api.order-helper');
return new OrderProcessor(
$session_handler,
$order_endpoint,
@ -227,7 +228,8 @@ return array(
$settings,
$logger,
$environment,
$subscription_helper
$subscription_helper,
$order_helper
);
},
'wcgateway.processor.refunds' => static function ( ContainerInterface $container ): RefundProcessor {

View file

@ -14,6 +14,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
use WooCommerce\PayPalCommerce\Onboarding\Environment;
use WooCommerce\PayPalCommerce\Session\SessionHandler;
@ -106,6 +107,13 @@ class OrderProcessor {
*/
private $subscription_helper;
/**
* The order helper.
*
* @var OrderHelper
*/
private $order_helper;
/**
* OrderProcessor constructor.
*
@ -118,6 +126,7 @@ class OrderProcessor {
* @param LoggerInterface $logger A logger service.
* @param Environment $environment The environment.
* @param SubscriptionHelper $subscription_helper The subscription helper.
* @param OrderHelper $order_helper The order helper.
*/
public function __construct(
SessionHandler $session_handler,
@ -128,7 +137,8 @@ class OrderProcessor {
Settings $settings,
LoggerInterface $logger,
Environment $environment,
SubscriptionHelper $subscription_helper
SubscriptionHelper $subscription_helper,
OrderHelper $order_helper
) {
$this->session_handler = $session_handler;
@ -140,6 +150,7 @@ class OrderProcessor {
$this->environment = $environment;
$this->logger = $logger;
$this->subscription_helper = $subscription_helper;
$this->order_helper = $order_helper;
}
/**
@ -160,7 +171,7 @@ class OrderProcessor {
$this->add_paypal_meta( $wc_order, $order, $this->environment );
$error_message = null;
if ( ! $this->order_is_approved( $order ) ) {
if ( $this->order_helper->contains_physical_goods( $order ) && ! $this->order_is_approved( $order ) ) {
$error_message = __(
'The payment has not been approved yet.',
'woocommerce-paypal-payments'