create-order' => static function ( ContainerInterface $container ): CreateOrderEndpoint { $request_data = $container->get( 'button.request-data' ); $purchase_unit_factory = $container->get( 'api.factory.purchase-unit' ); $order_endpoint = $container->get( 'api.endpoint.order' ); $payer_factory = $container->get( 'api.factory.payer' ); $session_handler = $container->get( 'session.handler' ); $settings = $container->get( 'wcgateway.settings' ); $early_order_handler = $container->get( 'button.helper.early-order-handler' ); $registration_needed = $container->get( 'button.current-user-must-register' ); $logger = $container->get( 'woocommerce.logger.woocommerce' ); return new CreateOrderEndpoint( $request_data, $purchase_unit_factory, $container->get( 'api.factory.shipping-preference' ), $order_endpoint, $payer_factory, $session_handler, $settings, $early_order_handler, $registration_needed, $container->get( 'wcgateway.settings.card_billing_data_mode' ), $container->get( 'button.early-wc-checkout-validation-enabled' ), $container->get( 'button.pay-now-contexts' ), $container->get( 'button.handle-shipping-in-paypal' ), $container->get( 'wcgateway.funding-sources-without-redirect' ), $logger ); }, 'button.helper.early-order-handler' => static function ( ContainerInterface $container ) : EarlyOrderHandler { $state = $container->get( 'onboarding.state' ); $order_processor = $container->get( 'wcgateway.order-processor' ); $session_handler = $container->get( 'session.handler' ); return new EarlyOrderHandler( $state, $order_processor, $session_handler ); }, 'button.endpoint.approve-order' => static function ( ContainerInterface $container ): ApproveOrderEndpoint { $request_data = $container->get( 'button.request-data' ); $order_endpoint = $container->get( 'api.endpoint.order' ); $session_handler = $container->get( 'session.handler' ); $three_d_secure = $container->get( 'button.helper.three-d-secure' ); $settings = $container->get( 'wcgateway.settings' ); $dcc_applies = $container->get( 'api.helpers.dccapplies' ); $order_helper = $container->get( 'api.order-helper' ); $logger = $container->get( 'woocommerce.logger.woocommerce' ); return new ApproveOrderEndpoint( $request_data, $order_endpoint, $session_handler, $three_d_secure, $settings, $dcc_applies, $order_helper, $logger ); }, 'button.endpoint.approve-subscription' => static function( ContainerInterface $container ): ApproveSubscriptionEndpoint { return new ApproveSubscriptionEndpoint( $container->get( 'button.request-data' ), $container->get( 'api.endpoint.order' ), $container->get( 'session.handler' ) ); }, 'button.checkout-form-saver' => static function ( ContainerInterface $container ): CheckoutFormSaver { return new CheckoutFormSaver( $container->get( 'session.handler' ) ); }, 'button.endpoint.save-checkout-form' => static function ( ContainerInterface $container ): SaveCheckoutFormEndpoint { return new SaveCheckoutFormEndpoint( $container->get( 'button.request-data' ), $container->get( 'button.checkout-form-saver' ), $container->get( 'woocommerce.logger.woocommerce' ) ); }, 'button.endpoint.data-client-id' => static function( ContainerInterface $container ) : DataClientIdEndpoint { $request_data = $container->get( 'button.request-data' ); $identity_token = $container->get( 'api.endpoint.identity-token' ); $logger = $container->get( 'woocommerce.logger.woocommerce' ); return new DataClientIdEndpoint( $request_data, $identity_token, $logger ); }, 'button.endpoint.vault-paypal' => static function( ContainerInterface $container ) : StartPayPalVaultingEndpoint { return new StartPayPalVaultingEndpoint( $container->get( 'button.request-data' ), $container->get( 'api.endpoint.payment-token' ), $container->get( 'woocommerce.logger.woocommerce' ) ); }, 'button.endpoint.validate-checkout' => static function ( ContainerInterface $container ): ValidateCheckoutEndpoint { return new ValidateCheckoutEndpoint( $container->get( 'button.request-data' ), $container->get( 'button.validation.wc-checkout-validator' ), $container->get( 'woocommerce.logger.woocommerce' ) ); }, 'button.endpoint.cart-script-params' => static function ( ContainerInterface $container ): CartScriptParamsEndpoint { return new CartScriptParamsEndpoint( $container->get( 'button.smart-button' ), $container->get( 'woocommerce.logger.woocommerce' ) ); }, 'button.helper.cart-products' => static function ( ContainerInterface $container ): CartProductsHelper { $data_store = \WC_Data_Store::load( 'product' ); return new CartProductsHelper( $data_store ); }, 'button.helper.three-d-secure' => static function ( ContainerInterface $container ): ThreeDSecure { return new ThreeDSecure( $container->get( 'api.factory.card-authentication-result-factory' ), $container->get( 'woocommerce.logger.woocommerce' ) ); }, 'button.helper.messages-apply' => static function ( ContainerInterface $container ): MessagesApply { return new MessagesApply( $container->get( 'api.shop.country' ) ); }, 'button.is-logged-in' => static function ( ContainerInterface $container ): bool { return is_user_logged_in(); }, 'button.registration-required' => static function ( ContainerInterface $container ): bool { return WC()->checkout()->is_registration_required(); }, 'button.current-user-must-register' => static function ( ContainerInterface $container ): bool { return ! $container->get( 'button.is-logged-in' ) && $container->get( 'button.registration-required' ); }, 'button.basic-checkout-validation-enabled' => static function ( ContainerInterface $container ): bool { /** * The filter allowing to disable the basic client-side validation of the checkout form * when the PayPal button is clicked. */ return (bool) apply_filters( 'woocommerce_paypal_payments_basic_checkout_validation_enabled', false ); }, 'button.early-wc-checkout-validation-enabled' => static function ( ContainerInterface $container ): bool { /** * The filter allowing to disable the WC validation of the checkout form * when the PayPal button is clicked. * The validation is triggered in a non-standard way and may cause issues on some sites. */ return (bool) apply_filters( 'woocommerce_paypal_payments_early_wc_checkout_validation_enabled', true ); }, 'button.validation.wc-checkout-validator' => static function ( ContainerInterface $container ): CheckoutFormValidator { return new CheckoutFormValidator(); }, /** * If true, the shipping methods are sent to PayPal allowing the customer to select it inside the popup. * May result in slower popup performance, additional loading. */ 'button.handle-shipping-in-paypal' => static function ( ContainerInterface $container ): bool { return false; }, );