<?php /** * The Googlepay module extensions. * * @package WooCommerce\PayPalCommerce\Googlepay */ declare(strict_types=1); namespace WooCommerce\PayPalCommerce\Googlepay; use WooCommerce\PayPalCommerce\Googlepay\Helper\PropertiesDictionary; use WooCommerce\PayPalCommerce\Onboarding\State; use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface; use WooCommerce\PayPalCommerce\WcGateway\Helper\DisplayManager; use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings; return array( 'wcgateway.settings.fields' => function ( array $fields, ContainerInterface $container ): array { // Used in various places to mark fields for the preview button. $apm_name = 'GooglePay'; // Eligibility check. if ( ! $container->has( 'googlepay.eligible' ) || ! $container->get( 'googlepay.eligible' ) ) { return $fields; } $is_available = $container->get( 'googlepay.available' ); $is_referral = $container->get( 'googlepay.is_referral' ); $insert_after = function( array $array, string $key, array $new ): array { $keys = array_keys( $array ); $index = array_search( $key, $keys, true ); $pos = false === $index ? count( $array ) : $index + 1; return array_merge( array_slice( $array, 0, $pos ), $new, array_slice( $array, $pos ) ); }; $display_manager = $container->get( 'wcgateway.display-manager' ); assert( $display_manager instanceof DisplayManager ); $module_url = $container->get( 'googlepay.url' ); // Connection tab fields. $fields = $insert_after( $fields, 'ppcp_reference_transactions_status', array( 'googlepay_status' => array( 'title' => __( 'Google Pay Payments', 'woocommerce-paypal-payments' ), 'type' => 'ppcp-text', 'text' => $container->get( 'googlepay.settings.connection.status-text' ), 'screens' => array( State::STATE_ONBOARDED, ), 'requirements' => array(), 'gateway' => Settings::CONNECTION_TAB_ID, ), ) ); if ( ! $is_available && $is_referral ) { $connection_url = admin_url( 'admin.php?page=wc-settings&tab=checkout&section=ppcp-gateway&ppcp-tab=ppcp-connection#field-credentials_feature_onboarding_heading' ); $connection_link = '<a href="' . $connection_url . '" style="pointer-events: auto">'; return $insert_after( $fields, 'digital_wallet_heading', array( 'googlepay_button_enabled' => array( 'title' => __( 'Google Pay Button', 'woocommerce-paypal-payments' ), 'title_html' => sprintf( '<img src="%sassets/images/googlepay.svg" alt="%s" style="max-width: 150px; max-height: 45px;" />', $module_url, __( 'Google Pay', 'woocommerce-paypal-payments' ) ), 'type' => 'checkbox', 'class' => array( 'ppcp-grayed-out-text' ), 'input_class' => array( 'ppcp-disabled-checkbox' ), 'label' => __( 'Enable Google Pay button', 'woocommerce-paypal-payments' ) . '<p class="description">' . sprintf( // translators: %1$s and %2$s are the opening and closing of HTML <a> tag. __( 'Your PayPal account %1$srequires additional permissions%2$s to enable Google Pay.', 'woocommerce-paypal-payments' ), $connection_link, '</a>' ) . '</p>', 'default' => 'yes', 'screens' => array( State::STATE_ONBOARDED ), 'gateway' => 'dcc', 'requirements' => array(), 'custom_attributes' => array( 'data-ppcp-display' => wp_json_encode( array( $display_manager ->rule() ->condition_is_true( false ) ->action_enable( 'googlepay_button_enabled' ) ->to_array(), ) ), ), 'classes' => array( 'ppcp-valign-label-middle', 'ppcp-align-label-center' ), ), ) ); } // Standard Payments tab fields. return $insert_after( $fields, 'digital_wallet_heading', array( 'googlepay_button_enabled' => array( 'title' => __( 'Google Pay Button', 'woocommerce-paypal-payments' ), 'title_html' => sprintf( '<img src="%sassets/images/googlepay.svg" alt="%s" style="max-width: 150px; max-height: 45px;" />', $module_url, __( 'Google Pay', 'woocommerce-paypal-payments' ) ), 'type' => 'checkbox', 'label' => __( 'Enable Google Pay button', 'woocommerce-paypal-payments' ) . '<p class="description">' . sprintf( // translators: %1$s and %2$s are the opening and closing of HTML <a> tag. __( 'Buyers can use %1$sGoogle Pay%2$s to make payments on the web using a web browser.', 'woocommerce-paypal-payments' ), '<a href="https://woocommerce.com/document/woocommerce-paypal-payments/#google-pay" target="_blank">', '</a>' ) . '</p>', 'default' => 'yes', 'screens' => array( State::STATE_ONBOARDED ), 'gateway' => 'dcc', 'requirements' => array(), 'custom_attributes' => array( 'data-ppcp-display' => wp_json_encode( array( $display_manager ->rule() ->condition_element( 'googlepay_button_enabled', '1' ) ->action_visible( 'googlepay_button_type' ) ->action_visible( 'googlepay_button_color' ) ->action_visible( 'googlepay_button_language' ) ->action_visible( 'googlepay_button_shipping_enabled' ) ->action_visible( 'googlepay_button_preview' ) ->action_class( 'googlepay_button_enabled', 'active' ) ->to_array(), ) ), 'data-ppcp-apm-name' => $apm_name, 'data-ppcp-field-name' => 'is_enabled', ), 'classes' => array( 'ppcp-valign-label-middle', 'ppcp-align-label-center' ), ), 'googlepay_button_type' => array( 'title' => __( 'Button Label', 'woocommerce-paypal-payments' ), 'type' => 'select', 'desc_tip' => true, 'description' => __( 'This controls the label of the Google Pay button.', 'woocommerce-paypal-payments' ), 'classes' => array( 'ppcp-field-indent' ), 'class' => array(), 'input_class' => array( 'wc-enhanced-select' ), 'default' => 'plain', 'options' => PropertiesDictionary::button_types(), 'screens' => array( State::STATE_ONBOARDED ), 'gateway' => 'dcc', 'requirements' => array(), 'custom_attributes' => array( 'data-ppcp-apm-name' => $apm_name, 'data-ppcp-field-name' => 'type', ), ), 'googlepay_button_color' => array( 'title' => __( 'Button Color', 'woocommerce-paypal-payments' ), 'type' => 'select', 'desc_tip' => true, 'description' => __( 'Google Pay payment buttons exist in two styles: dark and light. To provide contrast, use dark buttons on light backgrounds and light buttons on dark or colorful backgrounds.', 'woocommerce-paypal-payments' ), 'label' => '', 'input_class' => array( 'wc-enhanced-select' ), 'classes' => array( 'ppcp-field-indent' ), 'class' => array(), 'default' => 'black', 'options' => PropertiesDictionary::button_colors(), 'screens' => array( State::STATE_ONBOARDED ), 'gateway' => 'dcc', 'requirements' => array(), 'custom_attributes' => array( 'data-ppcp-apm-name' => $apm_name, 'data-ppcp-field-name' => 'color', ), ), 'googlepay_button_language' => array( 'title' => __( 'Button Language', 'woocommerce-paypal-payments' ), 'type' => 'select', 'desc_tip' => true, 'description' => __( 'The language and region used for the displayed Google Pay button. The default value is the current language and region setting in a browser.', 'woocommerce-paypal-payments' ), 'classes' => array( 'ppcp-field-indent' ), 'class' => array(), 'input_class' => array( 'wc-enhanced-select' ), 'default' => 'en', 'options' => PropertiesDictionary::button_languages(), 'screens' => array( State::STATE_ONBOARDED ), 'gateway' => 'dcc', 'requirements' => array(), 'custom_attributes' => array( 'data-ppcp-apm-name' => $apm_name, 'data-ppcp-field-name' => 'language', ), ), 'googlepay_button_shipping_enabled' => array( 'title' => __( 'Shipping Callback', 'woocommerce-paypal-payments' ), 'type' => 'checkbox', 'desc_tip' => true, 'description' => __( 'Synchronizes your available shipping options with Google Pay. Enabling this may impact the buyer experience.', 'woocommerce-paypal-payments' ), 'classes' => array( 'ppcp-field-indent ppcp' ), 'label' => __( 'Enable Google Pay shipping callback', 'woocommerce-paypal-payments' ), 'default' => 'no', 'screens' => array( State::STATE_ONBOARDED ), 'gateway' => 'dcc', 'requirements' => array(), ), 'googlepay_button_preview' => array( 'type' => 'ppcp-preview', 'preview' => array( 'id' => 'ppcp' . $apm_name . 'ButtonPreview', 'type' => 'button', 'message' => __( 'Button Styling Preview', 'woocommerce-paypal-payments' ), 'apm' => $apm_name, 'single' => true, ), 'screens' => array( State::STATE_ONBOARDED, ), 'requirements' => array(), 'gateway' => 'dcc', ), ) ); }, );