name = WC_Payment_Gateway_WCPay::GATEWAY_ID; $this->gateway = WC_Payments::get_gateway(); $this->wc_payments_checkout = WC_Payments::get_wc_payments_checkout(); } /** * Checks whether the gateway is active. * * @return boolean True when active. */ public function is_active() { return $this->gateway->is_available(); } /** * Defines all scripts, necessary for the payment method. * * @return string[] A list of script handles. */ public function get_payment_method_script_handles() { if ( ( is_cart() || is_checkout() || is_product() || has_block( 'woocommerce/checkout' ) || has_block( 'woocommerce/cart' ) || is_admin() ) ) { WC_Payments_Utils::enqueue_style( 'wc-blocks-checkout-style', plugins_url( 'dist/blocks-checkout.css', WCPAY_PLUGIN_FILE ), [], WC_Payments::get_file_version( 'dist/checkout.css' ), 'all' ); } wp_register_script( 'stripe', 'https://js.stripe.com/v3/', [], '3.0', true ); WC_Payments::register_script_with_dependencies( 'WCPAY_BLOCKS_CHECKOUT', 'dist/blocks-checkout', [ 'stripe' ] ); wp_set_script_translations( 'WCPAY_BLOCKS_CHECKOUT', 'woocommerce-payments' ); wp_add_inline_script( 'WCPAY_BLOCKS_CHECKOUT', 'var wcBlocksCheckoutData = ' . wp_json_encode( [ 'amount' => WC()->cart ? WC()->cart->get_total( '' ) : 0, 'currency' => get_woocommerce_currency(), 'storeCountry' => WC()->countries->get_base_country(), 'billingCountry' => WC()->customer ? WC()->customer->get_billing_country() : 'US', ] ) . ';', 'before' ); Fraud_Prevention_Service::maybe_append_fraud_prevention_token(); return [ 'WCPAY_BLOCKS_CHECKOUT' ]; } /** * Loads the data about the gateway, which will be exposed in JavaScript. * * @return array An associative array, containing all necessary values. */ public function get_payment_method_data() { $is_woopay_eligible = WC_Payments_Features::is_woopay_eligible(); // Feature flag. $is_woopay_enabled = 'yes' === $this->gateway->get_option( 'platform_checkout', 'no' ); $woopay_config = []; if ( $is_woopay_eligible && $is_woopay_enabled ) { $woopay_config = [ 'woopayHost' => WooPay_Utilities::get_woopay_url(), ]; } return array_merge( [ 'title' => $this->gateway->get_option( 'title', '' ), 'description' => $this->gateway->get_option( 'description', '' ), 'is_admin' => is_admin(), // Used to display payment method preview in wp-admin. ], $woopay_config, $this->wc_payments_checkout->get_payment_fields_js_config() ); } }