mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-08-31 06:52:50 +08:00
256 lines
9.7 KiB
PHP
256 lines
9.7 KiB
PHP
<?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§ion=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',
|
|
),
|
|
)
|
|
);
|
|
},
|
|
|
|
);
|