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 : 918 - Veces Leidas
Compartir Articulo:

Artículos Relacionados

×

¡Apóyame suscribiéndote a mi canal!

Tutoriales sobre Diseño Web