Use ExperienceContext in OrderProcessor

This commit is contained in:
Alex P. 2025-05-29 16:40:35 +03:00
parent 279a3452c8
commit 41b9585d2b
No known key found for this signature in database
GPG key ID: 54487A734A204D71
3 changed files with 32 additions and 6 deletions

View file

@ -570,7 +570,8 @@ return array(
$order_helper,
$container->get( 'api.factory.purchase-unit' ),
$container->get( 'api.factory.payer' ),
$container->get( 'api.factory.shipping-preference' )
$container->get( 'api.factory.shipping-preference' ),
$container->get( 'wcgateway.builder.experience-context' )
);
},
'wcgateway.processor.refunds' => static function ( ContainerInterface $container ): RefundProcessor {

View file

@ -14,9 +14,12 @@ use Psr\Log\LoggerInterface;
use WC_Order;
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
use WooCommerce\PayPalCommerce\ApiClient\Factory\ExperienceContextBuilder;
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
@ -143,6 +146,11 @@ class OrderProcessor {
*/
private $restore_order_data = array();
/**
* The ExperienceContextBuilder.
*/
private ExperienceContextBuilder $experience_context_builder;
/**
* OrderProcessor constructor.
*
@ -159,6 +167,7 @@ class OrderProcessor {
* @param PurchaseUnitFactory $purchase_unit_factory The PurchaseUnit factory.
* @param PayerFactory $payer_factory The payer factory.
* @param ShippingPreferenceFactory $shipping_preference_factory The shipping_preference factory.
* @param ExperienceContextBuilder $experience_context_builder The ExperienceContextBuilder.
*/
public function __construct(
SessionHandler $session_handler,
@ -173,7 +182,8 @@ class OrderProcessor {
OrderHelper $order_helper,
PurchaseUnitFactory $purchase_unit_factory,
PayerFactory $payer_factory,
ShippingPreferenceFactory $shipping_preference_factory
ShippingPreferenceFactory $shipping_preference_factory,
ExperienceContextBuilder $experience_context_builder
) {
$this->session_handler = $session_handler;
@ -189,6 +199,7 @@ class OrderProcessor {
$this->purchase_unit_factory = $purchase_unit_factory;
$this->payer_factory = $payer_factory;
$this->shipping_preference_factory = $shipping_preference_factory;
$this->experience_context_builder = $experience_context_builder;
}
/**
@ -317,7 +328,17 @@ class OrderProcessor {
array( $pu ),
$shipping_preference,
$this->payer_factory->from_wc_order( $wc_order ),
ApplicationContext::USER_ACTION_PAY_NOW
ApplicationContext::USER_ACTION_PAY_NOW,
'',
array(),
new PaymentSource(
'paypal',
(object) array(
'experience_context' => $this->experience_context_builder
->with_default_paypal_config( $shipping_preference, ExperienceContext::USER_ACTION_PAY_NOW )
->build()->to_array(),
)
)
);
return $order;