static function (ContainerInterface $container): PayPalGateway { return new PayPalGateway($container->get('wcgateway.funding-source.renderer'), $container->get('wcgateway.order-processor'), $container->get('settings.settings-provider'), $container->get('session.handler'), $container->get('wcgateway.processor.refunds'), $container->get('settings.flag.is-connected'), $container->get('wcgateway.transaction-url-provider'), $container->get('wc-subscriptions.helper'), $container->get('settings.environment'), $container->get('woocommerce.logger.woocommerce'), $container->get('api.shop.country'), $container->get('api.factory.paypal-checkout-url'), $container->get('wcgateway.place-order-button-text'), $container->get('api.endpoint.payment-tokens'), $container->get('wc-payment-tokens.wc-payment-tokens'), $container->get('wcgateway.asset_getter'), $container->get('wcgateway.settings.admin-settings-enabled'), $container->get('wcgateway.endpoint.capture-paypal-payment'), $container->get('api.endpoint.order'), $container->get('api.prefix')); }, 'wcgateway.credit-card-gateway' => static function (ContainerInterface $container): CreditCardGateway { return new CreditCardGateway($container->get('wcgateway.order-processor'), $container->get('wcgateway.settings'), $container->get('wcgateway.configuration.card-configuration'), $container->get('wcgateway.credit-card-icons'), $container->get('session.handler'), $container->get('wcgateway.processor.refunds'), $container->get('wcgateway.transaction-url-provider'), $container->get('wc-subscriptions.helper'), $container->get('api.endpoint.payments'), $container->get('settings.environment'), $container->get('api.endpoint.order'), $container->get('wcgateway.endpoint.capture-card-payment'), $container->get('api.prefix'), $container->get('wc-payment-tokens.wc-payment-tokens'), $container->get('woocommerce.logger.woocommerce')); }, 'wcgateway.credit-card-labels' => static function (ContainerInterface $container): array { return array('visa' => _x('Visa', 'Name of credit card', 'woocommerce-paypal-payments'), 'mastercard' => _x('Mastercard', 'Name of credit card', 'woocommerce-paypal-payments'), 'amex' => _x('American Express', 'Name of credit card', 'woocommerce-paypal-payments'), 'discover' => _x('Discover', 'Name of credit card', 'woocommerce-paypal-payments'), 'jcb' => _x('JCB', 'Name of credit card', 'woocommerce-paypal-payments'), 'elo' => _x('Elo', 'Name of credit card', 'woocommerce-paypal-payments'), 'hiper' => _x('Hiper', 'Name of credit card', 'woocommerce-paypal-payments')); }, 'wcgateway.credit-card-icons' => static function (ContainerInterface $container): array { $settings_provider = $container->get('settings.settings-provider'); assert($settings_provider instanceof SettingsProvider); $icons = $settings_provider->card_icons(); $labels = $container->get('wcgateway.credit-card-labels'); $asset_getter = $container->get('wcgateway.asset_getter'); assert($asset_getter instanceof AssetGetter); $url_root = $asset_getter->get_static_asset_url('images/'); $icons_with_label = array(); foreach ($icons as $icon) { $type = str_replace('-dark', '', $icon); $icons_with_label[] = array('type' => $type, 'title' => ucwords($labels[$type] ?? $type), 'url' => "{$url_root}/{$icon}.svg"); } return $icons_with_label; }, 'wcgateway.card-button-gateway' => static function (ContainerInterface $container): CardButtonGateway { return new CardButtonGateway($container->get('wcgateway.order-processor'), $container->get('session.handler'), $container->get('wcgateway.processor.refunds'), $container->get('settings.flag.is-connected'), $container->get('wcgateway.transaction-url-provider'), $container->get('wc-subscriptions.helper'), $container->get('wcgateway.settings.allow_card_button_gateway.default'), $container->get('settings.environment'), $container->get('woocommerce.logger.woocommerce'), $container->get('api.factory.paypal-checkout-url'), $container->get('wcgateway.place-order-button-text')); }, 'wcgateway.disabler' => static function (ContainerInterface $container): DisableGateways { $settings_provider = $container->get('settings.settings-provider'); $settings_status = $container->get('wcgateway.settings.status'); $subscription_helper = $container->get('wc-subscriptions.helper'); $context = $container->get('button.helper.context'); $card_configuration = $container->get('wcgateway.configuration.card-configuration'); $store_country = $container->get('api.merchant.country'); return new DisableGateways($settings_provider, $settings_status, $subscription_helper, $context, $card_configuration, $store_country); }, 'wcgateway.is-wc-settings-page' => static function (ContainerInterface $container): bool { $page = isset($_GET['page']) ? sanitize_text_field(wp_unslash($_GET['page'])) : ''; return 'wc-settings' === $page; }, 'wcgateway.is-wc-payments-page' => static function (ContainerInterface $container): bool { $is_wc_settings_page = $container->get('wcgateway.is-wc-settings-page'); $tab = isset($_GET['tab']) ? sanitize_text_field(wp_unslash($_GET['tab'])) : ''; return $is_wc_settings_page && 'checkout' === $tab; }, 'wcgateway.is-wc-gateways-list-page' => static function (ContainerInterface $container): bool { return $container->get('wcgateway.is-wc-payments-page') && !isset($_GET['section']); }, /** * Whether the current request renders the PayPal Payments settings page. */ 'wcgateway.is-plugin-settings-page' => static function (): bool { if (defined('DOING_AJAX') && DOING_AJAX) { // @phpstan-ignore booleanAnd.rightAlwaysTrue return \false; } if (!is_admin()) { return \false; } // phpcs:disable WordPress.Security.NonceVerification $is_wc_settings = isset($_GET['page']) && 'wc-settings' === $_GET['page']; $is_plugin_settings = isset($_GET['section']) && PayPalGateway::ID === $_GET['section']; // phpcs:enable WordPress.Security.NonceVerification return $is_wc_settings && $is_plugin_settings; }, 'wcgateway.settings' => SingletonDecorator::make(static function (ContainerInterface $container): Settings { return new Settings($container->get('wcgateway.button.default-locations'), __('Debit & Credit Cards', 'woocommerce-paypal-payments'), $container->get('wcgateway.settings.pay-later.default-button-locations'), $container->get('wcgateway.settings.pay-later.default-messaging-locations')); }), 'wcgateway.notice.connect' => static function (ContainerInterface $container): ConnectAdminNotice { return new ConnectAdminNotice($container->get('settings.flag.is-connected'), $container->get('wcgateway.is-send-only-country')); }, 'wcgateway.notice.currency-unsupported' => static function (ContainerInterface $container): UnsupportedCurrencyAdminNotice { return new UnsupportedCurrencyAdminNotice($container->get('settings.flag.is-connected'), $container->get('api.shop.currency.getter'), $container->get('api.supported-currencies'), $container->get('wcgateway.is-wc-gateways-list-page'), $container->get('wcgateway.is-plugin-settings-page')); }, 'wcgateway.notice.dcc-without-paypal' => static function (ContainerInterface $container): GatewayWithoutPayPalAdminNotice { return new GatewayWithoutPayPalAdminNotice(CreditCardGateway::ID, $container->get('settings.flag.is-connected'), $container->get('settings.settings-provider'), $container->get('wcgateway.is-wc-payments-page'), $container->get('wcgateway.is-plugin-settings-page'), $container->get('wcgateway.configuration.card-configuration')); }, 'wcgateway.notice.card-button-without-paypal' => static function (ContainerInterface $container): GatewayWithoutPayPalAdminNotice { return new GatewayWithoutPayPalAdminNotice(CardButtonGateway::ID, $container->get('settings.flag.is-connected'), $container->get('settings.settings-provider'), $container->get('wcgateway.is-wc-payments-page'), $container->get('wcgateway.is-plugin-settings-page'), $container->get('wcgateway.configuration.card-configuration'), $container->get('wcgateway.settings.status')); }, 'wcgateway.store-country' => static function (): string { $location = wc_get_base_location(); return $location['country']; }, 'wcgateway.send-only-message' => static function () { return __("Important: Your current WooCommerce store location is in a \"send-only\" country, according to PayPal's policies. Sellers in these countries are unable to receive payments via PayPal. Since receiving payments is essential for using the PayPal Payments extension, you will not be able to connect your PayPal account while operating from a \"send-only\" country. To activate PayPal, please update your WooCommerce store location to a supported region and connect a PayPal account eligible for receiving payments.", 'woocommerce-paypal-payments'); }, 'wcgateway.send-only-countries' => static function () { return array('AO', 'AI', 'AM', 'AW', 'AZ', 'BY', 'BJ', 'BT', 'BO', 'VG', 'BN', 'BF', 'BI', 'CI', 'KH', 'CM', 'CV', 'TD', 'KM', 'CG', 'CK', 'DJ', 'ER', 'ET', 'FK', 'GA', 'GM', 'GN', 'GW', 'GY', 'KI', 'KG', 'LA', 'MK', 'MG', 'MV', 'ML', 'MH', 'MR', 'FM', 'MN', 'ME', 'MS', 'NA', 'NR', 'NP', 'NE', 'NG', 'NU', 'NF', 'PG', 'PY', 'PN', 'RW', 'ST', 'WS', 'SL', 'SB', 'SO', 'SH', 'PM', 'VC', 'SR', 'SJ', 'TJ', 'TZ', 'TG', 'TO', 'TN', 'TM', 'TV', 'UG', 'UA', 'VA', 'WF', 'YE', 'ZM', 'ZW'); }, 'wcgateway.is-send-only-country' => static function (ContainerInterface $container) { $store_country = $container->get('wcgateway.store-country'); $send_only_countries = $container->get('wcgateway.send-only-countries'); return in_array($store_country, $send_only_countries, \true); }, 'wcgateway.notice.send-only-country' => static function (ContainerInterface $container) { return new SendOnlyCountryNotice($container->get('wcgateway.send-only-message'), $container->get('wcgateway.is-send-only-country'), $container->get('wcgateway.is-plugin-settings-page'), $container->get('wcgateway.is-wc-gateways-list-page'), $container->get('settings.flag.is-connected')); }, 'wcgateway.notice.authorize-order-action' => static function (ContainerInterface $container): AuthorizeOrderActionNotice { return new AuthorizeOrderActionNotice(); }, 'wcgateway.settings.status' => static function (ContainerInterface $container): SettingsStatus { $settings_provider = $container->get('settings.settings-provider'); return new SettingsStatus($settings_provider); }, 'wcgateway.order-processor' => static function (ContainerInterface $container): OrderProcessor { $session_handler = $container->get('session.handler'); $order_endpoint = $container->get('api.endpoint.order'); $order_factory = $container->get('api.factory.order'); $threed_secure = $container->get('button.helper.three-d-secure'); $authorized_payments_processor = $container->get('wcgateway.processor.authorized-payments'); $settings_provider = $container->get('settings.settings-provider'); $environment = $container->get('settings.environment'); $logger = $container->get('woocommerce.logger.woocommerce'); $subscription_helper = $container->get('wc-subscriptions.helper'); $order_helper = $container->get('api.order-helper'); return new OrderProcessor($session_handler, $order_endpoint, $order_factory, $threed_secure, $authorized_payments_processor, $settings_provider, $logger, $environment, $subscription_helper, $order_helper, $container->get('api.factory.purchase-unit'), $container->get('api.factory.payer'), $container->get('api.factory.shipping-preference'), $container->get('wcgateway.builder.experience-context')); }, 'wcgateway.processor.refunds' => static function (ContainerInterface $container): RefundProcessor { return new RefundProcessor($container->get('api.endpoint.order'), $container->get('api.endpoint.payments'), $container->get('wcgateway.helper.refund-fees-updater'), $container->get('api.prefix'), $container->get('woocommerce.logger.woocommerce')); }, 'wcgateway.processor.authorized-payments' => static function (ContainerInterface $container): AuthorizedPaymentsProcessor { $order_endpoint = $container->get('api.endpoint.order'); $payments_endpoint = $container->get('api.endpoint.payments'); $logger = $container->get('woocommerce.logger.woocommerce'); $notice = $container->get('wcgateway.notice.authorize-order-action'); $settings = $container->get('wcgateway.settings'); $subscription_helper = $container->get('wc-subscriptions.helper'); $amount_factory = $container->get('api.factory.amount'); return new AuthorizedPaymentsProcessor($order_endpoint, $payments_endpoint, $logger, $notice, $settings, $subscription_helper, $amount_factory); }, 'wcgateway.admin.render-authorize-action' => static function (ContainerInterface $container): RenderAuthorizeAction { $column = $container->get('wcgateway.admin.orders-payment-status-column'); return new RenderAuthorizeAction($column); }, 'wcgateway.admin.render-reauthorize-action' => static function (ContainerInterface $container): RenderReauthorizeAction { $column = $container->get('wcgateway.admin.orders-payment-status-column'); return new RenderReauthorizeAction($column); }, 'wcgateway.admin.order-payment-status' => static function (ContainerInterface $container): PaymentStatusOrderDetail { $column = $container->get('wcgateway.admin.orders-payment-status-column'); return new PaymentStatusOrderDetail($column); }, 'wcgateway.admin.orders-payment-status-column' => static function (ContainerInterface $container): OrderTablePaymentStatusColumn { return new OrderTablePaymentStatusColumn($container->get('settings.settings-provider')); }, 'wcgateway.admin.fees-renderer' => static function (ContainerInterface $container): FeesRenderer { return new FeesRenderer(); }, 'wcgateway.settings.fields.subscriptions_mode_options' => static function (ContainerInterface $container): array { return array('vaulting_api' => __('PayPal Vaulting', 'woocommerce-paypal-payments'), 'subscriptions_api' => __('PayPal Subscriptions', 'woocommerce-paypal-payments'), 'disable_paypal_subscriptions' => __('Disable PayPal for subscriptions', 'woocommerce-paypal-payments')); }, 'wcgateway.settings.fields.subscriptions_mode' => static function (ContainerInterface $container): array { $subscription_mode_options = $container->get('wcgateway.settings.fields.subscriptions_mode_options'); $reference_transaction_status = $container->get('api.reference-transaction-status'); assert($reference_transaction_status instanceof ReferenceTransactionStatus); if (!$reference_transaction_status->reference_transaction_enabled()) { unset($subscription_mode_options['vaulting_api']); } return array('title' => __('Subscriptions Mode', 'woocommerce-paypal-payments'), 'type' => 'select', 'class' => array(), 'input_class' => array('wc-enhanced-select'), 'desc_tip' => \true, 'description' => __('Utilize PayPal Vaulting for flexible subscription processing with saved payment methods, create “PayPal Subscriptions” to bill customers at regular intervals, or disable PayPal for subscription-type products.', 'woocommerce-paypal-payments'), 'default' => array_key_first($subscription_mode_options), 'options' => $subscription_mode_options, 'screens' => array(8), 'requirements' => array(), 'gateway' => 'paypal'); }, 'wcgateway.all-funding-sources' => static function (ContainerInterface $container): array { return array('card' => _x('Credit or debit cards', 'Name of payment method', 'woocommerce-paypal-payments'), 'sepa' => _x('SEPA-Lastschrift', 'Name of payment method', 'woocommerce-paypal-payments'), 'bancontact' => _x('Bancontact', 'Name of payment method', 'woocommerce-paypal-payments'), 'blik' => _x('BLIK', 'Name of payment method', 'woocommerce-paypal-payments'), 'eps' => _x('eps', 'Name of payment method', 'woocommerce-paypal-payments'), 'ideal' => _x('iDEAL', 'Name of payment method', 'woocommerce-paypal-payments'), 'mybank' => _x('MyBank', 'Name of payment method', 'woocommerce-paypal-payments'), 'p24' => _x('Przelewy24', 'Name of payment method', 'woocommerce-paypal-payments'), 'venmo' => _x('Venmo', 'Name of payment method', 'woocommerce-paypal-payments'), 'trustly' => _x('Trustly', 'Name of payment method', 'woocommerce-paypal-payments'), 'paylater' => _x('PayPal Pay Later', 'Name of payment method', 'woocommerce-paypal-payments'), 'paypal' => _x('PayPal', 'Name of payment method', 'woocommerce-paypal-payments')); }, 'wcgateway.extra-funding-sources' => static function (ContainerInterface $container): array { return array('googlepay' => _x('Google Pay', 'Name of payment method', 'woocommerce-paypal-payments'), 'applepay' => _x('Apple Pay', 'Name of payment method', 'woocommerce-paypal-payments')); }, /** * The sources that do not cause issues about redirecting (on mobile, ...) and sometimes not returning back. */ 'wcgateway.funding-sources-without-redirect' => static function (ContainerInterface $container): array { return array('paypal', 'paylater', 'venmo', 'card'); }, 'wcgateway.checkout.address-preset' => static function (ContainerInterface $container): CheckoutPayPalAddressPreset { return new CheckoutPayPalAddressPreset($container->get('session.handler')); }, 'wcgateway.asset_getter' => static function (ContainerInterface $container): AssetGetter { $factory = $container->get('assets.asset_getter_factory'); assert($factory instanceof AssetGetterFactory); return $factory->for_module('ppcp-wc-gateway'); }, 'wcgateway.endpoint.return-url' => static function (ContainerInterface $container): ReturnUrlEndpoint { $gateway = $container->get('wcgateway.paypal-gateway'); $endpoint = $container->get('api.endpoint.order'); return new ReturnUrlEndpoint($gateway, $endpoint, $container->get('session.handler'), $container->get('woocommerce.logger.woocommerce')); }, 'wcgateway.endpoint.refresh-feature-status' => static function (ContainerInterface $container): RefreshFeatureStatusEndpoint { return new RefreshFeatureStatusEndpoint($container->get('wcgateway.settings'), new Cache('ppcp-timeout'), $container->get('woocommerce.logger.woocommerce')); }, 'wcgateway.transaction-url-sandbox' => static function (ContainerInterface $container): string { return 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s'; }, 'wcgateway.transaction-url-live' => static function (ContainerInterface $container): string { return 'https://www.paypal.com/cgi-bin/webscr?cmd=_view-a-trans&id=%s'; }, 'wcgateway.soft-descriptor' => static function (ContainerInterface $container): string { $settings_provider = $container->get('settings.settings-provider'); return $settings_provider->soft_descriptor(); }, 'wcgateway.transaction-url-provider' => static function (ContainerInterface $container): TransactionUrlProvider { $sandbox_url_base = $container->get('wcgateway.transaction-url-sandbox'); $live_url_base = $container->get('wcgateway.transaction-url-live'); return new TransactionUrlProvider($sandbox_url_base, $live_url_base); }, 'wcgateway.configuration.card-configuration' => static function (ContainerInterface $container): CardPaymentsConfiguration { return new CardPaymentsConfiguration($container->get('settings.connection-state'), $container->get('settings.settings-provider'), $container->get('api.helpers.dccapplies'), $container->get('wcgateway.helper.dcc-product-status'), $container->get('api.shop.country')); }, 'wcgateway.helper.dcc-product-status' => static function (ContainerInterface $container): DCCProductStatus { return new DCCProductStatus($container->get('settings.flag.is-connected'), $container->get('api.endpoint.partners'), $container->get('api.helper.failure-registry'), $container->get('api.helper.product-status-result-cache'), $container->get('api.helpers.dccapplies')); }, 'wcgateway.helper.refund-fees-updater' => static function (ContainerInterface $container): RefundFeesUpdater { $order_endpoint = $container->get('api.endpoint.order'); $logger = $container->get('woocommerce.logger.woocommerce'); return new RefundFeesUpdater($order_endpoint, $logger); }, 'wcgateway.helper.fees-updater' => static function (ContainerInterface $container): FeesUpdater { return new FeesUpdater($container->get('api.endpoint.orders'), $container->get('api.factory.capture'), $container->get('woocommerce.logger.woocommerce')); }, 'button.helper.messages-disclaimers' => static function (ContainerInterface $container): MessagesDisclaimers { return new MessagesDisclaimers($container->get('api.shop.country')); }, 'wcgateway.funding-source.renderer' => function (ContainerInterface $container): FundingSourceRenderer { return new FundingSourceRenderer($container->get('settings.settings-provider'), array_merge($container->get('wcgateway.all-funding-sources'), $container->get('wcgateway.extra-funding-sources'))); }, 'wcgateway.checkout-helper' => static function (ContainerInterface $container): CheckoutHelper { return new CheckoutHelper(); }, 'wcgateway.pay-upon-invoice-order-endpoint' => static function (ContainerInterface $container): PayUponInvoiceOrderEndpoint { return new PayUponInvoiceOrderEndpoint($container->get('api.host'), $container->get('api.bearer'), $container->get('api.factory.order'), $container->get('wcgateway.fraudnet'), $container->get('woocommerce.logger.woocommerce')); }, 'wcgateway.pay-upon-invoice-payment-source-factory' => static function (ContainerInterface $container): PaymentSourceFactory { return new PaymentSourceFactory($container->get('settings.data.payment')); }, 'wcgateway.pay-upon-invoice-gateway' => static function (ContainerInterface $container): PayUponInvoiceGateway { return new PayUponInvoiceGateway($container->get('wcgateway.pay-upon-invoice-order-endpoint'), $container->get('api.factory.purchase-unit'), $container->get('wcgateway.pay-upon-invoice-payment-source-factory'), $container->get('settings.environment'), $container->get('wcgateway.transaction-url-provider'), $container->get('woocommerce.logger.woocommerce'), $container->get('wcgateway.pay-upon-invoice-helper'), $container->get('wcgateway.checkout-helper'), $container->get('settings.flag.is-connected'), $container->get('wcgateway.processor.refunds'), $container->get('wcgateway.asset_getter')); }, 'wcgateway.fraudnet-source-website-id' => static function (ContainerInterface $container): FraudNetSourceWebsiteId { return new FraudNetSourceWebsiteId($container->get('api.merchant_id')); }, 'wcgateway.fraudnet' => static function (ContainerInterface $container): FraudNet { $source_website_id = $container->get('wcgateway.fraudnet-source-website-id'); return new FraudNet((string) $source_website_id()); }, 'wcgateway.pay-upon-invoice-helper' => static function (ContainerInterface $container): PayUponInvoiceHelper { return new PayUponInvoiceHelper($container->get('wcgateway.checkout-helper'), $container->get('api.shop.country'), $container->get('settings.data.payment')); }, 'wcgateway.pay-upon-invoice-product-status' => static function (ContainerInterface $container): PayUponInvoiceProductStatus { return new PayUponInvoiceProductStatus($container->get('settings.flag.is-connected'), $container->get('api.endpoint.partners'), $container->get('api.helper.failure-registry'), $container->get('api.helper.product-status-result-cache')); }, 'wcgateway.installments-product-status' => static function (ContainerInterface $container): InstallmentsProductStatus { return new InstallmentsProductStatus($container->get('settings.flag.is-connected'), $container->get('api.endpoint.partners'), $container->get('api.helper.failure-registry'), $container->get('api.helper.product-status-result-cache')); }, 'wcgateway.pwc-product-status' => static function (ContainerInterface $container): PWCProductStatus { return new PWCProductStatus($container->get('settings.flag.is-connected'), $container->get('api.endpoint.partners'), $container->get('api.helper.failure-registry'), $container->get('api.helper.product-status-result-cache')); }, 'wcgateway.pay-upon-invoice' => static function (ContainerInterface $container): PayUponInvoice { return new PayUponInvoice($container->get('wcgateway.pay-upon-invoice-order-endpoint'), $container->get('woocommerce.logger.woocommerce'), $container->get('settings.flag.is-connected'), $container->get('wcgateway.is-plugin-settings-page'), $container->get('wcgateway.pay-upon-invoice-product-status'), $container->get('wcgateway.pay-upon-invoice-helper'), $container->get('wcgateway.checkout-helper'), $container->get('api.factory.capture'), $container->get('settings.data.payment')); }, 'wcgateway.oxxo' => static function (ContainerInterface $container): OXXO { return new OXXO($container->get('wcgateway.checkout-helper'), $container->get('wcgateway.asset_getter'), $container->get('ppcp.asset-version'), $container->get('api.endpoint.order'), $container->get('woocommerce.logger.woocommerce'), $container->get('api.factory.capture')); }, 'wcgateway.oxxo-gateway' => static function (ContainerInterface $container): OXXOGateway { return new OXXOGateway($container->get('api.endpoint.order'), $container->get('api.factory.purchase-unit'), $container->get('api.factory.shipping-preference'), $container->get('wcgateway.builder.experience-context'), $container->get('wcgateway.asset_getter'), $container->get('wcgateway.transaction-url-provider'), $container->get('settings.environment'), $container->get('woocommerce.logger.woocommerce')); }, 'wcgateway.logging.is-enabled' => static function (ContainerInterface $container): bool { $settings_provider = $container->get('settings.settings-provider'); $is_enabled = $settings_provider->enable_logging(); if (!$is_enabled) { $state = $container->get('settings.connection-state'); assert($state instanceof ConnectionState); $is_enabled = $state->is_onboarding(); } /** * Whether the logging of the plugin errors/events is enabled. * * @param bool $is_enabled Whether the logging is enabled. */ return apply_filters('woocommerce_paypal_payments_is_logging_enabled', $is_enabled); }, 'wcgateway.use-place-order-button' => function (ContainerInterface $container): bool { /** * Whether to use the standard "Place order" button with redirect to PayPal instead of the PayPal smart buttons. */ return apply_filters('woocommerce_paypal_payments_use_place_order_button', \false); }, 'wcgateway.place-order-button-text' => function (ContainerInterface $container): string { /** * The text for the standard "Place order" button, when the "Place order" button mode is enabled. */ return apply_filters('woocommerce_paypal_payments_place_order_button_text', __('Proceed to PayPal', 'woocommerce-paypal-payments')); }, 'wcgateway.place-order-button-description' => function (ContainerInterface $container): string { /** * The text for additional description, when the "Place order" button mode is enabled. */ return apply_filters('woocommerce_paypal_payments_place_order_button_description', __('Clicking "Proceed to PayPal" will redirect you to PayPal to complete your purchase.', 'woocommerce-paypal-payments')); }, 'wcgateway.helper.vaulting-scope' => static function (ContainerInterface $container): bool { try { $token = $container->get('api.bearer')->bearer(); return $token->vaulting_available(); } catch (RuntimeException $exception) { return \false; } }, 'button.helper.vaulting-label' => static function (ContainerInterface $container): string { $vaulting_label = ''; if (!$container->get('wcgateway.helper.vaulting-scope')) { $vaulting_label .= sprintf( // translators: %1$s and %2$s are the opening and closing of HTML tag. __(' To use vaulting features, you must %1$senable vaulting on your account%2$s.', 'woocommerce-paypal-payments'), '', '' ); } $vaulting_label .= '
'; $vaulting_label .= sprintf( // translators: %1$s, %2$s, %3$s and %4$s are the opening and closing of HTML tag. __('This will disable all %1$sPay Later%2$s features and %3$sAlternative Payment Methods%4$s on your site.', 'woocommerce-paypal-payments'), '', '', '', '' ); $vaulting_label .= '
'; return $vaulting_label; }, 'wcgateway.settings.dcc-gateway-title.default' => static function (ContainerInterface $container): string { return did_action('init') ? __('Debit & Credit Cards', 'woocommerce-paypal-payments') : 'Debit & Credit Cards'; }, 'wcgateway.settings.card_billing_data_mode.default' => static function (ContainerInterface $container): string { return $container->get('api.shop.is-latin-america') ? \WooCommerce\PayPalCommerce\WcGateway\CardBillingMode::MINIMAL_INPUT : \WooCommerce\PayPalCommerce\WcGateway\CardBillingMode::USE_WC; }, 'wcgateway.settings.card_billing_data_mode' => static function (ContainerInterface $container): string { $settings = $container->get('wcgateway.settings'); assert($settings instanceof ContainerInterface); return $settings->has('card_billing_data_mode') ? (string) $settings->get('card_billing_data_mode') : $container->get('wcgateway.settings.card_billing_data_mode.default'); }, 'wcgateway.settings.allow_card_button_gateway.default' => static function (ContainerInterface $container): bool { return $container->get('api.shop.is-latin-america'); }, 'wcgateway.settings.allow_card_button_gateway' => static function (ContainerInterface $container): bool { $settings = $container->get('wcgateway.settings'); assert($settings instanceof ContainerInterface); return apply_filters('woocommerce_paypal_payments_enable_standard_card_button_gateway_settings', $settings->has('allow_card_button_gateway') ? (bool) $settings->get('allow_card_button_gateway') : $container->get('wcgateway.settings.allow_card_button_gateway.default')); }, 'wcgateway.settings.has_enabled_separate_button_gateways' => static function (ContainerInterface $container): bool { return (bool) $container->get('wcgateway.settings.allow_card_button_gateway'); }, 'wcgateway.settings.should-disable-fraudnet-checkbox' => static function (ContainerInterface $container): bool { $pui_helper = $container->get('wcgateway.pay-upon-invoice-helper'); assert($pui_helper instanceof PayUponInvoiceHelper); if ($pui_helper->is_pui_gateway_enabled()) { return \true; } return \false; }, 'wcgateway.settings.fraudnet-label' => static function (ContainerInterface $container): string { $label = sprintf( // translators: %1$s and %2$s are the opening and closing of HTML tag. __('Manage online risk with %1$sFraudNet%2$s.', 'woocommerce-paypal-payments'), '', '' ); if ('DE' === $container->get('api.shop.country')) { $label .= '%1$s %2$s
', $dcc_enabled ? $enabled_status_text : $disabled_status_text, $dcc_enabled ? '' : '', $dcc_enabled ? '_self' : '_blank', esc_url($dcc_button_url), esc_html($dcc_button_text)); }, 'wcgateway.settings.connection.reference-transactions-status-text' => static function (ContainerInterface $container): string { $environment = $container->get('settings.environment'); assert($environment instanceof Environment); $reference_transaction_status = $container->get('api.reference-transaction-status'); assert($reference_transaction_status instanceof ReferenceTransactionStatus); $enabled = $reference_transaction_status->reference_transaction_enabled(); $enabled_status_text = esc_html__('Status: Available', 'woocommerce-paypal-payments'); $disabled_status_text = esc_html__('Status: Not yet enabled', 'woocommerce-paypal-payments'); $button_text = $enabled ? esc_html__('Settings', 'woocommerce-paypal-payments') : esc_html__('Enable saving PayPal & Venmo', 'woocommerce-paypal-payments'); $enable_url = $environment->is_production() ? $container->get('wcgateway.enable-reference-transactions-url-live') : $container->get('wcgateway.enable-reference-transactions-url-sandbox'); $button_url = $enabled ? admin_url('admin.php?page=wc-settings&tab=checkout§ion=ppcp-gateway#field-paypal_saved_payments') : $enable_url; return sprintf('%1$s %2$s
', $enabled ? $enabled_status_text : $disabled_status_text, $enabled ? '' : '', $enabled ? '_self' : '_blank', esc_url($button_url), esc_html($button_text)); }, 'wcgateway.settings.connection.pui-status-text' => static function (ContainerInterface $container): string { $is_connected = $container->get('settings.flag.is-connected'); if (!$is_connected) { return ''; } $pui_product_status = $container->get('wcgateway.pay-upon-invoice-product-status'); assert($pui_product_status instanceof PayUponInvoiceProductStatus); $environment = $container->get('settings.environment'); assert($environment instanceof Environment); $pui_enabled = $pui_product_status->is_active(); $enabled_status_text = esc_html__('Status: Available', 'woocommerce-paypal-payments'); $disabled_status_text = esc_html__('Status: Not yet enabled', 'woocommerce-paypal-payments'); $enable_pui_url = $environment->is_production() ? $container->get('wcgateway.enable-pui-url-live') : $container->get('wcgateway.enable-pui-url-sandbox'); $pui_button_url = $pui_enabled ? admin_url('admin.php?page=wc-settings&tab=checkout§ion=ppcp-pay-upon-invoice-gateway') : $enable_pui_url; $pui_button_text = $pui_enabled ? esc_html__('Settings', 'woocommerce-paypal-payments') : esc_html__('Enable Pay upon Invoice', 'woocommerce-paypal-payments'); return sprintf('%1$s %2$s
', $pui_enabled ? $enabled_status_text : $disabled_status_text, $pui_enabled ? '' : '', $pui_enabled ? '_self' : '_blank', esc_url($pui_button_url), esc_html($pui_button_text)); }, 'installments.status-cache' => static function (ContainerInterface $container): Cache { return new Cache('ppcp-paypal-installments-status-cache'); }, 'wcgateway.button.locations' => static function (ContainerInterface $container): array { return array('product' => 'Single Product', 'cart' => 'Classic Cart', 'checkout' => 'Classic Checkout', 'mini-cart' => 'Mini Cart'); }, 'wcgateway.button.default-locations' => static function (ContainerInterface $container): array { $button_locations = $container->get('wcgateway.button.locations'); unset($button_locations['mini-cart']); return array_keys($button_locations); }, 'wcgateway.button.recommended-styling-notice' => static function (ContainerInterface $container): string { if (CartCheckoutDetector::has_block_checkout()) { $block_checkout_page_string_html = '' . __('Checkout block', 'woocommerce-paypal-payments') . ''; } else { $block_checkout_page_string_html = __('Checkout block', 'woocommerce-paypal-payments'); } $notice_content = sprintf( /* translators: %1$s: URL to the Checkout edit page. */ __('Important: TheCart & Express Checkout Smart Button Stylings may be controlled by the %1$s configuration.', 'woocommerce-paypal-payments'),
$block_checkout_page_string_html
);
return '' . $notice_content . '