geno/wp-content/plugins/checkout-plugins-stripe-woo/gateway/stripe/bancontact.php

181 lines
3.8 KiB
PHP
Raw Normal View History

2024-02-01 17:24:18 +05:30
<?php
/**
* Bancontact Gateway
*
* @package checkout-plugins-stripe-woo
* @since 1.3.0
*/
namespace CPSW\Gateway\Stripe;
use CPSW\Inc\Helper;
use CPSW\Inc\Traits\Get_Instance;
use CPSW\Gateway\Local_Gateway;
/**
* Bancontact
*
* @since 1.3.0
*/
class Bancontact extends Local_Gateway {
use Get_Instance;
/**
* Gateway id
*
* @var string
*/
public $id = 'cpsw_bancontact';
/**
* Payment method types
*
* @var string
*/
public $payment_method_types = 'bancontact';
/**
* Constructor
*
* @since 1.3.0
*/
public function __construct() {
parent::__construct();
$this->method_title = __( 'Bancontact', 'checkout-plugins-stripe-woo' );
$this->method_description = $this->method_description();
$this->has_fields = true;
$this->init_supports();
$this->init_form_fields();
$this->init_settings();
// get_option should be called after init_form_fields().
$this->title = $this->get_option( 'title' );
$this->description = $this->get_option( 'description' );
$this->order_button_text = $this->get_option( 'order_button_text' );
}
/**
* Description for Bancontact gateway
*
* @since 1.3.0
*
* @return string
*/
public function method_description() {
$payment_description = $this->payment_description();
return sprintf(
/* translators: %1$s: Break, %2$s: Gateway appear message, %3$s: Break, %4$s: Gateway appear message currency wise, %4$s: HTML entities */
__( 'Accept payments using Bancontact. %1$s %2$s', 'checkout-plugins-stripe-woo' ),
'<br/>',
$payment_description
);
}
/**
* Returns all supported currencies for this payment method.
*
* @since 1.3.0
*
* @return array
*/
public function get_supported_currency() {
return apply_filters(
'cpsw_bancontact_supported_currencies',
[
'EUR',
]
);
}
/**
* Add more gateway form fields
*
* @since 1.3.0
*
* @return array
*/
public function get_default_settings() {
$local_settings = parent::get_default_settings();
$local_settings['allowed_countries']['default'] = 'specific';
$local_settings['specific_countries']['default'] = [ 'BE' ];
return $local_settings;
}
/**
* Checks whether this gateway is available.
*
* @since 1.3.0
*
* @return boolean
*/
public function is_available() {
if ( ! in_array( $this->get_currency(), $this->get_supported_currency(), true ) ) {
return false;
}
return parent::is_available();
}
/**
* Creates markup for payment form for card payments
*
* @since 1.3.0
*
* @return void
*/
public function payment_fields() {
global $wp;
$user = wp_get_current_user();
$total = WC()->cart->total;
// If paying from order, we need to get total from order not cart.
if ( isset( $_GET['pay_for_order'] ) && ! empty( $_GET['key'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$order = wc_get_order( wc_clean( $wp->query_vars['order-pay'] ) );
$total = $order->get_total();
}
if ( is_add_payment_method_page() ) {
$pay_button_text = __( 'Add Payment', 'checkout-plugins-stripe-woo' );
$total = '';
} else {
$pay_button_text = '';
}
/**
* Action before payment field.
*
* @since 1.3.0
*/
do_action( $this->id . '_before_payment_field_checkout' );
echo '<div
id="cpsw-bancontact-payment-data"
data-amount="' . esc_attr( $total ) . '"
data-currency="' . esc_attr( strtolower( $this->get_currency() ) ) . '">';
if ( $this->description ) {
echo wp_kses_post( $this->description );
}
echo '</div>';
if ( 'test' === Helper::get_payment_mode() ) {
echo '<div class="cpsw_stripe_test_description">';
echo wp_kses_post( $this->get_test_mode_description() );
echo '</div>';
}
/**
* Action after payment field.
*
* @since 1.3.0
*/
do_action( $this->id . '_after_payment_field_checkout' );
}
}