WooCommerce : Metodo de pago personalizado
Fecha Publicación:
04 de Mayo de 2024
Fecha Modificación:
04 de Mayo de 2024
https://rudrastyh.com/woocommerce/payment-gateway-plugin.html
https://stackoverflow.com/questions/56802907/woocommerce-custom-payment-method
Buscar en google con add_filter( 'woocommerce_payment_gateways'
Las pasarelas de pago son clases de PHP que amplían WC_Payment_Gateway, aquí está la base de clases
<?php
/*
* Plugin Name: WooCommerce Custom Payment Gateway
* Plugin URI: https://rudrastyh.com/woocommerce/payment-gateway-plugin.html
* Description: Take credit card payments on your store.
* Author: Misha Rudrastyh
* Author URI: http://rudrastyh.com
* Version: 1.0.1
*/
/*
→ Paso 1
El filtro "woocommerce_payment_gateways" le permite agregar pasarelas
de pago personalizadas a woocommerce; en este paso Definimos nuestra clase
*/
add_filter( 'woocommerce_payment_gateways', 'misha_add_gateway_class' );
function misha_add_gateway_class( $gateways ) {
$gateways[] = 'WC_Misha_Gateway'; // Definimos nuestra clase aqui
return $gateways;
}
/*
→ Paso 2
A continuación, crea una clase que amplía(extends) la clase "WC_Payment_Gateway".
En su constructor, debes configurar la identificación única,
el título y la descripción de tu pasarela de pago.
También debe inicializar los campos del formulario
y la configuración de la pasarela de pago.
La clase de pasarela de pago debe definirse en una función
llamada mediante el hook plugins_loaded
*/
add_action( 'plugins_loaded', 'misha_init_gateway_class' );
function misha_init_gateway_class() {
// hacemos referencia a la clase que definimos en el paso 1
class WC_Misha_Gateway extends WC_Payment_Gateway {
/**
* Class constructor, more about it in Step 3
*/
public function __construct() {
// identificación única de la pasarela de pago
$this->id = 'misha';
// URL del ícono que se mostrará en la página de pago cerca del nombre
$this->icon = '';
// Activa o desactiva - define si se mostrara en la página de pago de los usuarios
$this->has_fields = true;
$this->method_title = 'Titulo en la pestaña de pagos de WooCommerce';
$this->method_description = 'Description en la pestaña de pagos de WooCommerce va debajo de method_title';
// gateways can support subscriptions, refunds, saved payment methods,
// but in this tutorial we begin with simple payments
$this->supports = array(
'products'
);
// Method with all the options fields
$this->init_form_fields();
// Load the settings.
$this->init_settings();
$this->title = $this->get_option( 'title' );
$this->description = $this->get_option( 'description' );
$this->enabled = $this->get_option( 'enabled' );
// This action hook saves the settings
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
// We need custom JavaScript to obtain a token
add_action( 'wp_enqueue_scripts', array( $this, 'payment_scripts' ) );
// You can also register a webhook here
// add_action( 'woocommerce_api_{webhook name}', array( $this, 'webhook' ) );
} // Fin Constructor
/**
* Plugin options, we deal with it in Step 3 too
*/
public function init_form_fields(){
$this->form_fields = array(
'enabled' => array(
'title' => 'Enable/Disable',
'label' => 'Enable Misha Gateway',
'type' => 'checkbox',
'description' => '',
'default' => 'no'
),
'title' => array(
'title' => 'Title',
'type' => 'text',
'description' => 'This controls the title which the user sees during checkout.',
'default' => 'Credit Card',
'desc_tip' => true,
),
'description' => array(
'title' => 'Description',
'type' => 'textarea',
'description' => 'This controls the description which the user sees during checkout.',
'default' => 'Pay with your credit card via our super-cool payment gateway.',
),
);
} // Fin init_form_fields
/**
* You will need it if you want your custom credit card form, Step 4 is about it
*/
public function payment_fields() {
if( $this->description ) {
// you can instructions for test mode, I mean test card numbers etc.
if( $this->testmode ) {
$this->description .= ' TEST MODE ENABLED. In test mode, you can use the card numbers listed in <a href="#">documentation</a>.';
$this->description = trim( $this->description );
}
// display the description with <p> tags etc.
echo wpautop( wp_kses_post( $this->description ) );
}
// I recommend to use inique IDs, because other gateways could already use #ccNo, #expdate, #cvc
// echo '<div class="form-row form-row-wide">
<label>Card Number 2 <span class="required">*</span></label>
<input id="misha_ccNo" type="text" autocomplete="off">
</div>
<div class="form-row form-row-first">
<label>Expiry Date <span class="required">*</span></label>
<input id="misha_expdate" type="text" autocomplete="off" placeholder="MM / YY">
</div>
<div class="form-row form-row-last">
<label>Card Code (CVC) <span class="required">*</span></label>
<input id="misha_cvv" type="password" autocomplete="off" placeholder="CVC">
</div>
<div class="clear"></div>';
echo '<div class="clear"></div></fieldset>';
} //Fin function payment_fields
}
}
?>
Articulo : 917 - Veces Leidas