JezK
Edit File: Cash_App_Pay_Blocks_Handler.php
<?php /** * WooCommerce Square * * This source file is subject to the GNU General Public License v3.0 * that is bundled with this package in the file license.txt. * It is also available through the world-wide-web at this URL: * http://www.gnu.org/licenses/gpl-3.0.html GNU General Public License v3.0 or later * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@woocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade WooCommerce Square to newer * versions in the future. If you wish to customize WooCommerce Square for your * needs please refer to https://docs.woocommerce.com/document/woocommerce-square/ */ namespace WooCommerce\Square\Gateway; defined( 'ABSPATH' ) || exit; use Automattic\WooCommerce\Blocks\Payments\Integrations\AbstractPaymentMethodType; use WooCommerce\Square\Plugin; use WooCommerce\Square\Utilities\Order_Ajax_Authorization; class Cash_App_Pay_Blocks_Handler extends AbstractPaymentMethodType { /** * @var string $name */ protected $name = Plugin::CASH_APP_PAY_GATEWAY_ID; /** * @var Plugin $plugin */ protected $plugin = null; /** * @var Cash_App_Pay_Gateway $gateway */ protected $gateway = null; /** * Init Square Cash App Pay Cart and Checkout Blocks handler class * * @since 4.5.0 */ public function __construct() { $this->plugin = wc_square(); } /** * Initializes the payment method type. */ public function initialize() { $this->settings = get_option( 'woocommerce_square_cash_app_pay_settings', array() ); } /** * Returns if this payment method should be active. If false, the scripts will not be enqueued. * * @return boolean */ public function is_active() { return ! empty( $this->get_gateway() ) ? $this->get_gateway()->is_configured() : false; } /** * Register scripts * * @return array */ public function get_payment_method_script_handles() { $asset_path = $this->plugin->get_plugin_path() . '/build/cash-app-pay.asset.php'; $version = Plugin::VERSION; $dependencies = array(); if ( file_exists( $asset_path ) ) { $asset = require $asset_path; $version = is_array( $asset ) && isset( $asset['version'] ) ? $asset['version'] : $version; $dependencies = is_array( $asset ) && isset( $asset['dependencies'] ) ? $asset['dependencies'] : $dependencies; } wp_register_script( 'wc-square-cash-app-pay-blocks-integration', $this->plugin->get_plugin_url() . '/build/cash-app-pay.js', $dependencies, $version, true ); wp_set_script_translations( 'wc-square-cash-app-pay-blocks-integration', 'woocommerce-square' ); return array( 'wc-square-cash-app-pay-blocks-integration' ); } /** * Returns an array of key=>value pairs of data made available to the payment methods script. * * @since 4.5.0 * @return array */ public function get_payment_method_data() { if ( ! $this->get_gateway() ) { return array(); } return array( 'title' => $this->get_title(), 'description' => $this->get_description(), 'application_id' => $this->get_gateway()->get_application_id(), 'location_id' => $this->plugin->get_settings_handler()->get_location_id(), 'is_sandbox' => $this->plugin->get_settings_handler()->is_sandbox(), 'logging_enabled' => $this->get_gateway()->debug_checkout(), 'general_error' => __( 'An error occurred, please try again or try an alternate form of payment.', 'woocommerce-square' ), 'supports' => $this->get_supported_features(), 'show_saved_cards' => false, 'show_save_option' => false, 'is_pay_for_order_page' => is_wc_endpoint_url( 'order-pay' ), 'ajax_url' => \WC_AJAX::get_endpoint( '%%endpoint%%' ), 'payment_request_nonce' => wp_create_nonce( 'wc-cash-app-get-payment-request' ), 'continuation_session_nonce' => wp_create_nonce( 'wc-cash-app-set-continuation-session' ), 'checkout_logging' => $this->get_gateway()->debug_checkout(), 'order_id' => absint( get_query_var( 'order-pay' ) ), 'order_key' => Order_Ajax_Authorization::get_order_key_for_frontend_localization(), 'gateway_id_dasherized' => $this->get_gateway()->get_id_dasherized(), 'button_styles' => $this->get_gateway()->get_button_styles(), 'is_continuation' => $this->get_gateway()->is_cash_app_pay_continuation(), 'reference_id' => WC()->cart ? WC()->cart->get_cart_hash() : '', ); } /** * Helper function to get title of Square Cash App gateway to be displayed as Label on checkout block. * Defaults to "Cash App Pay" * * @since 5.2.0 * @return string */ private function get_title() { return ! empty( $this->get_setting( 'title' ) ) ? $this->get_setting( 'title' ) : esc_html__( 'Cash App Pay', 'woocommerce-square' ); } /** * Helper function to get description of Square Cash App gateway to be displayed on checkout block. * Defaults to "Pay securely using Cash App Pay." * * @since 5.2.0 * @return string */ private function get_description() { $description = $this->get_setting( 'description', null ); return null === $description ? esc_html__( 'Pay securely using Cash App Pay.', 'woocommerce-square' ) : $description; } /** * Get a list of features supported by Square * * @since 4.5.0 * @return array */ public function get_supported_features() { $gateway = $this->get_gateway(); return ! empty( $gateway ) ? array_filter( $gateway->supports, array( $gateway, 'supports' ) ) : array(); } /** * Helper function to get and store an instance of the Square gateway * * @since 4.5.0 * @return Cash_App_Pay_Gateway|null */ private function get_gateway() { if ( empty( $this->gateway ) ) { $this->gateway = $this->plugin->get_gateway( Plugin::CASH_APP_PAY_GATEWAY_ID ); } return $this->gateway; } }