¿Cómo crear un complemento de pasarela de pago WooCommerce personalizado?
con WooCommerce Como una de las plataformas de comercio electrónico más populares, la capacidad de integrar una pasarela de pago personalizada puede diferenciar a su tienda de la competencia. Al desarrollar una solución de pago adaptada a sus necesidades comerciales específicas, puede optimizar el proceso de pago, aumentar la confianza del cliente y, en última instancia, aumentar las conversiones.
En WooCommerce, construir una pasarela de pago es tan simple como extender una clase de WooCommerce.
Y para ayudarlo a navegar el proceso con facilidad, cubriremos los pasos básicos necesarios para crear una pasarela de pago personalizada para WooCommerce.
Desde comprender la arquitectura de la pasarela de pago hasta implementar el código necesario, tendrá el conocimiento y las herramientas que necesita para tener éxito.
Entonces, sin más preámbulos, profundicemos.
Nota: Si no está familiarizado con el código/las plantillas y la resolución de posibles conflictos, comuníquese con nuestros WooExperts para obtener ayuda.
- ¿Cuándo debería elegir crear una pasarela de pago personalizada?
- ¿Cuáles son los requisitos previos para crear una puerta de enlace personalizada?
- ¿Cuáles son los archivos/clases/funciones necesarios que deben ampliarse/implementarse?
- ¿Cómo asegurarme de que la pasarela de pago funciona correctamente?
- conclusión
¿Cuándo debería elegir crear una pasarela de pago personalizada?
Se requerirá una pasarela de pago personalizada en los siguientes escenarios:
- Ha creado una nueva pasarela de pago como Raeta o PayPal y desea garantizar la compatibilidad con WooCommerce.
- Necesita una pasarela de pago existente para ser compatible con WooCommerce.
¿Cuáles son los requisitos previos para crear una puerta de enlace personalizada?
Para crear una pasarela de pago personalizada para WooCommerce, necesitará algunas cosas.
Por ejemplo, un servidor que procesa pagos, esto es independiente de WordPress.
Debe haber una pasarela de pago donde se procesarán los pagos reales.
Para entender mejor esto, tomemos el ejemplo de Raeta.
Stripe tiene un complemento de integración de pasarela de pago de Woocommerce. Sin embargo, para ver los pagos, Stripe proporciona Panel de administrador Este tablero no es parte del sitio web de WordPress utilizado, pero está disponible como un sitio separado.
¿Cuáles son los archivos/clases/funciones necesarios que deben ampliarse/implementarse?
Inicialización
Se debe agregar una pasarela de pago personalizada como un complemento separado.
Comencemos con la estructura que puede seguir para el complemento. Se recomienda tener la siguiente estructura:
- Una carpeta con un nombre de complemento.
- Carpeta de activos: Una carpeta que contiene todos los js/css/images necesarios para el complemento
- Incluye carpeta: Una carpeta para las clases que utilizará para implementar una pasarela de pago
- plugin-name.php: Los detalles del complemento y el archivo de inicialización.
Dentro plugin-name.phpincluir archivo de "incluye" fanterior que contiene el código de la pasarela de pago. Llamemos al archivo incluir-gateway-clase-extender.php。 Puede ver por el nombre del archivo que necesitamos ampliar algo que proporciona WooCommerce.
Necesitamos ampliar la clase WC_Payment_Gateway proporcionada por WooCommerce. Esto debe hacerse después de cargar los complementos. Esto es importante porque necesitamos que WooCommerce y sus clases estén disponibles antes de que podamos extender y usar sus clases.
Para hacer esto, use el enlace plugins_loaded de la siguiente manera:
add_action('plugins_loaded', 'wdm_init_gateway_class');
Luego, la función mencionada anteriormente debería extender la clase mencionada anteriormente:
función wdm_init_gateway_class() {
clase WDM_Custom_Payment_Gateway extiende WC_Payment_Gateway {}
}
Sin embargo, para que WooCommerce reconozca la pasarela de pago, también debemos informar a WooCommerce agregándola a la lista de pasarelas de pago. WooCommerce crea la lista y los complementos personalizados pueden usar un filtro para agregar a esta lista.
El filtro utilizado espasarelas_de_pago_de_woocommerce' y para agregar su pasarela de pago, se requerirá el siguiente código:
función wdm_add_payment_gateway_list($métodos)
{
$métodos[] = 'WDM_Custom_Payment_Gateway';
devolver $métodos;
}
add_filter('woocommerce_payment_gateways', 'wdm_add_payment_gateway_list');
Aquí “$métodos” es la matriz que contiene todos los métodos de pago.
A continuación, debemos comenzar a mostrar los detalles de la pasarela de pago. Primero comenzamos con el constructor de nuestra clase, que tendrá algunas variables requeridas. Su función __construct en WDM_Custom_Payment_Gateway debería ser algo como esto:
función __construir() {
$this->id = "wdm_custom_payment_gateway";
$this->method_title = __(“WDM Custom Payment Gateway”, 'wdm-custom-payment-gateway'); // título de la página de configuración del administrador
$this->method_description = __(“WDM Payment Gateway for WooCommerce”, 'wdm-custom-payment-gateway'); // Descripción para mostrar la página de configuración del administrador
$this->title = __(“WDM Custom Payment Gateway title”, 'wdm-custom-payment-gateway'); // para mostrar el valor predeterminado a los clientes en la página de pago
$este->icono = nulo;
$esto->init_form_fields();
$esto->init_settings();
}
Nota: ¿Te sientes abrumado? ¡Deja que nuestros expertos en Woo te lo pongan fácil!
Póngase en contacto con los expertos de Woo.
Los pasos realizados anteriormente mostrarán la puerta de enlace en Configuración de pago de WooCommerce:
Si habilita esta opción, debería comenzar a mostrarse en la página de pago de esta manera:
En el constructor de la clase teníamos dos funciones:
- init_form_fields()
- Esta función es donde puede definir los campos que deben mostrarse como configuración para su pasarela de pago personalizada.
- init_settings()
- Una vez definida la configuración, esta función le permite obtener la configuración y sus valores.
Finalmente, en el constructor necesitamos guardar la configuración agregando lo siguiente:
add_action( 'woocommerce_update_options_payment_gateways_' . $this->id, array( $this, 'process_admin_options' ) );
En este punto, puede definir los campos del formulario de esta manera:
función pública init_form_fields()
{
$this->form_fields = array(
'habilitado' => matriz(
'título' => __( 'Habilitar/Deshabilitar', 'wdm-custom-pay-gateway' ),
'tipo' => 'casilla de verificación',
'label' => __( 'Habilitar pago personalizado', 'wdm-custom-payment-gateway' ),
'predeterminado' => 'sí'
),
'título' => matriz(
'título' => __( 'Título', 'wdm-custom-pay-gateway' ),
'tipo' => 'texto',
'descripción' => __( 'Esto controla el título que el usuario ve durante el pago', 'wdm-custom-payment-gateway' ),
'predeterminado' => __( 'Pago personalizado', 'wdm-custom-payment-gateway' ),
'desc_tip' => verdadero,
),
'descripción' => matriz(
'título' => __( 'Mensaje del cliente', wdm-custom-payment-gateway),
'tipo' => 'área de texto',
'predeterminado' => "
)
);
}
En este punto, la configuración comenzará a aparecer en la página de configuración de pago para el administrador:
Sin embargo, si guarda estas configuraciones, no aparecerán en la página de pago para los clientes.
Para que los clientes los vean, se deben agregar las siguientes líneas después de la llamada init_settings() en el constructor:
$esto->init_settings();
$esto->titulo = $esto->get_option('titulo');
$esto->habilitado = $esto->get_option( 'habilitado');
$esto->descripción = $esto->get_option( 'descripción' );
Una vez hecho esto y guarde la configuración, los mensajes personalizados comenzarán a mostrarse a los clientes:
Habrá otras configuraciones que requerirá cada pasarela de pago según el uso, como las claves de autenticación, que deberán definirse en init_form_fields().
ahora la parte mas importante – debe asegurarse de que el pago se procese y el procesamiento se realice correctamente, debe agregar la función procesar_pago ($ order_id) a su clase.
La función debe hacer lo siguiente:
- Basado en order_id, actualizar el estado del pedido: esto depende del procesador de pagos. Si puede verificar el estado del pedido de inmediato, el pago esta completo() debe llamarse en lugar de simplemente actualizar el estado del pedido.
- Asegúrese de que el carrito esté vacío después de realizar el pedido.
- Indique el estado de la transacción, si fue exitosa o no. En caso de falla, se debe notificar a WooCommerce generando un error que se mostrará directamente en la página de pago.
El error se puede lanzar de la siguiente manera:
- wc_add_notice( __('Error de pago:', 'wdm-custom-payment-gateway') . $error_message, 'error');
devolver;
- Proporcione información sobre dónde se debe redirigir al usuario después de que se complete el procesamiento del pago
Esto será diferente para diferentes pasarelas de pago, pero una referencia de ejemplo es para la pasarela de verificación:
función proceso_pago($order_id) {
$woocommerce global;
$pedido = new WC_Order( $order_id );
// Marcar como retenido (en espera de verificación)
$order->update_status('en espera', __('Esperando el pago del cheque', 'woocommerce' ));
// Quitar el carrito
$woocommerce->carrito->empty_cart();
// Devolver, agradecer, redirigir
matriz de retorno (
'resultado' => 'éxito',
'redireccionar' => $esto->get_return_url( $pedido )
);
}
Esto completa la estructura básica de la pasarela de pago.
Lea también: Cómo desarrollar un plugin de Woocommerce desde cero
¿Cómo asegurarme de que la pasarela de pago funciona correctamente?
Los puntos que debe tener en cuenta para asegurarse de que el complemento de la puerta de enlace funcione son los siguientes:
- Proporcione configuraciones para las credenciales de la pasarela de pago para conectarse a una cuenta de procesador de pago
- Agregue el estado del pedido y las notas del pedido en función de la respuesta del procesador en process_payment()
- Si su pasarela de pago requiere que el cliente realice acciones adicionales para que se realice el pago, esta información se puede agregar a los correos electrónicos de detalles del pedido de WooCommerce.
- Se debe proporcionar la opción de recuperación si esta funcionalidad va a estar disponible desde el panel de control de WooCommerce.
- El reembolso por pagos fallidos es una característica que se puede proporcionar siempre que el procesador pueda manejar tales solicitudes.
- ¿Qué debe soportar la pasarela de pago? P.ej. suscripción/pago parcial, devolución de importes, notas de pedido, estado del pedido, reintento de pago, etc.
conclusión
¡Así que eso fue todo!
Espero que hayas encontrado útil este artículo.
Si se siente atascado en algún paso o necesita más claridad sobre cómo crear una pasarela de pago personalizada, no dude en preguntar en los comentarios a continuación o comuníquese con nuestros expertos de WooCommerce.
Después de gastar más 10+ años en el espacio de WooCommerce y trabaja en 300+ proyectos, sabemos exactamente cómo ayudarte.
The post ¿Cómo crear un complemento personalizado de pasarela de pago de WooCommerce? apareció primero en WisdmLabs.
Deja una respuesta