Cómo crear una pasarela de pago de WooCommerce

Publicado: 2021-04-26

Crear pasarela de pago de WooCommerce ¿Desea crear una pasarela de pago de WooCommerce que acepte su opción de pago personalizada? En este tutorial, quiero mostrarle brevemente cómo crear una pasarela de pago en WooCommerce para permitir que sus clientes paguen a través de esta pasarela de pago personalizada de WooCommerce.

Es posible crear su propia pasarela de pago personalizada. Hay 2 formas de lograr esto. Puede usar un complemento o un código personalizado.

Sin embargo, es importante tener en cuenta que los complementos inflarán su sitio. Es por eso que usaremos un fragmento de código personalizado.

Discutiremos cada paso en detalle, para permitir que los novatos usen este método.

Cómo crear una pasarela de pago de WooCommerce

En esta publicación, crearemos un complemento para agregar una nueva pasarela de pago. Esto significa que necesita tener conocimientos de programación para hacer esto.

Extenderemos una clase de WooCommerce. WooCommerce nos proporciona varias clases básicas, como la pasarela de pago o las clases de correo electrónico.

Estas clases se pueden ampliar para agregar su propia funcionalidad, lo que ahorra tiempo en el desarrollo. También garantiza que su complemento funcione de manera estándar.

La clase WC_Payment_Gateway

La clase WC_Payment_Gateway amplía esto para brindarnos una estructura y funciones que serán específicas de los métodos de pago, como la capacidad de obtener los totales de los pedidos o la URL de la página de agradecimiento.

Podemos beneficiarnos de la estructura si extendemos esta clase. Esto manejará algunas funciones para nosotros, incluida la obtención del título y la descripción y su visualización en la página de pago.

Es importante tener en cuenta que todas las pasarelas de pago en WooCommerce comenzarán extendiendo la clase WC_Payment_Gateway.

Estos son los pasos que debe seguir:

1. Comprueba si WooCommerce está activo

Dado que ampliaremos una clase de WooCommerce, debemos verificar si está activa:

// Make sure WooCommerce is active

if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) return;

2. Construya su clase para niños

Para hacer esto, primero debemos envolver esto en una función de inicio y conectarlo a plugins_loaded más tarde que la prioridad predeterminada.

Después de verificar si WooCommerce está activo, cargamos nuestra clase después del núcleo de WooCommerce. Esto lo convierte en una verificación secundaria contra errores fatales.

También asegura que la clase WC_Payment_Gateway esté disponible. o ampliar una clase, seguirá el formato:

class My_Child_Class extiende The_Parent_Class { }

Así es como se verá esto en nuestro complemento:

/**

* Offline Payment Gateway

* @class       WC_Gateway_Offline

* @extends     WC_Payment_Gateway

* @version     1.0.0

* @package     WooCommerce/Classes/Payment

* @author      Njengah

*/

add_action( 'plugins_loaded', 'wc_offline_gateway_init', 11 );

function wc_offline_gateway_init() {

class WC_Gateway_Offline extends WC_Payment_Gateway {

// You plugin code starts here

} // end \WC_Gateway_Offline class

}

3. Construya la puerta de enlace

Ya que tenemos nuestra clase, necesitamos construir nuestra función __construct(). Esto asegura que las variables que necesitamos incluir en nuestra clase.

Aquí están las variables que se requieren:

  • $esto->id
  • $este->icono
  • $this->has_fields = verdadero o falso (bool)
  • $este->título_método
  • $this->method_description

Una vez que se han establecido las variables, el constructor necesitará algunas otras funciones.

Los campos del formulario se establecerán en la función init_form_fields(). Esta función agrega todos los campos de configuración, como habilitar la puerta de enlace y agregar un título.

$this->init_form_fields();
$this->init_settings();

4. Inicie los campos del formulario

En esta sección, crearemos una función init_form_fields() para configurar los campos de formulario para nuestra pasarela de pago.

La función no hace nada en la clase principal, pero se asegura de que no haya errores fatales si no la anula.

Sin embargo, le daremos alguna funcionalidad en nuestra clase secundaria.

Los campos básicos que debemos incluir son título y descripción habilitados.

/**

* Initialize Gateway Settings Form Fields

*/

public function init_form_fields() {

$this->form_fields = apply_filters( 'wc_offline_form_fields', array(

'enabled' => array(

'title'   => __( 'Enable/Disable', 'wc-gateway-offline' ),

'type'    => 'checkbox',

'label'   => __( 'Enable Offline Payment', 'wc-gateway-offline' ),

'default' => 'yes'

),

'title' => array(

'title'       => __( 'Title', 'wc-gateway-offline' ),

'type'        => 'text',

'description' => __( 'This controls the title for the payment method the customer sees during checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Offline Payment', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'description' => array(

'title'       => __( 'Description', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Payment method description that the customer will see on your checkout.', 'wc-gateway-offline' ),

'default'     => __( 'Please remit payment to Store Name upon pickup or delivery.', 'wc-gateway-offline' ),

'desc_tip'    => true,

),

'instructions' => array(

'title'       => __( 'Instructions', 'wc-gateway-offline' ),

'type'        => 'textarea',

'description' => __( 'Instructions that will be added to the thank you page and emails.', 'wc-gateway-offline' ),

'default'     => '',

'desc_tip'    => true,

),

) );

}

5. Procesar el Pago

Este es el apartado más importante a la hora de crear una pasarela de pago. Necesitamos agregar una función para manejar el procesamiento del pedido, diciéndole a WooCommerce qué estado debe tener y adónde van los clientes después de usarlo:

public function process_payment( $order_id ) {

$order = wc_get_order( $order_id );

// Mark as on-hold (we're awaiting the payment)

$order->update_status( 'on-hold', __( 'Awaiting offline payment', 'wc-gateway-offline' ) );

// Reduce stock levels

$order->reduce_order_stock();

// Remove cart

WC()->cart->empty_cart();

// Return thankyou redirect

return array(

'result'    => 'success',

'redirect'  => $this->get_return_url( $order )

);

}

6. Agregue la información de la pasarela de pago al pedido recibido y los correos electrónicos

La pasarela que hemos agregado requiere más instrucciones para completar el pago. Necesitamos asegurarnos de que estas instrucciones se muestren tanto en la página de agradecimiento como en los correos electrónicos de pedido, utilizando los métodos de código auxiliar de la página de gracias() y de las instrucciones de correo electrónico().

/**

* Output for the order received page.

*/

public function thankyou_page() {

if ( $this->instructions ) {

echo wpautop( wptexturize( $this->instructions ) );

}

}

/**

* Add content to the WC emails.

*

* @access public

* @param WC_Order $order

* @param bool $sent_to_admin

* @param bool $plain_text

*/

public function email_instructions( $order, $sent_to_admin, $plain_text = false ) {

if ( $this->instructions && ! $sent_to_admin && 'offline' === $order->payment_method && $order->has_status( 'on-hold' ) ) {

echo wpautop( wptexturize( $this->instructions ) ) . PHP_EOL;

}

}

7. Agregar a las pasarelas de pago de WooCommerce

El último paso es asegurarse de que la pasarela de pago esté disponible en WooCommerce > Configuración > Pago.

Usaremos el filtro woocommerce_payment_gateways que nos brinda la matriz de todas las puertas de enlace disponibles. Esto significa que agregaremos nuestra puerta de enlace a esta matriz y luego devolveremos la matriz con nuestra puerta de enlace agregada.

function wc_offline_add_to_gateways( $gateways ) {

$gateways[] = 'WC_Gateway_Offline';

return $gateways;

}

add_filter( 'woocommerce_payment_gateways', 'wc_offline_add_to_gateways' );

Conclusión

Eso es todo lo que necesita hacer para agregar una pasarela de pago personalizada. Simplemente hemos clonado la funcionalidad de la puerta de enlace "Cheque".

Si se está integrando con un procesador de pagos, es importante tener en cuenta que debe incorporar la publicación y recepción de información del procesador de pagos.

Si este proceso es demasiado complejo, puede contratar a un desarrollador calificado. Esto asegurará que no rompa su sitio.

Artículos similares

  1. Redirección de WooCommerce después de cerrar sesión [Guía definitiva]
  2. Cómo personalizar las páginas de productos de WooCommerce
  3. Cómo cambiar los puntos finales de pago WooCommerce