mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
Refactor aplication context into experience context
This commit is contained in:
parent
a101a2f8fb
commit
06c9b32475
24 changed files with 300 additions and 471 deletions
|
@ -42,7 +42,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PaymentTokenEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\WebhookEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\AddressFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\AddressFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\AmountFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\AmountFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ApplicationContextFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\ExperienceContextFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\AuthorizationFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\AuthorizationFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\CaptureFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\CaptureFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ExchangeRateFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\ExchangeRateFactory;
|
||||||
|
@ -69,7 +69,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderTransient;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderTransient;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\PurchaseUnitSanitizer;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\PurchaseUnitSanitizer;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\ApplicationContextRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\CustomerRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\CustomerRepository;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\OrderRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\OrderRepository;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\PartnerReferralsData;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\PartnerReferralsData;
|
||||||
|
@ -222,7 +222,6 @@ return array(
|
||||||
assert( $settings instanceof Settings );
|
assert( $settings instanceof Settings );
|
||||||
|
|
||||||
$intent = $settings->has( 'intent' ) && strtoupper( (string) $settings->get( 'intent' ) ) === 'AUTHORIZE' ? 'AUTHORIZE' : 'CAPTURE';
|
$intent = $settings->has( 'intent' ) && strtoupper( (string) $settings->get( 'intent' ) ) === 'AUTHORIZE' ? 'AUTHORIZE' : 'CAPTURE';
|
||||||
$application_context_repository = $container->get( 'api.repository.application-context' );
|
|
||||||
$subscription_helper = $container->get( 'wc-subscriptions.helper' );
|
$subscription_helper = $container->get( 'wc-subscriptions.helper' );
|
||||||
return new OrderEndpoint(
|
return new OrderEndpoint(
|
||||||
$container->get( 'api.host' ),
|
$container->get( 'api.host' ),
|
||||||
|
@ -231,7 +230,6 @@ return array(
|
||||||
$patch_collection_factory,
|
$patch_collection_factory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$application_context_repository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
$container->get( 'wcgateway.is-fraudnet-enabled' ),
|
$container->get( 'wcgateway.is-fraudnet-enabled' ),
|
||||||
$container->get( 'wcgateway.fraudnet' ),
|
$container->get( 'wcgateway.fraudnet' ),
|
||||||
|
@ -276,13 +274,11 @@ return array(
|
||||||
$container->get( 'woocommerce.logger.woocommerce' )
|
$container->get( 'woocommerce.logger.woocommerce' )
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
'api.repository.application-context' => static function( ContainerInterface $container ) : ApplicationContextRepository {
|
'api.repository.experience-context' => static function( ContainerInterface $container ) : ExperienceContextRepository {
|
||||||
|
|
||||||
$settings = $container->get( 'wcgateway.settings' );
|
$settings = $container->get( 'wcgateway.settings' );
|
||||||
return new ApplicationContextRepository( $settings );
|
return new ExperienceContextRepository( $settings );
|
||||||
},
|
},
|
||||||
'api.repository.partner-referrals-data' => static function ( ContainerInterface $container ) : PartnerReferralsData {
|
'api.repository.partner-referrals-data' => static function ( ContainerInterface $container ) : PartnerReferralsData {
|
||||||
|
|
||||||
$dcc_applies = $container->get( 'api.helpers.dccapplies' );
|
$dcc_applies = $container->get( 'api.helpers.dccapplies' );
|
||||||
return new PartnerReferralsData( $dcc_applies );
|
return new PartnerReferralsData( $dcc_applies );
|
||||||
},
|
},
|
||||||
|
@ -300,8 +296,8 @@ return array(
|
||||||
$container->get( 'api.endpoint.order' )
|
$container->get( 'api.endpoint.order' )
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
'api.factory.application-context' => static function ( ContainerInterface $container ) : ApplicationContextFactory {
|
'api.factory.experience-context' => static function ( ContainerInterface $container ) : ExperienceContextFactory {
|
||||||
return new ApplicationContextFactory();
|
return new ExperienceContextFactory();
|
||||||
},
|
},
|
||||||
'api.factory.payment-token' => static function ( ContainerInterface $container ) : PaymentTokenFactory {
|
'api.factory.payment-token' => static function ( ContainerInterface $container ) : PaymentTokenFactory {
|
||||||
return new PaymentTokenFactory();
|
return new PaymentTokenFactory();
|
||||||
|
@ -401,8 +397,8 @@ return array(
|
||||||
'api.factory.order' => static function ( ContainerInterface $container ): OrderFactory {
|
'api.factory.order' => static function ( ContainerInterface $container ): OrderFactory {
|
||||||
$purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
|
$purchase_unit_factory = $container->get( 'api.factory.purchase-unit' );
|
||||||
$payer_factory = $container->get( 'api.factory.payer' );
|
$payer_factory = $container->get( 'api.factory.payer' );
|
||||||
$application_context_repository = $container->get( 'api.repository.application-context' );
|
$application_context_repository = $container->get( 'api.repository.experience-context' );
|
||||||
$application_context_factory = $container->get( 'api.factory.application-context' );
|
$application_context_factory = $container->get( 'api.factory.experience-context' );
|
||||||
return new OrderFactory(
|
return new OrderFactory(
|
||||||
$purchase_unit_factory,
|
$purchase_unit_factory,
|
||||||
$payer_factory,
|
$payer_factory,
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace WooCommerce\PayPalCommerce\ApiClient\Endpoint;
|
||||||
|
|
||||||
use stdClass;
|
use stdClass;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
|
use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\AuthorizationStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
|
@ -19,14 +19,12 @@ use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PatchCollection;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PatchCollection;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PatchCollectionFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PatchCollectionFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\ErrorResponse;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\ErrorResponse;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\ApplicationContextRepository;
|
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\FraudNet\FraudNet;
|
use WooCommerce\PayPalCommerce\WcGateway\FraudNet\FraudNet;
|
||||||
|
@ -88,13 +86,6 @@ class OrderEndpoint {
|
||||||
*/
|
*/
|
||||||
private $logger;
|
private $logger;
|
||||||
|
|
||||||
/**
|
|
||||||
* The application context repository.
|
|
||||||
*
|
|
||||||
* @var ApplicationContextRepository
|
|
||||||
*/
|
|
||||||
private $application_context_repository;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* True if FraudNet support is enabled in settings, otherwise false.
|
* True if FraudNet support is enabled in settings, otherwise false.
|
||||||
*
|
*
|
||||||
|
@ -125,7 +116,6 @@ class OrderEndpoint {
|
||||||
* @param PatchCollectionFactory $patch_collection_factory The patch collection factory.
|
* @param PatchCollectionFactory $patch_collection_factory The patch collection factory.
|
||||||
* @param string $intent The intent.
|
* @param string $intent The intent.
|
||||||
* @param LoggerInterface $logger The logger.
|
* @param LoggerInterface $logger The logger.
|
||||||
* @param ApplicationContextRepository $application_context_repository The application context repository.
|
|
||||||
* @param SubscriptionHelper $subscription_helper The subscription helper.
|
* @param SubscriptionHelper $subscription_helper The subscription helper.
|
||||||
* @param bool $is_fraudnet_enabled true if FraudNet support is enabled in settings, otherwise false.
|
* @param bool $is_fraudnet_enabled true if FraudNet support is enabled in settings, otherwise false.
|
||||||
* @param FraudNet $fraudnet The FraudNet entity.
|
* @param FraudNet $fraudnet The FraudNet entity.
|
||||||
|
@ -138,7 +128,6 @@ class OrderEndpoint {
|
||||||
PatchCollectionFactory $patch_collection_factory,
|
PatchCollectionFactory $patch_collection_factory,
|
||||||
string $intent,
|
string $intent,
|
||||||
LoggerInterface $logger,
|
LoggerInterface $logger,
|
||||||
ApplicationContextRepository $application_context_repository,
|
|
||||||
SubscriptionHelper $subscription_helper,
|
SubscriptionHelper $subscription_helper,
|
||||||
bool $is_fraudnet_enabled,
|
bool $is_fraudnet_enabled,
|
||||||
FraudNet $fraudnet,
|
FraudNet $fraudnet,
|
||||||
|
@ -151,7 +140,6 @@ class OrderEndpoint {
|
||||||
$this->patch_collection_factory = $patch_collection_factory;
|
$this->patch_collection_factory = $patch_collection_factory;
|
||||||
$this->intent = $intent;
|
$this->intent = $intent;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
$this->application_context_repository = $application_context_repository;
|
|
||||||
$this->bn_code = $bn_code;
|
$this->bn_code = $bn_code;
|
||||||
$this->is_fraudnet_enabled = $is_fraudnet_enabled;
|
$this->is_fraudnet_enabled = $is_fraudnet_enabled;
|
||||||
$this->subscription_helper = $subscription_helper;
|
$this->subscription_helper = $subscription_helper;
|
||||||
|
@ -178,11 +166,9 @@ class OrderEndpoint {
|
||||||
* @param PurchaseUnit[] $items The purchase unit items for the order.
|
* @param PurchaseUnit[] $items The purchase unit items for the order.
|
||||||
* @param string $shipping_preference One of ApplicationContext::SHIPPING_PREFERENCE_ values.
|
* @param string $shipping_preference One of ApplicationContext::SHIPPING_PREFERENCE_ values.
|
||||||
* @param Payer|null $payer The payer off the order.
|
* @param Payer|null $payer The payer off the order.
|
||||||
* @param PaymentToken|null $payment_token The payment token.
|
* @param PaymentSource|null $payment_source The payment source.
|
||||||
* @param string $user_action The user action.
|
|
||||||
* @param string $payment_method WC payment method.
|
* @param string $payment_method WC payment method.
|
||||||
* @param array $request_data Request data.
|
* @param array $request_data Request data.
|
||||||
* @param PaymentSource|null $payment_source The payment source.
|
|
||||||
*
|
*
|
||||||
* @return Order
|
* @return Order
|
||||||
* @throws RuntimeException If the request fails.
|
* @throws RuntimeException If the request fails.
|
||||||
|
@ -191,11 +177,9 @@ class OrderEndpoint {
|
||||||
array $items,
|
array $items,
|
||||||
string $shipping_preference,
|
string $shipping_preference,
|
||||||
Payer $payer = null,
|
Payer $payer = null,
|
||||||
PaymentToken $payment_token = null,
|
PaymentSource $payment_source = null,
|
||||||
string $user_action = ApplicationContext::USER_ACTION_CONTINUE,
|
|
||||||
string $payment_method = '',
|
string $payment_method = '',
|
||||||
array $request_data = array(),
|
array $request_data = array()
|
||||||
PaymentSource $payment_source = null
|
|
||||||
): Order {
|
): Order {
|
||||||
$bearer = $this->bearer->bearer();
|
$bearer = $this->bearer->bearer();
|
||||||
$data = array(
|
$data = array(
|
||||||
|
@ -204,7 +188,7 @@ class OrderEndpoint {
|
||||||
static function ( PurchaseUnit $item ) use ( $shipping_preference ): array {
|
static function ( PurchaseUnit $item ) use ( $shipping_preference ): array {
|
||||||
$data = $item->to_array();
|
$data = $item->to_array();
|
||||||
|
|
||||||
if ( $shipping_preference !== ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE ) {
|
if ( $shipping_preference !== ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE ) {
|
||||||
// Shipping options are not allowed to be sent when not getting the address from PayPal.
|
// Shipping options are not allowed to be sent when not getting the address from PayPal.
|
||||||
unset( $data['shipping']['options'] );
|
unset( $data['shipping']['options'] );
|
||||||
}
|
}
|
||||||
|
@ -213,15 +197,10 @@ class OrderEndpoint {
|
||||||
},
|
},
|
||||||
$items
|
$items
|
||||||
),
|
),
|
||||||
'application_context' => $this->application_context_repository
|
|
||||||
->current_context( $shipping_preference, $user_action )->to_array(),
|
|
||||||
);
|
);
|
||||||
if ( $payer && ! empty( $payer->email_address() ) ) {
|
if ( $payer && ! empty( $payer->email_address() ) ) {
|
||||||
$data['payer'] = $payer->to_array();
|
$data['payer'] = $payer->to_array();
|
||||||
}
|
}
|
||||||
if ( $payment_token ) {
|
|
||||||
$data['payment_source']['token'] = $payment_token->to_array();
|
|
||||||
}
|
|
||||||
if ( $payment_source ) {
|
if ( $payment_source ) {
|
||||||
$data['payment_source'] = array(
|
$data['payment_source'] = array(
|
||||||
$payment_source->name() => $payment_source->properties(),
|
$payment_source->name() => $payment_source->properties(),
|
||||||
|
|
|
@ -12,9 +12,9 @@ namespace WooCommerce\PayPalCommerce\ApiClient\Entity;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ApplicationContext
|
* Class ExperienceContext
|
||||||
*/
|
*/
|
||||||
class ApplicationContext {
|
class ExperienceContext {
|
||||||
|
|
||||||
const LANDING_PAGE_LOGIN = 'LOGIN';
|
const LANDING_PAGE_LOGIN = 'LOGIN';
|
||||||
const LANDING_PAGE_BILLING = 'BILLING';
|
const LANDING_PAGE_BILLING = 'BILLING';
|
|
@ -65,11 +65,11 @@ class Order {
|
||||||
private $update_time;
|
private $update_time;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The application context.
|
* The experience context.
|
||||||
*
|
*
|
||||||
* @var ApplicationContext|null
|
* @var ExperienceContext|null
|
||||||
*/
|
*/
|
||||||
private $application_context;
|
private $experience_context;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The payment source.
|
* The payment source.
|
||||||
|
@ -86,7 +86,7 @@ class Order {
|
||||||
* @param string $id The ID.
|
* @param string $id The ID.
|
||||||
* @param PurchaseUnit[] $purchase_units The purchase units.
|
* @param PurchaseUnit[] $purchase_units The purchase units.
|
||||||
* @param OrderStatus $order_status The order status.
|
* @param OrderStatus $order_status The order status.
|
||||||
* @param ApplicationContext|null $application_context The application context.
|
* @param ExperienceContext|null $experience_context The application context.
|
||||||
* @param PaymentSource|null $payment_source The payment source.
|
* @param PaymentSource|null $payment_source The payment source.
|
||||||
* @param Payer|null $payer The payer.
|
* @param Payer|null $payer The payer.
|
||||||
* @param string $intent The intent.
|
* @param string $intent The intent.
|
||||||
|
@ -97,7 +97,7 @@ class Order {
|
||||||
string $id,
|
string $id,
|
||||||
array $purchase_units,
|
array $purchase_units,
|
||||||
OrderStatus $order_status,
|
OrderStatus $order_status,
|
||||||
ApplicationContext $application_context = null,
|
ExperienceContext $experience_context = null,
|
||||||
PaymentSource $payment_source = null,
|
PaymentSource $payment_source = null,
|
||||||
Payer $payer = null,
|
Payer $payer = null,
|
||||||
string $intent = 'CAPTURE',
|
string $intent = 'CAPTURE',
|
||||||
|
@ -106,7 +106,7 @@ class Order {
|
||||||
) {
|
) {
|
||||||
|
|
||||||
$this->id = $id;
|
$this->id = $id;
|
||||||
$this->application_context = $application_context;
|
$this->experience_context = $experience_context;
|
||||||
$this->payer = $payer;
|
$this->payer = $payer;
|
||||||
$this->order_status = $order_status;
|
$this->order_status = $order_status;
|
||||||
$this->intent = ( 'CAPTURE' === $intent ) ? 'CAPTURE' : 'AUTHORIZE';
|
$this->intent = ( 'CAPTURE' === $intent ) ? 'CAPTURE' : 'AUTHORIZE';
|
||||||
|
@ -180,13 +180,13 @@ class Order {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the application context.
|
* Returns the experience context.
|
||||||
*
|
*
|
||||||
* @return ApplicationContext|null
|
* @return ExperienceContext|null
|
||||||
*/
|
*/
|
||||||
public function application_context() {
|
public function experience_context() {
|
||||||
|
|
||||||
return $this->application_context;
|
return $this->experience_context;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,8 +225,8 @@ class Order {
|
||||||
if ( $this->update_time() ) {
|
if ( $this->update_time() ) {
|
||||||
$order['update_time'] = $this->update_time()->format( 'Y-m-d\TH:i:sO' );
|
$order['update_time'] = $this->update_time()->format( 'Y-m-d\TH:i:sO' );
|
||||||
}
|
}
|
||||||
if ( $this->application_context() ) {
|
if ( $this->experience_context() ) {
|
||||||
$order['application_context'] = $this->application_context()->to_array();
|
$order['application_context'] = $this->experience_context()->to_array();
|
||||||
}
|
}
|
||||||
|
|
||||||
return $order;
|
return $order;
|
||||||
|
|
|
@ -1,44 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* The ApplicationContext factory.
|
|
||||||
*
|
|
||||||
* @package WooCommerce\PayPalCommerce\ApiClient\Factory
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
|
||||||
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class ApplicationContextFactory
|
|
||||||
*/
|
|
||||||
class ApplicationContextFactory {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns an Application Context based off a PayPal Response.
|
|
||||||
*
|
|
||||||
* @param \stdClass $data The JSON object.
|
|
||||||
*
|
|
||||||
* @return ApplicationContext
|
|
||||||
*/
|
|
||||||
public function from_paypal_response( \stdClass $data ): ApplicationContext {
|
|
||||||
return new ApplicationContext(
|
|
||||||
isset( $data->return_url ) ?
|
|
||||||
$data->return_url : '',
|
|
||||||
isset( $data->cancel_url ) ?
|
|
||||||
$data->cancel_url : '',
|
|
||||||
isset( $data->brand_name ) ?
|
|
||||||
$data->brand_name : '',
|
|
||||||
isset( $data->locale ) ?
|
|
||||||
$data->locale : '',
|
|
||||||
isset( $data->landing_page ) ?
|
|
||||||
$data->landing_page : ApplicationContext::LANDING_PAGE_NO_PREFERENCE,
|
|
||||||
isset( $data->shipping_preference ) ?
|
|
||||||
$data->shipping_preference : ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
|
||||||
isset( $data->user_action ) ?
|
|
||||||
$data->user_action : ApplicationContext::USER_ACTION_CONTINUE
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* The ExperienceContextFactory factory.
|
||||||
|
*
|
||||||
|
* @package WooCommerce\PayPalCommerce\ApiClient\Factory
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
||||||
|
|
||||||
|
use stdClass;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class ExperienceContextFactory
|
||||||
|
*/
|
||||||
|
class ExperienceContextFactory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an Application Context based off a PayPal Response.
|
||||||
|
*
|
||||||
|
* @param stdClass $data The JSON object.
|
||||||
|
*
|
||||||
|
* @return ExperienceContext
|
||||||
|
*/
|
||||||
|
public function from_paypal_response( stdClass $data ): ExperienceContext {
|
||||||
|
return new ExperienceContext(
|
||||||
|
$data->return_url ?? '',
|
||||||
|
$data->cancel_url ?? '',
|
||||||
|
$data->brand_name ?? '',
|
||||||
|
$data->locale ?? '',
|
||||||
|
$data->landing_page ?? ExperienceContext::LANDING_PAGE_NO_PREFERENCE,
|
||||||
|
$data->shipping_preference ?? ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
||||||
|
$data->user_action ?? ExperienceContext::USER_ACTION_CONTINUE
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,7 +14,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\ApplicationContextRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class OrderFactory
|
* Class OrderFactory
|
||||||
|
@ -36,38 +36,38 @@ class OrderFactory {
|
||||||
private $payer_factory;
|
private $payer_factory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The ApplicationContext repository.
|
* The ExperienceContextRepository.
|
||||||
*
|
*
|
||||||
* @var ApplicationContextRepository
|
* @var ExperienceContextRepository
|
||||||
*/
|
*/
|
||||||
private $application_context_repository;
|
private $experience_context_repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The ApplicationContext factory.
|
* The ApplicationContext factory.
|
||||||
*
|
*
|
||||||
* @var ApplicationContextFactory
|
* @var ExperienceContextFactory
|
||||||
*/
|
*/
|
||||||
private $application_context_factory;
|
private $experience_context_factory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OrderFactory constructor.
|
* OrderFactory constructor.
|
||||||
*
|
*
|
||||||
* @param PurchaseUnitFactory $purchase_unit_factory The PurchaseUnit factory.
|
* @param PurchaseUnitFactory $purchase_unit_factory The PurchaseUnit factory.
|
||||||
* @param PayerFactory $payer_factory The Payer factory.
|
* @param PayerFactory $payer_factory The Payer factory.
|
||||||
* @param ApplicationContextRepository $application_context_repository The Application Context repository.
|
* @param ExperienceContextRepository $experience_context_repository The Application Context repository.
|
||||||
* @param ApplicationContextFactory $application_context_factory The Application Context factory.
|
* @param ExperienceContextFactory $experience_context_factory The Application Context factory.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
PurchaseUnitFactory $purchase_unit_factory,
|
PurchaseUnitFactory $purchase_unit_factory,
|
||||||
PayerFactory $payer_factory,
|
PayerFactory $payer_factory,
|
||||||
ApplicationContextRepository $application_context_repository,
|
ExperienceContextRepository $experience_context_repository,
|
||||||
ApplicationContextFactory $application_context_factory
|
ExperienceContextFactory $experience_context_factory
|
||||||
) {
|
) {
|
||||||
|
|
||||||
$this->purchase_unit_factory = $purchase_unit_factory;
|
$this->purchase_unit_factory = $purchase_unit_factory;
|
||||||
$this->payer_factory = $payer_factory;
|
$this->payer_factory = $payer_factory;
|
||||||
$this->application_context_repository = $application_context_repository;
|
$this->experience_context_repository = $experience_context_repository;
|
||||||
$this->application_context_factory = $application_context_factory;
|
$this->experience_context_factory = $experience_context_factory;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -85,7 +85,7 @@ class OrderFactory {
|
||||||
$order->id(),
|
$order->id(),
|
||||||
$purchase_units,
|
$purchase_units,
|
||||||
$order->status(),
|
$order->status(),
|
||||||
$order->application_context(),
|
$order->experience_context(),
|
||||||
$order->payment_source(),
|
$order->payment_source(),
|
||||||
$order->payer(),
|
$order->payer(),
|
||||||
$order->intent(),
|
$order->intent(),
|
||||||
|
@ -141,7 +141,7 @@ class OrderFactory {
|
||||||
$this->payer_factory->from_paypal_response( $order_data->payer )
|
$this->payer_factory->from_paypal_response( $order_data->payer )
|
||||||
: null;
|
: null;
|
||||||
$application_context = ( isset( $order_data->application_context ) ) ?
|
$application_context = ( isset( $order_data->application_context ) ) ?
|
||||||
$this->application_context_factory->from_paypal_response( $order_data->application_context )
|
$this->experience_context_factory->from_paypal_response( $order_data->application_context )
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
$payment_source = null;
|
$payment_source = null;
|
||||||
|
|
|
@ -10,7 +10,7 @@ declare(strict_types=1);
|
||||||
namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
||||||
|
|
||||||
use WC_Cart;
|
use WC_Cart;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,7 +35,7 @@ class ShippingPreferenceFactory {
|
||||||
): string {
|
): string {
|
||||||
$contains_physical_goods = $purchase_unit->contains_physical_goods();
|
$contains_physical_goods = $purchase_unit->contains_physical_goods();
|
||||||
if ( ! $contains_physical_goods ) {
|
if ( ! $contains_physical_goods ) {
|
||||||
return ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING;
|
return ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING;
|
||||||
}
|
}
|
||||||
|
|
||||||
$has_shipping = null !== $purchase_unit->shipping();
|
$has_shipping = null !== $purchase_unit->shipping();
|
||||||
|
@ -45,20 +45,20 @@ class ShippingPreferenceFactory {
|
||||||
if ( $shipping_address_is_fixed ) {
|
if ( $shipping_address_is_fixed ) {
|
||||||
// Checkout + no address given? Probably something weird happened, like no form validation?
|
// Checkout + no address given? Probably something weird happened, like no form validation?
|
||||||
if ( ! $has_shipping ) {
|
if ( ! $has_shipping ) {
|
||||||
return ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING;
|
return ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ApplicationContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS;
|
return ExperienceContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( 'card' === $funding_source ) {
|
if ( 'card' === $funding_source ) {
|
||||||
if ( ! $has_shipping ) {
|
if ( ! $has_shipping ) {
|
||||||
return ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING;
|
return ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING;
|
||||||
}
|
}
|
||||||
// Looks like GET_FROM_FILE does not work for the vaulted card button.
|
// Looks like GET_FROM_FILE does not work for the vaulted card button.
|
||||||
return ApplicationContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS;
|
return ExperienceContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE;
|
return ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,14 +9,14 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace WooCommerce\PayPalCommerce\ApiClient\Repository;
|
namespace WooCommerce\PayPalCommerce\ApiClient\Repository;
|
||||||
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
|
use WooCommerce\PayPalCommerce\WcGateway\Endpoint\ReturnUrlEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ApplicationContextRepository
|
* Class ExperienceContextRepository
|
||||||
*/
|
*/
|
||||||
class ApplicationContextRepository {
|
class ExperienceContextRepository {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Settings.
|
* The Settings.
|
||||||
|
@ -26,7 +26,7 @@ class ApplicationContextRepository {
|
||||||
private $settings;
|
private $settings;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ApplicationContextRepository constructor.
|
* ExperienceContextRepository constructor.
|
||||||
*
|
*
|
||||||
* @param ContainerInterface $settings The settings.
|
* @param ContainerInterface $settings The settings.
|
||||||
*/
|
*/
|
||||||
|
@ -35,25 +35,25 @@ class ApplicationContextRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current application context.
|
* Returns the current experience context.
|
||||||
*
|
*
|
||||||
* @param string $shipping_preferences The shipping preferences.
|
* @param string $shipping_preferences The shipping preferences.
|
||||||
* @param string $user_action The user action.
|
* @param string $user_action The user action.
|
||||||
*
|
*
|
||||||
* @return ApplicationContext
|
* @return ExperienceContext
|
||||||
*/
|
*/
|
||||||
public function current_context(
|
public function current_context(
|
||||||
string $shipping_preferences = ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
string $shipping_preferences = ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
||||||
string $user_action = ApplicationContext::USER_ACTION_CONTINUE
|
string $user_action = ExperienceContext::USER_ACTION_CONTINUE
|
||||||
): ApplicationContext {
|
): ExperienceContext {
|
||||||
|
|
||||||
$brand_name = $this->settings->has( 'brand_name' ) ? $this->settings->get( 'brand_name' ) : '';
|
$brand_name = $this->settings->has( 'brand_name' ) ? $this->settings->get( 'brand_name' ) : '';
|
||||||
$locale = $this->valid_bcp47_code();
|
$locale = $this->valid_bcp47_code();
|
||||||
$landingpage = $this->settings->has( 'landing_page' ) ?
|
$landingpage = $this->settings->has( 'landing_page' ) ?
|
||||||
$this->settings->get( 'landing_page' ) : ApplicationContext::LANDING_PAGE_NO_PREFERENCE;
|
$this->settings->get( 'landing_page' ) : ExperienceContext::LANDING_PAGE_NO_PREFERENCE;
|
||||||
$payment_preference = $this->settings->has( 'payee_preferred' ) && $this->settings->get( 'payee_preferred' ) ?
|
$payment_preference = $this->settings->has( 'payee_preferred' ) && $this->settings->get( 'payee_preferred' ) ?
|
||||||
ApplicationContext::PAYMENT_METHOD_IMMEDIATE_PAYMENT_REQUIRED : ApplicationContext::PAYMENT_METHOD_UNRESTRICTED;
|
ExperienceContext::PAYMENT_METHOD_IMMEDIATE_PAYMENT_REQUIRED : ExperienceContext::PAYMENT_METHOD_UNRESTRICTED;
|
||||||
$context = new ApplicationContext(
|
$context = new ExperienceContext(
|
||||||
network_home_url( \WC_AJAX::get_endpoint( ReturnUrlEndpoint::ENDPOINT ) ),
|
network_home_url( \WC_AJAX::get_endpoint( ReturnUrlEndpoint::ENDPOINT ) ),
|
||||||
(string) wc_get_checkout_url(),
|
(string) wc_get_checkout_url(),
|
||||||
(string) $brand_name,
|
(string) $brand_name,
|
|
@ -208,6 +208,7 @@ return array(
|
||||||
$container->get( 'button.pay-now-contexts' ),
|
$container->get( 'button.pay-now-contexts' ),
|
||||||
$container->get( 'button.handle-shipping-in-paypal' ),
|
$container->get( 'button.handle-shipping-in-paypal' ),
|
||||||
$container->get( 'wcgateway.funding-sources-without-redirect' ),
|
$container->get( 'wcgateway.funding-sources-without-redirect' ),
|
||||||
|
$container->get( 'api.repository.experience-context' ),
|
||||||
$logger
|
$logger
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -15,16 +15,18 @@ use stdClass;
|
||||||
use Throwable;
|
use Throwable;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Amount;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Amount;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Money;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Money;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\Button\Exception\ValidationException;
|
use WooCommerce\PayPalCommerce\Button\Exception\ValidationException;
|
||||||
use WooCommerce\PayPalCommerce\Button\Validation\CheckoutFormValidator;
|
use WooCommerce\PayPalCommerce\Button\Validation\CheckoutFormValidator;
|
||||||
use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
|
use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
|
||||||
|
@ -157,6 +159,13 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
*/
|
*/
|
||||||
private $funding_sources_without_redirect;
|
private $funding_sources_without_redirect;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Experience context repository.
|
||||||
|
*
|
||||||
|
* @var ExperienceContextRepository
|
||||||
|
*/
|
||||||
|
private $experience_context_repository;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The logger.
|
* The logger.
|
||||||
*
|
*
|
||||||
|
@ -164,13 +173,6 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
*/
|
*/
|
||||||
protected $logger;
|
protected $logger;
|
||||||
|
|
||||||
/**
|
|
||||||
* The form data, or empty if not available.
|
|
||||||
*
|
|
||||||
* @var array
|
|
||||||
*/
|
|
||||||
private $form = array();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CreateOrderEndpoint constructor.
|
* CreateOrderEndpoint constructor.
|
||||||
*
|
*
|
||||||
|
@ -188,6 +190,7 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
* @param string[] $pay_now_contexts The contexts that should have the Pay Now button.
|
* @param string[] $pay_now_contexts The contexts that should have the Pay Now button.
|
||||||
* @param bool $handle_shipping_in_paypal If true, the shipping methods are sent to PayPal allowing the customer to select it inside the popup.
|
* @param bool $handle_shipping_in_paypal If true, the shipping methods are sent to PayPal allowing the customer to select it inside the popup.
|
||||||
* @param string[] $funding_sources_without_redirect The sources that do not cause issues about redirecting (on mobile, ...) and sometimes not returning back.
|
* @param string[] $funding_sources_without_redirect The sources that do not cause issues about redirecting (on mobile, ...) and sometimes not returning back.
|
||||||
|
* @param ExperienceContextRepository $experience_context_repository Experience context repository.
|
||||||
* @param LoggerInterface $logger The logger.
|
* @param LoggerInterface $logger The logger.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
|
@ -205,6 +208,7 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
array $pay_now_contexts,
|
array $pay_now_contexts,
|
||||||
bool $handle_shipping_in_paypal,
|
bool $handle_shipping_in_paypal,
|
||||||
array $funding_sources_without_redirect,
|
array $funding_sources_without_redirect,
|
||||||
|
ExperienceContextRepository $experience_context_repository,
|
||||||
LoggerInterface $logger
|
LoggerInterface $logger
|
||||||
) {
|
) {
|
||||||
|
|
||||||
|
@ -222,6 +226,7 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
$this->pay_now_contexts = $pay_now_contexts;
|
$this->pay_now_contexts = $pay_now_contexts;
|
||||||
$this->handle_shipping_in_paypal = $handle_shipping_in_paypal;
|
$this->handle_shipping_in_paypal = $handle_shipping_in_paypal;
|
||||||
$this->funding_sources_without_redirect = $funding_sources_without_redirect;
|
$this->funding_sources_without_redirect = $funding_sources_without_redirect;
|
||||||
|
$this->experience_context_repository = $experience_context_repository;
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,17 +443,14 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
$funding_source
|
$funding_source
|
||||||
);
|
);
|
||||||
|
|
||||||
$action = in_array( $this->parsed_request_data['context'], $this->pay_now_contexts, true ) ?
|
|
||||||
ApplicationContext::USER_ACTION_PAY_NOW : ApplicationContext::USER_ACTION_CONTINUE;
|
|
||||||
|
|
||||||
if ( 'card' === $funding_source ) {
|
if ( 'card' === $funding_source ) {
|
||||||
if ( CardBillingMode::MINIMAL_INPUT === $this->card_billing_data_mode ) {
|
if ( CardBillingMode::MINIMAL_INPUT === $this->card_billing_data_mode ) {
|
||||||
if ( ApplicationContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS === $shipping_preference ) {
|
if ( ExperienceContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS === $shipping_preference ) {
|
||||||
if ( $payer ) {
|
if ( $payer ) {
|
||||||
$payer->set_address( null );
|
$payer->set_address( null );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING === $shipping_preference ) {
|
if ( ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING === $shipping_preference ) {
|
||||||
if ( $payer ) {
|
if ( $payer ) {
|
||||||
$payer->set_name( null );
|
$payer->set_name( null );
|
||||||
}
|
}
|
||||||
|
@ -460,13 +462,23 @@ class CreateOrderEndpoint implements EndpointInterface {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$payment_source = null;
|
||||||
|
$experience_context = $this->experience_context_repository->current_context( $shipping_preference );
|
||||||
|
if ( $funding_source ) {
|
||||||
|
$payment_source = new PaymentSource(
|
||||||
|
$funding_source,
|
||||||
|
(object) array(
|
||||||
|
'experience_context' => (object) $experience_context->to_array(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
return $this->api_endpoint->create(
|
return $this->api_endpoint->create(
|
||||||
array( $this->purchase_unit ),
|
array( $this->purchase_unit ),
|
||||||
$shipping_preference,
|
$shipping_preference,
|
||||||
$payer,
|
$payer,
|
||||||
null,
|
$payment_source,
|
||||||
$action,
|
|
||||||
$payment_method,
|
$payment_method,
|
||||||
$data
|
$data
|
||||||
);
|
);
|
||||||
|
|
|
@ -9,8 +9,8 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace WooCommerce\PayPalCommerce\Vaulting;
|
namespace WooCommerce\PayPalCommerce\Vaulting;
|
||||||
|
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
||||||
use WC_Customer;
|
|
||||||
use WC_Order;
|
use WC_Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
|
@ -144,14 +144,18 @@ class VaultedCreditCardHandler {
|
||||||
WC_Order $wc_order
|
WC_Order $wc_order
|
||||||
): WC_Order {
|
): WC_Order {
|
||||||
$tokens = $this->payment_token_repository->all_for_user_id( $wc_order->get_customer_id() );
|
$tokens = $this->payment_token_repository->all_for_user_id( $wc_order->get_customer_id() );
|
||||||
$selected_token = null;
|
$payment_source = null;
|
||||||
foreach ( $tokens as $token ) {
|
foreach ( $tokens as $token ) {
|
||||||
if ( $token->id() === $saved_credit_card ) {
|
if ( $token->id() === $saved_credit_card ) {
|
||||||
$selected_token = $token;
|
$payment_source = new PaymentSource(
|
||||||
|
'token',
|
||||||
|
(object) $token->to_array()
|
||||||
|
);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( ! $selected_token ) {
|
if ( ! $payment_source ) {
|
||||||
throw new RuntimeException( 'Saved card token not found.' );
|
throw new RuntimeException( 'Saved card token not found.' );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +171,7 @@ class VaultedCreditCardHandler {
|
||||||
array( $purchase_unit ),
|
array( $purchase_unit ),
|
||||||
$shipping_preference,
|
$shipping_preference,
|
||||||
$payer,
|
$payer,
|
||||||
$selected_token
|
$payment_source
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->add_paypal_meta( $wc_order, $order, $this->environment );
|
$this->add_paypal_meta( $wc_order, $order, $this->environment );
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace WooCommerce\PayPalCommerce\WcGateway;
|
||||||
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\BillingAgreementsEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\BillingAgreementsEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PayUponInvoiceOrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\PayUponInvoiceOrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
|
||||||
|
@ -362,7 +362,8 @@ return array(
|
||||||
$order_helper,
|
$order_helper,
|
||||||
$container->get( 'api.factory.purchase-unit' ),
|
$container->get( 'api.factory.purchase-unit' ),
|
||||||
$container->get( 'api.factory.payer' ),
|
$container->get( 'api.factory.payer' ),
|
||||||
$container->get( 'api.factory.shipping-preference' )
|
$container->get( 'api.factory.shipping-preference' ),
|
||||||
|
$container->get( 'api.repository.experience-context' )
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
'wcgateway.processor.refunds' => static function ( ContainerInterface $container ): RefundProcessor {
|
'wcgateway.processor.refunds' => static function ( ContainerInterface $container ): RefundProcessor {
|
||||||
|
@ -642,15 +643,15 @@ return array(
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
'class' => array(),
|
'class' => array(),
|
||||||
'input_class' => array( 'wc-enhanced-select' ),
|
'input_class' => array( 'wc-enhanced-select' ),
|
||||||
'default' => ApplicationContext::LANDING_PAGE_LOGIN,
|
'default' => ExperienceContext::LANDING_PAGE_LOGIN,
|
||||||
'desc_tip' => true,
|
'desc_tip' => true,
|
||||||
'description' => __(
|
'description' => __(
|
||||||
'Type of PayPal page to display.',
|
'Type of PayPal page to display.',
|
||||||
'woocommerce-paypal-payments'
|
'woocommerce-paypal-payments'
|
||||||
),
|
),
|
||||||
'options' => array(
|
'options' => array(
|
||||||
ApplicationContext::LANDING_PAGE_LOGIN => __( 'Login (PayPal account login)', 'woocommerce-paypal-payments' ),
|
ExperienceContext::LANDING_PAGE_LOGIN => __( 'Login (PayPal account login)', 'woocommerce-paypal-payments' ),
|
||||||
ApplicationContext::LANDING_PAGE_BILLING => __( 'Billing (Non-PayPal account)', 'woocommerce-paypal-payments' ),
|
ExperienceContext::LANDING_PAGE_BILLING => __( 'Billing (Non-PayPal account)', 'woocommerce-paypal-payments' ),
|
||||||
),
|
),
|
||||||
'screens' => array(
|
'screens' => array(
|
||||||
State::STATE_START,
|
State::STATE_START,
|
||||||
|
|
|
@ -13,7 +13,7 @@ use Exception;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use WC_Order;
|
use WC_Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
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\Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
|
@ -23,9 +23,11 @@ use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
|
use WooCommerce\PayPalCommerce\Button\Helper\ThreeDSecure;
|
||||||
use WooCommerce\PayPalCommerce\Onboarding\Environment;
|
use WooCommerce\PayPalCommerce\Onboarding\Environment;
|
||||||
use WooCommerce\PayPalCommerce\Session\SessionHandler;
|
use WooCommerce\PayPalCommerce\Session\SessionHandler;
|
||||||
|
use WooCommerce\PayPalCommerce\WcGateway\Gateway\CreditCardGateway;
|
||||||
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
||||||
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
|
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Exception\PayPalOrderMissingException;
|
use WooCommerce\PayPalCommerce\WcGateway\Exception\PayPalOrderMissingException;
|
||||||
|
@ -144,6 +146,14 @@ class OrderProcessor {
|
||||||
*/
|
*/
|
||||||
private $restore_order_data = array();
|
private $restore_order_data = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Experience context repository.
|
||||||
|
*
|
||||||
|
* @var ExperienceContextRepository
|
||||||
|
*/
|
||||||
|
private $experience_context_repository;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OrderProcessor constructor.
|
* OrderProcessor constructor.
|
||||||
*
|
*
|
||||||
|
@ -160,6 +170,7 @@ class OrderProcessor {
|
||||||
* @param PurchaseUnitFactory $purchase_unit_factory The PurchaseUnit factory.
|
* @param PurchaseUnitFactory $purchase_unit_factory The PurchaseUnit factory.
|
||||||
* @param PayerFactory $payer_factory The payer factory.
|
* @param PayerFactory $payer_factory The payer factory.
|
||||||
* @param ShippingPreferenceFactory $shipping_preference_factory The shipping_preference factory.
|
* @param ShippingPreferenceFactory $shipping_preference_factory The shipping_preference factory.
|
||||||
|
* @param ExperienceContextRepository $experience_context_repository Experience context repository.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(
|
||||||
SessionHandler $session_handler,
|
SessionHandler $session_handler,
|
||||||
|
@ -174,7 +185,8 @@ class OrderProcessor {
|
||||||
OrderHelper $order_helper,
|
OrderHelper $order_helper,
|
||||||
PurchaseUnitFactory $purchase_unit_factory,
|
PurchaseUnitFactory $purchase_unit_factory,
|
||||||
PayerFactory $payer_factory,
|
PayerFactory $payer_factory,
|
||||||
ShippingPreferenceFactory $shipping_preference_factory
|
ShippingPreferenceFactory $shipping_preference_factory,
|
||||||
|
ExperienceContextRepository $experience_context_repository
|
||||||
) {
|
) {
|
||||||
|
|
||||||
$this->session_handler = $session_handler;
|
$this->session_handler = $session_handler;
|
||||||
|
@ -190,6 +202,7 @@ class OrderProcessor {
|
||||||
$this->purchase_unit_factory = $purchase_unit_factory;
|
$this->purchase_unit_factory = $purchase_unit_factory;
|
||||||
$this->payer_factory = $payer_factory;
|
$this->payer_factory = $payer_factory;
|
||||||
$this->shipping_preference_factory = $shipping_preference_factory;
|
$this->shipping_preference_factory = $shipping_preference_factory;
|
||||||
|
$this->experience_context_repository = $experience_context_repository;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -280,15 +293,25 @@ class OrderProcessor {
|
||||||
public function create_order( WC_Order $wc_order ): Order {
|
public function create_order( WC_Order $wc_order ): Order {
|
||||||
$pu = $this->purchase_unit_factory->from_wc_order( $wc_order );
|
$pu = $this->purchase_unit_factory->from_wc_order( $wc_order );
|
||||||
$shipping_preference = $this->shipping_preference_factory->from_state( $pu, 'checkout' );
|
$shipping_preference = $this->shipping_preference_factory->from_state( $pu, 'checkout' );
|
||||||
$order = $this->order_endpoint->create(
|
|
||||||
|
$payment_source = null;
|
||||||
|
$payment_source_name = $this->payment_source_name( $wc_order->get_payment_method() );
|
||||||
|
$experience_context = $this->experience_context_repository->current_context( $shipping_preference, ExperienceContext::USER_ACTION_PAY_NOW );
|
||||||
|
if ( $payment_source_name ) {
|
||||||
|
$payment_source = new PaymentSource(
|
||||||
|
$payment_source_name,
|
||||||
|
(object) array(
|
||||||
|
'experience_context' => (object) $experience_context->to_array(),
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->order_endpoint->create(
|
||||||
array( $pu ),
|
array( $pu ),
|
||||||
$shipping_preference,
|
$shipping_preference,
|
||||||
$this->payer_factory->from_wc_order( $wc_order ),
|
$this->payer_factory->from_wc_order( $wc_order ),
|
||||||
null,
|
$payment_source
|
||||||
ApplicationContext::USER_ACTION_PAY_NOW
|
|
||||||
);
|
);
|
||||||
|
|
||||||
return $order;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -417,4 +440,22 @@ class OrderProcessor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the payment source name from the give payment method.
|
||||||
|
*
|
||||||
|
* @param string $payment_method WC Order payment method.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
private function payment_source_name( string $payment_method ): string {
|
||||||
|
if ( $payment_method === PayPalGateway::ID ) {
|
||||||
|
return 'paypal';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $payment_method === CreditCardGateway::ID ) {
|
||||||
|
return 'card';
|
||||||
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,6 @@ use WC_Order;
|
||||||
use WC_Subscription;
|
use WC_Subscription;
|
||||||
use WC_Payment_Tokens;
|
use WC_Payment_Tokens;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
|
||||||
|
@ -282,10 +281,6 @@ class RenewalHandler {
|
||||||
array( $purchase_unit ),
|
array( $purchase_unit ),
|
||||||
$shipping_preference,
|
$shipping_preference,
|
||||||
$payer,
|
$payer,
|
||||||
null,
|
|
||||||
ApplicationContext::USER_ACTION_CONTINUE,
|
|
||||||
'',
|
|
||||||
array(),
|
|
||||||
$payment_source
|
$payment_source
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -325,10 +320,6 @@ class RenewalHandler {
|
||||||
array( $purchase_unit ),
|
array( $purchase_unit ),
|
||||||
$shipping_preference,
|
$shipping_preference,
|
||||||
$payer,
|
$payer,
|
||||||
null,
|
|
||||||
ApplicationContext::USER_ACTION_CONTINUE,
|
|
||||||
'',
|
|
||||||
array(),
|
|
||||||
$payment_source
|
$payment_source
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -345,11 +336,16 @@ class RenewalHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $wc_order->get_payment_method() === PayPalGateway::ID ) {
|
if ( $wc_order->get_payment_method() === PayPalGateway::ID ) {
|
||||||
|
$payment_source = new PaymentSource(
|
||||||
|
'token',
|
||||||
|
(object) $token->to_array()
|
||||||
|
);
|
||||||
|
|
||||||
$order = $this->order_endpoint->create(
|
$order = $this->order_endpoint->create(
|
||||||
array( $purchase_unit ),
|
array( $purchase_unit ),
|
||||||
$shipping_preference,
|
$shipping_preference,
|
||||||
$payer,
|
$payer,
|
||||||
$token
|
$payment_source
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->handle_paypal_order( $wc_order, $order );
|
$this->handle_paypal_order( $wc_order, $order );
|
||||||
|
|
|
@ -7,7 +7,7 @@ use Hamcrest\Matchers;
|
||||||
use Requests_Utility_CaseInsensitiveDictionary;
|
use Requests_Utility_CaseInsensitiveDictionary;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
|
use WooCommerce\PayPalCommerce\ApiClient\Authentication\Bearer;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Address;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Address;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Capture;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Capture;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
|
@ -23,7 +23,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PatchCollectionFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PatchCollectionFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\ErrorResponse;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\ErrorResponse;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\ApplicationContextRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
||||||
|
@ -66,7 +66,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$headers = Mockery::mock(Requests_Utility_CaseInsensitiveDictionary::class);
|
$headers = Mockery::mock(Requests_Utility_CaseInsensitiveDictionary::class);
|
||||||
$headers->shouldReceive('getAll');
|
$headers->shouldReceive('getAll');
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
@ -80,7 +79,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -127,7 +125,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldReceive('warning');
|
$logger->shouldReceive('warning');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$headers = Mockery::mock(Requests_Utility_CaseInsensitiveDictionary::class);
|
$headers = Mockery::mock(Requests_Utility_CaseInsensitiveDictionary::class);
|
||||||
$headers->shouldReceive('getAll');
|
$headers->shouldReceive('getAll');
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
@ -141,7 +138,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -181,7 +177,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldReceive('log');
|
$logger->shouldReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -193,7 +188,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -247,7 +241,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -259,7 +252,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -316,7 +308,6 @@ class OrderEndpointTest extends TestCase
|
||||||
|
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -328,7 +319,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -361,7 +351,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldReceive('log');
|
$logger->shouldReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -373,7 +362,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -413,7 +401,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldReceive('log');
|
$logger->shouldReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -425,7 +412,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -467,7 +453,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -481,7 +466,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -547,7 +531,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -561,7 +544,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -649,7 +631,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldReceive('warning');
|
$logger->shouldReceive('warning');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -661,7 +642,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -745,7 +725,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger->shouldReceive('warning');
|
$logger->shouldReceive('warning');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
|
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -759,7 +738,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -820,7 +798,6 @@ class OrderEndpointTest extends TestCase
|
||||||
|
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
|
|
||||||
$fraudnet = Mockery::mock(FraudNet::class);
|
$fraudnet = Mockery::mock(FraudNet::class);
|
||||||
|
@ -832,7 +809,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -875,15 +851,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContext = Mockery::mock(ApplicationContext::class);
|
|
||||||
$applicationContext
|
|
||||||
->expects('to_array')
|
|
||||||
->andReturn(['applicationContext']);
|
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$applicationContextRepository
|
|
||||||
->expects('current_context')
|
|
||||||
->with(ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING, ApplicationContext::USER_ACTION_CONTINUE)
|
|
||||||
->andReturn($applicationContext);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
||||||
|
|
||||||
|
@ -896,7 +863,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -941,7 +907,7 @@ class OrderEndpointTest extends TestCase
|
||||||
->expects('email_address')
|
->expects('email_address')
|
||||||
->andReturn('');
|
->andReturn('');
|
||||||
|
|
||||||
$result = $testee->create([$purchaseUnit], ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING, $payer);
|
$result = $testee->create([$purchaseUnit], ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING, $payer);
|
||||||
$this->assertEquals($expectedOrder, $result);
|
$this->assertEquals($expectedOrder, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -978,15 +944,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldNotReceive('log');
|
$logger->shouldNotReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContext = Mockery::mock(ApplicationContext::class);
|
|
||||||
$applicationContext
|
|
||||||
->expects('to_array')
|
|
||||||
->andReturn(['applicationContext']);
|
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$applicationContextRepository
|
|
||||||
->expects('current_context')
|
|
||||||
->with(ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE, ApplicationContext::USER_ACTION_CONTINUE)
|
|
||||||
->andReturn($applicationContext);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
||||||
|
|
||||||
|
@ -999,7 +956,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -1030,7 +986,7 @@ class OrderEndpointTest extends TestCase
|
||||||
$payer = Mockery::mock(Payer::class);
|
$payer = Mockery::mock(Payer::class);
|
||||||
$payer->expects('email_address')->andReturn('email@email.com');
|
$payer->expects('email_address')->andReturn('email@email.com');
|
||||||
$payer->expects('to_array')->andReturn(['payer']);
|
$payer->expects('to_array')->andReturn(['payer']);
|
||||||
$result = $testee->create([$purchaseUnit], ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE, $payer);
|
$result = $testee->create([$purchaseUnit], ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE, $payer);
|
||||||
$this->assertEquals($expectedOrder, $result);
|
$this->assertEquals($expectedOrder, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1058,15 +1014,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger = Mockery::mock(LoggerInterface::class);
|
$logger = Mockery::mock(LoggerInterface::class);
|
||||||
$logger->shouldReceive('log');
|
$logger->shouldReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$applicationContext = Mockery::mock(ApplicationContext::class);
|
|
||||||
$applicationContext
|
|
||||||
->expects('to_array')
|
|
||||||
->andReturn(['applicationContext']);
|
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$applicationContextRepository
|
|
||||||
->expects('current_context')
|
|
||||||
->with(ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING, ApplicationContext::USER_ACTION_CONTINUE)
|
|
||||||
->andReturn($applicationContext);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
||||||
|
|
||||||
|
@ -1079,7 +1026,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -1122,7 +1068,7 @@ class OrderEndpointTest extends TestCase
|
||||||
$payer = Mockery::mock(Payer::class);
|
$payer = Mockery::mock(Payer::class);
|
||||||
$payer->expects('email_address')->andReturn('email@email.com');
|
$payer->expects('email_address')->andReturn('email@email.com');
|
||||||
$payer->expects('to_array')->andReturn(['payer']);
|
$payer->expects('to_array')->andReturn(['payer']);
|
||||||
$testee->create([$purchaseUnit], ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING, $payer);
|
$testee->create([$purchaseUnit], ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING, $payer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCreateForPurchaseUnitsIsNot201()
|
public function testCreateForPurchaseUnitsIsNot201()
|
||||||
|
@ -1150,15 +1096,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$logger->shouldReceive('log');
|
$logger->shouldReceive('log');
|
||||||
$logger->shouldReceive('debug');
|
$logger->shouldReceive('debug');
|
||||||
$logger->shouldReceive('warning');
|
$logger->shouldReceive('warning');
|
||||||
$applicationContext = Mockery::mock(ApplicationContext::class);
|
|
||||||
$applicationContext
|
|
||||||
->expects('to_array')
|
|
||||||
->andReturn(['applicationContext']);
|
|
||||||
$applicationContextRepository = Mockery::mock(ApplicationContextRepository::class);
|
|
||||||
$applicationContextRepository
|
|
||||||
->expects('current_context')
|
|
||||||
->with(ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE, ApplicationContext::USER_ACTION_CONTINUE)
|
|
||||||
->andReturn($applicationContext);
|
|
||||||
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
$subscription_helper = Mockery::mock(SubscriptionHelper::class);
|
||||||
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
$subscription_helper->shouldReceive('cart_contains_subscription')->andReturn(true);
|
||||||
|
|
||||||
|
@ -1171,7 +1108,6 @@ class OrderEndpointTest extends TestCase
|
||||||
$patchCollectionFactory,
|
$patchCollectionFactory,
|
||||||
$intent,
|
$intent,
|
||||||
$logger,
|
$logger,
|
||||||
$applicationContextRepository,
|
|
||||||
$subscription_helper,
|
$subscription_helper,
|
||||||
false,
|
false,
|
||||||
$fraudnet
|
$fraudnet
|
||||||
|
@ -1214,7 +1150,7 @@ class OrderEndpointTest extends TestCase
|
||||||
$payer = Mockery::mock(Payer::class);
|
$payer = Mockery::mock(Payer::class);
|
||||||
$payer->expects('email_address')->andReturn('email@email.com');
|
$payer->expects('email_address')->andReturn('email@email.com');
|
||||||
$payer->expects('to_array')->andReturn(['payer']);
|
$payer->expects('to_array')->andReturn(['payer']);
|
||||||
$testee->create([$purchaseUnit], ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE, $payer);
|
$testee->create([$purchaseUnit], ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE, $payer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace WooCommerce\PayPalCommerce\ApiClient\Endpoint;
|
namespace WooCommerce\PayPalCommerce\ApiClient\Endpoint;
|
||||||
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
||||||
|
@ -29,7 +29,7 @@ class OrderTest extends TestCase
|
||||||
$payer
|
$payer
|
||||||
->expects('to_array')->andReturn(['payer']);
|
->expects('to_array')->andReturn(['payer']);
|
||||||
$intent = 'AUTHORIZE';
|
$intent = 'AUTHORIZE';
|
||||||
$applicationContext = Mockery::mock(ApplicationContext::class);
|
$applicationContext = Mockery::mock(ExperienceContext::class);
|
||||||
$applicationContext
|
$applicationContext
|
||||||
->expects('to_array')
|
->expects('to_array')
|
||||||
->andReturn(['applicationContext']);
|
->andReturn(['applicationContext']);
|
||||||
|
|
|
@ -6,10 +6,9 @@ namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\ApplicationContextRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\TestCase;
|
use WooCommerce\PayPalCommerce\TestCase;
|
||||||
use Mockery;
|
use Mockery;
|
||||||
|
|
||||||
|
@ -29,24 +28,21 @@ class OrderFactoryTest extends TestCase
|
||||||
$order->expects('intent')->andReturn('intent');
|
$order->expects('intent')->andReturn('intent');
|
||||||
$order->expects('create_time')->andReturn($createTime);
|
$order->expects('create_time')->andReturn($createTime);
|
||||||
$order->expects('update_time')->andReturn($updateTime);
|
$order->expects('update_time')->andReturn($updateTime);
|
||||||
$order->expects('application_context')->andReturnNull();
|
$order->expects('experience_context')->andReturnNull();
|
||||||
$order->expects('payment_source')->andReturnNull();
|
$order->expects('payment_source')->andReturnNull();
|
||||||
$wcOrder = Mockery::mock(\WC_Order::class);
|
$wcOrder = Mockery::mock(\WC_Order::class);
|
||||||
$purchaseUnitFactory = Mockery::mock(PurchaseUnitFactory::class);
|
$purchaseUnitFactory = Mockery::mock(PurchaseUnitFactory::class);
|
||||||
$purchaseUnit = Mockery::mock(PurchaseUnit::class);
|
$purchaseUnit = Mockery::mock(PurchaseUnit::class);
|
||||||
$purchaseUnitFactory->expects('from_wc_order')->with($wcOrder)->andReturn($purchaseUnit);
|
$purchaseUnitFactory->expects('from_wc_order')->with($wcOrder)->andReturn($purchaseUnit);
|
||||||
$payerFactory = Mockery::mock(PayerFactory::class);
|
$payerFactory = Mockery::mock(PayerFactory::class);
|
||||||
$applicationRepository = Mockery::mock(ApplicationContextRepository::class);
|
$applicationRepository = Mockery::mock(ExperienceContextRepository::class);
|
||||||
$applicationFactory = Mockery::mock(ApplicationContextFactory::class);
|
$applicationFactory = Mockery::mock(ExperienceContextFactory::class);
|
||||||
$paymentSourceFactory = Mockery::mock(PaymentSourceFactory::class);
|
|
||||||
|
|
||||||
|
|
||||||
$testee = new OrderFactory(
|
$testee = new OrderFactory(
|
||||||
$purchaseUnitFactory,
|
$purchaseUnitFactory,
|
||||||
$payerFactory,
|
$payerFactory,
|
||||||
$applicationRepository,
|
$applicationRepository,
|
||||||
$applicationFactory,
|
$applicationFactory
|
||||||
$paymentSourceFactory
|
|
||||||
);
|
);
|
||||||
$result = $testee->from_wc_order($wcOrder, $order);
|
$result = $testee->from_wc_order($wcOrder, $order);
|
||||||
$resultPurchaseUnit = current($result->purchase_units());
|
$resultPurchaseUnit = current($result->purchase_units());
|
||||||
|
@ -72,8 +68,8 @@ class OrderFactoryTest extends TestCase
|
||||||
->expects('from_paypal_response')
|
->expects('from_paypal_response')
|
||||||
->andReturn(Mockery::mock(Payer::class));
|
->andReturn(Mockery::mock(Payer::class));
|
||||||
}
|
}
|
||||||
$applicationRepository = Mockery::mock(ApplicationContextRepository::class);
|
$applicationRepository = Mockery::mock(ExperienceContextRepository::class);
|
||||||
$applicationFactory = Mockery::mock(ApplicationContextFactory::class);
|
$applicationFactory = Mockery::mock(ExperienceContextFactory::class);
|
||||||
$paymentSourceFactory = Mockery::mock(PaymentSourceFactory::class);
|
$paymentSourceFactory = Mockery::mock(PaymentSourceFactory::class);
|
||||||
|
|
||||||
$testee = new OrderFactory(
|
$testee = new OrderFactory(
|
||||||
|
@ -161,8 +157,8 @@ class OrderFactoryTest extends TestCase
|
||||||
{
|
{
|
||||||
$purchaseUnitFactory = Mockery::mock(PurchaseUnitFactory::class);
|
$purchaseUnitFactory = Mockery::mock(PurchaseUnitFactory::class);
|
||||||
$payerFactory = Mockery::mock(PayerFactory::class);
|
$payerFactory = Mockery::mock(PayerFactory::class);
|
||||||
$applicationRepository = Mockery::mock(ApplicationContextRepository::class);
|
$applicationRepository = Mockery::mock(ExperienceContextRepository::class);
|
||||||
$applicationFactory = Mockery::mock(ApplicationContextFactory::class);
|
$applicationFactory = Mockery::mock(ExperienceContextFactory::class);
|
||||||
$paymentSourceFactory = Mockery::mock(PaymentSourceFactory::class);
|
$paymentSourceFactory = Mockery::mock(PaymentSourceFactory::class);
|
||||||
|
|
||||||
$testee = new OrderFactory(
|
$testee = new OrderFactory(
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace WooCommerce\PayPalCommerce\ApiClient\Factory;
|
||||||
|
|
||||||
use Mockery;
|
use Mockery;
|
||||||
use WC_Cart;
|
use WC_Cart;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Shipping;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Shipping;
|
||||||
use WooCommerce\PayPalCommerce\TestCase;
|
use WooCommerce\PayPalCommerce\TestCase;
|
||||||
|
@ -43,63 +43,63 @@ class ShippingPreferenceFactoryTest extends TestCase
|
||||||
'checkout',
|
'checkout',
|
||||||
$this->createCart(true),
|
$this->createCart(true),
|
||||||
'',
|
'',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS,
|
ExperienceContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(false, Mockery::mock(Shipping::class)),
|
$this->createPurchaseUnit(false, Mockery::mock(Shipping::class)),
|
||||||
'checkout',
|
'checkout',
|
||||||
$this->createCart(false),
|
$this->createCart(false),
|
||||||
'',
|
'',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, null),
|
$this->createPurchaseUnit(true, null),
|
||||||
'checkout',
|
'checkout',
|
||||||
$this->createCart(true),
|
$this->createCart(true),
|
||||||
'',
|
'',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, Mockery::mock(Shipping::class)),
|
$this->createPurchaseUnit(true, Mockery::mock(Shipping::class)),
|
||||||
'checkout',
|
'checkout',
|
||||||
$this->createCart(true),
|
$this->createCart(true),
|
||||||
'card',
|
'card',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS,
|
ExperienceContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, null),
|
$this->createPurchaseUnit(true, null),
|
||||||
'product',
|
'product',
|
||||||
null,
|
null,
|
||||||
'',
|
'',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, null),
|
$this->createPurchaseUnit(true, null),
|
||||||
'pay-now',
|
'pay-now',
|
||||||
null,
|
null,
|
||||||
'venmo',
|
'venmo',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, Mockery::mock(Shipping::class)),
|
$this->createPurchaseUnit(true, Mockery::mock(Shipping::class)),
|
||||||
'pay-now',
|
'pay-now',
|
||||||
null,
|
null,
|
||||||
'venmo',
|
'venmo',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
ExperienceContext::SHIPPING_PREFERENCE_GET_FROM_FILE,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, Mockery::mock(Shipping::class)),
|
$this->createPurchaseUnit(true, Mockery::mock(Shipping::class)),
|
||||||
'pay-now',
|
'pay-now',
|
||||||
null,
|
null,
|
||||||
'card',
|
'card',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS,
|
ExperienceContext::SHIPPING_PREFERENCE_SET_PROVIDED_ADDRESS,
|
||||||
];
|
];
|
||||||
yield [
|
yield [
|
||||||
$this->createPurchaseUnit(true, null),
|
$this->createPurchaseUnit(true, null),
|
||||||
'pay-now',
|
'pay-now',
|
||||||
null,
|
null,
|
||||||
'card',
|
'card',
|
||||||
ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ class ApplicationContextRepositoryTest extends TestCase
|
||||||
*/
|
*/
|
||||||
public function test_valid_bcp47_code($input, $output)
|
public function test_valid_bcp47_code($input, $output)
|
||||||
{
|
{
|
||||||
$testee = $this->getMockBuilder(ApplicationContextRepository::class)
|
$testee = $this->getMockBuilder(ExperienceContextRepository::class)
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->getMock();
|
->getMock();
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,7 @@ use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
|
use WooCommerce\PayPalCommerce\Button\Helper\EarlyOrderHandler;
|
||||||
use WooCommerce\PayPalCommerce\Session\SessionHandler;
|
use WooCommerce\PayPalCommerce\Session\SessionHandler;
|
||||||
use WooCommerce\PayPalCommerce\TestCase;
|
use WooCommerce\PayPalCommerce\TestCase;
|
||||||
|
@ -154,6 +155,7 @@ class CreateOrderEndpointTest extends TestCase
|
||||||
$settings = Mockery::mock(Settings::class);
|
$settings = Mockery::mock(Settings::class);
|
||||||
$early_order_handler = Mockery::mock(EarlyOrderHandler::class);
|
$early_order_handler = Mockery::mock(EarlyOrderHandler::class);
|
||||||
$settings->shouldReceive('has')->andReturnFalse();
|
$settings->shouldReceive('has')->andReturnFalse();
|
||||||
|
$experience_context_repository = Mockery::mock(ExperienceContextRepository::class);
|
||||||
|
|
||||||
$testee = new CreateOrderEndpoint(
|
$testee = new CreateOrderEndpoint(
|
||||||
$request_data,
|
$request_data,
|
||||||
|
@ -170,6 +172,7 @@ class CreateOrderEndpointTest extends TestCase
|
||||||
['checkout'],
|
['checkout'],
|
||||||
false,
|
false,
|
||||||
['paypal'],
|
['paypal'],
|
||||||
|
$experience_context_repository,
|
||||||
new NullLogger()
|
new NullLogger()
|
||||||
);
|
);
|
||||||
return array($payer_factory, $testee);
|
return array($payer_factory, $testee);
|
||||||
|
|
|
@ -1,134 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace PHPUnit\Vaulting;
|
|
||||||
|
|
||||||
use Mockery;
|
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
|
||||||
use WC_Customer;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Capture;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\CaptureStatus;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payer;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Payments;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSourceCard;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentToken;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\PurchaseUnit;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
|
||||||
use WooCommerce\PayPalCommerce\Onboarding\Environment;
|
|
||||||
use WooCommerce\PayPalCommerce\WcSubscriptions\Helper\SubscriptionHelper;
|
|
||||||
use WooCommerce\PayPalCommerce\TestCase;
|
|
||||||
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenRepository;
|
|
||||||
use WooCommerce\PayPalCommerce\Vaulting\VaultedCreditCardHandler;
|
|
||||||
use WooCommerce\PayPalCommerce\WcGateway\Processor\AuthorizedPaymentsProcessor;
|
|
||||||
use function Brain\Monkey\Functions\expect;
|
|
||||||
use function Brain\Monkey\Functions\when;
|
|
||||||
|
|
||||||
class VaultedCreditCardHandlerTest extends TestCase
|
|
||||||
{
|
|
||||||
private $subscriptionHelper;
|
|
||||||
private $paymentTokenRepository;
|
|
||||||
private $purchaseUnitFactory;
|
|
||||||
private $payerFactory;
|
|
||||||
private $shippingPreferenceFactory;
|
|
||||||
private $orderEndpoint;
|
|
||||||
private $environment;
|
|
||||||
private $authorizedPaymentProcessor;
|
|
||||||
private $config;
|
|
||||||
private $testee;
|
|
||||||
|
|
||||||
public function setUp(): void
|
|
||||||
{
|
|
||||||
parent::setUp();
|
|
||||||
|
|
||||||
$this->subscriptionHelper = Mockery::mock(SubscriptionHelper::class);
|
|
||||||
$this->paymentTokenRepository = Mockery::mock(PaymentTokenRepository::class);
|
|
||||||
$this->purchaseUnitFactory = Mockery::mock(PurchaseUnitFactory::class);
|
|
||||||
$this->payerFactory = Mockery::mock(PayerFactory::class);
|
|
||||||
$this->shippingPreferenceFactory = Mockery::mock(ShippingPreferenceFactory::class);
|
|
||||||
$this->orderEndpoint = Mockery::mock(OrderEndpoint::class);
|
|
||||||
$this->environment = Mockery::mock(Environment::class);
|
|
||||||
$this->authorizedPaymentProcessor = Mockery::mock(AuthorizedPaymentsProcessor::class);
|
|
||||||
$this->config = Mockery::mock(ContainerInterface::class);
|
|
||||||
|
|
||||||
$this->testee = new VaultedCreditCardHandler(
|
|
||||||
$this->subscriptionHelper,
|
|
||||||
$this->paymentTokenRepository,
|
|
||||||
$this->purchaseUnitFactory,
|
|
||||||
$this->payerFactory,
|
|
||||||
$this->shippingPreferenceFactory,
|
|
||||||
$this->orderEndpoint,
|
|
||||||
$this->environment,
|
|
||||||
$this->authorizedPaymentProcessor,
|
|
||||||
$this->config
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testHandlePayment()
|
|
||||||
{
|
|
||||||
$_POST['woocommerce_change_payment'] = null;
|
|
||||||
|
|
||||||
$wcOrder = Mockery::mock(\WC_Order::class);
|
|
||||||
$wcOrder->shouldReceive('get_id')->andReturn(1);
|
|
||||||
$wcOrder->shouldReceive('get_customer_id')->andReturn(1);
|
|
||||||
$wcOrder->shouldReceive('update_meta_data')->andReturn(1);
|
|
||||||
$wcOrder->shouldReceive('save')->once();
|
|
||||||
$wcOrder->shouldReceive('payment_complete')->andReturn(true);
|
|
||||||
|
|
||||||
$token = Mockery::mock(PaymentToken::class);
|
|
||||||
$tokenId = 'abc123';
|
|
||||||
$token->shouldReceive('id')->andReturn($tokenId);
|
|
||||||
$this->paymentTokenRepository->shouldReceive('all_for_user_id')
|
|
||||||
->andReturn([$token]);
|
|
||||||
|
|
||||||
$purchaseUnit = Mockery::mock(PurchaseUnit::class);
|
|
||||||
$this->purchaseUnitFactory->shouldReceive('from_wc_order')
|
|
||||||
->andReturn($purchaseUnit);
|
|
||||||
|
|
||||||
$customer = Mockery::mock(WC_Customer::class);
|
|
||||||
|
|
||||||
$payer = Mockery::mock(Payer::class);
|
|
||||||
$this->payerFactory->shouldReceive('from_wc_order')
|
|
||||||
->andReturn($payer);
|
|
||||||
$this->shippingPreferenceFactory->shouldReceive('from_state')
|
|
||||||
->andReturn('some_preference');
|
|
||||||
|
|
||||||
$order = Mockery::mock(Order::class);
|
|
||||||
$order->shouldReceive('id')->andReturn('1');
|
|
||||||
$order->shouldReceive('intent')->andReturn('CAPTURE');
|
|
||||||
|
|
||||||
$paymentSource = Mockery::mock(PaymentSource::class);
|
|
||||||
$paymentSource->shouldReceive('name')->andReturn('card');
|
|
||||||
$order->shouldReceive('payment_source')->andReturn($paymentSource);
|
|
||||||
|
|
||||||
$orderStatus = Mockery::mock(OrderStatus::class);
|
|
||||||
$orderStatus->shouldReceive('is')->andReturn(true);
|
|
||||||
$order->shouldReceive('status')->andReturn($orderStatus);
|
|
||||||
|
|
||||||
$order->shouldReceive('purchase_units')->andReturn([$purchaseUnit]);
|
|
||||||
$payments = Mockery::mock(Payments::class);
|
|
||||||
$capture = Mockery::mock(Capture::class);
|
|
||||||
$capture->shouldReceive('id')->andReturn('1');
|
|
||||||
$captureStatus = Mockery::mock(CaptureStatus::class);
|
|
||||||
$captureStatus->shouldReceive('details')->andReturn(null);
|
|
||||||
$captureStatus->shouldReceive('name')->andReturn(CaptureStatus::COMPLETED);
|
|
||||||
$capture->shouldReceive('status')->andReturn($captureStatus);
|
|
||||||
$payments->shouldReceive('captures')->andReturn([$capture]);
|
|
||||||
$purchaseUnit->shouldReceive('payments')->andReturn($payments);
|
|
||||||
|
|
||||||
$this->orderEndpoint->shouldReceive('create')
|
|
||||||
->with([$purchaseUnit], 'some_preference', $payer, $token)
|
|
||||||
->andReturn($order);
|
|
||||||
|
|
||||||
$this->environment->shouldReceive('current_environment_is')->andReturn(true);
|
|
||||||
|
|
||||||
$this->config->shouldReceive('has')->andReturn(false);
|
|
||||||
|
|
||||||
$result = $this->testee->handle_payment($tokenId, $wcOrder, $customer);
|
|
||||||
$this->assertInstanceOf(\WC_Order::class, $result);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -7,6 +7,7 @@ use Exception;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PayerFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\PurchaseUnitFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\ShippingPreferenceFactory;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\Dictionary;
|
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\Dictionary;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
|
@ -149,7 +150,8 @@ class OrderProcessorTest extends TestCase
|
||||||
$order_helper,
|
$order_helper,
|
||||||
Mockery::mock(PurchaseUnitFactory::class),
|
Mockery::mock(PurchaseUnitFactory::class),
|
||||||
Mockery::mock(PayerFactory::class),
|
Mockery::mock(PayerFactory::class),
|
||||||
Mockery::mock(ShippingPreferenceFactory::class)
|
Mockery::mock(ShippingPreferenceFactory::class),
|
||||||
|
Mockery::mock(ExperienceContextRepository::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$wcOrder
|
$wcOrder
|
||||||
|
@ -279,7 +281,8 @@ class OrderProcessorTest extends TestCase
|
||||||
$order_helper,
|
$order_helper,
|
||||||
Mockery::mock(PurchaseUnitFactory::class),
|
Mockery::mock(PurchaseUnitFactory::class),
|
||||||
Mockery::mock(PayerFactory::class),
|
Mockery::mock(PayerFactory::class),
|
||||||
Mockery::mock(ShippingPreferenceFactory::class)
|
Mockery::mock(ShippingPreferenceFactory::class),
|
||||||
|
Mockery::mock(ExperienceContextRepository::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$wcOrder
|
$wcOrder
|
||||||
|
@ -391,7 +394,8 @@ class OrderProcessorTest extends TestCase
|
||||||
$order_helper,
|
$order_helper,
|
||||||
Mockery::mock(PurchaseUnitFactory::class),
|
Mockery::mock(PurchaseUnitFactory::class),
|
||||||
Mockery::mock(PayerFactory::class),
|
Mockery::mock(PayerFactory::class),
|
||||||
Mockery::mock(ShippingPreferenceFactory::class)
|
Mockery::mock(ShippingPreferenceFactory::class),
|
||||||
|
Mockery::mock(ExperienceContextRepository::class)
|
||||||
);
|
);
|
||||||
|
|
||||||
$wcOrder
|
$wcOrder
|
||||||
|
|
|
@ -5,8 +5,8 @@ declare(strict_types=1);
|
||||||
namespace WooCommerce\PayPalCommerce\WcGateway\Repository;
|
namespace WooCommerce\PayPalCommerce\WcGateway\Repository;
|
||||||
|
|
||||||
use Hamcrest\Matchers;
|
use Hamcrest\Matchers;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\ApplicationContext;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\ExperienceContext;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Repository\ApplicationContextRepository;
|
use WooCommerce\PayPalCommerce\ApiClient\Repository\ExperienceContextRepository;
|
||||||
use WooCommerce\PayPalCommerce\TestCase;
|
use WooCommerce\PayPalCommerce\TestCase;
|
||||||
use Mockery\MockInterface;
|
use Mockery\MockInterface;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
|
||||||
|
@ -44,13 +44,13 @@ class ApplicationContextRepositoryTest extends TestCase
|
||||||
expect('get_user_locale')
|
expect('get_user_locale')
|
||||||
->andReturn($userLocale);
|
->andReturn($userLocale);
|
||||||
|
|
||||||
/* @var ApplicationContextRepository $testee */
|
/* @var ExperienceContextRepository $testee */
|
||||||
$testee = $this->buildTestee()[1];
|
$testee = $this->buildTestee()[1];
|
||||||
|
|
||||||
$context = $testee->current_context($shippingPreference);
|
$context = $testee->current_context($shippingPreference);
|
||||||
|
|
||||||
self::assertInstanceOf(
|
self::assertInstanceOf(
|
||||||
ApplicationContext::class,
|
ExperienceContext::class,
|
||||||
$context
|
$context
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -72,17 +72,17 @@ class ApplicationContextRepositoryTest extends TestCase
|
||||||
'default test' => [
|
'default test' => [
|
||||||
'container' => [
|
'container' => [
|
||||||
'brand_name' => 'Acme corp.',
|
'brand_name' => 'Acme corp.',
|
||||||
'landing_page' => ApplicationContext::LANDING_PAGE_BILLING,
|
'landing_page' => ExperienceContext::LANDING_PAGE_BILLING,
|
||||||
'payee_preferred' => '',
|
'payee_preferred' => '',
|
||||||
],
|
],
|
||||||
'user_locale' => 'de_DE',
|
'user_locale' => 'de_DE',
|
||||||
'shippingPreference' => ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
'shippingPreference' => ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
||||||
'expected' => [
|
'expected' => [
|
||||||
'locale' => 'de-DE',
|
'locale' => 'de-DE',
|
||||||
'brand_name' => 'Acme corp.',
|
'brand_name' => 'Acme corp.',
|
||||||
'landing_page' => ApplicationContext::LANDING_PAGE_BILLING,
|
'landing_page' => ExperienceContext::LANDING_PAGE_BILLING,
|
||||||
'shipping_preference' => ApplicationContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
'shipping_preference' => ExperienceContext::SHIPPING_PREFERENCE_NO_SHIPPING,
|
||||||
'payment_method_preference' => ApplicationContext::PAYMENT_METHOD_UNRESTRICTED,
|
'payment_method_preference' => ExperienceContext::PAYMENT_METHOD_UNRESTRICTED,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
@ -101,7 +101,7 @@ class ApplicationContextRepositoryTest extends TestCase
|
||||||
{
|
{
|
||||||
if (! self::$mocks) {
|
if (! self::$mocks) {
|
||||||
$config = \Mockery::mock(ContainerInterface::class);
|
$config = \Mockery::mock(ContainerInterface::class);
|
||||||
$testee = new ApplicationContextRepository($config);
|
$testee = new ExperienceContextRepository($config);
|
||||||
|
|
||||||
self::$mocks = [
|
self::$mocks = [
|
||||||
$config,
|
$config,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue