Cómo crear una pasarela de pago de WooCommerce
Publicado: 2021-04-26¿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
- Redirección de WooCommerce después del pago: redirección a la página de agradecimiento personalizada
- Redirección de WooCommerce después de cerrar sesión [Guía definitiva]
- Cómo personalizar las páginas de productos de WooCommerce
- Cómo configurar el envío gratuito con un gasto mínimo en WooCommerce
- Cómo cambiar los iconos de la pasarela de pago de WooCommerce
- Cómo configurar el pago de Bitcoin de WooCommerce
- Cómo agregar la página de pago de facturas de WooCommerce
- Cómo agregar una clase de navegación activa basada en URL
- Cómo integrar Stripe con WooCommerce
- Cómo quitar el botón de pago WooCommerce
- Cómo enviar a Mpesa WooCommerce Payment de forma gratuita
- Cómo ocultar el icono de PayPal en la página de pago de WooCommerce
- Cómo agregar iconos de pago de WooCommerce en el pie de página [HTML]
- Cómo cambiar el icono de PayPal en la página de pago de WooCommerce
- Cómo agregar búsqueda a la página de la tienda en WooCommerce
- Cómo agregar lista de deseos en WooCommerce
- Cómo verificar si el usuario ha iniciado sesión en WordPress
- Cómo eliminar las opciones de pago de WooCommerce del pago
- Cómo borrar el carrito al cerrar sesión en WooCommerce
- Cómo cambiar los puntos finales de pago WooCommerce