Gravity Forms, no me canso de decirlo, es el mejor plugin de formularios para WordPress, sin lugar a dudas. Incluso permite recibir pagos, estableciendo la cantidad a pagar en función de la selección hecha en un formulario. Pues bien, vamos a ver cómo generar un pago con Redsys desde un formulario de Gravity Forms.
Porque, a día de hoy, Gravity Forms no dispone de un add-on oficial para el pago con tarjeta del sistema Redsys (los add-ons oficiales disponibles para esto se limitan a pagos mediante PayPal y Stripe), pero eso no quiere decir que no se pueda hacer. Veamos cómo.
Tabla de contenidos
Generar un pago a través de un formulario con Gravity Forms
Una de las características más interesantes de Gravity Forms es que permite asignar valores a los campos, incluyendo el asignar valores distintos a las diferentes opciones de un selector o un grupo de casillas. Es más, permite realizar operaciones con estos valores para generar un resultado final.
Eso permite calcular dinámicamente cantidades de pago dentro de un formulario, en función de los campos y selecciones rellenados por el usuario. Voy a poner un ejemplo que además usaré para después implementarlo, creo que es la forma más fácil de visualizar la importancia de esta funcionalidad.
Cobro de una reserva con Gravity Forms
Pongamos por caso (por poner un ejemplo de entre las múltiples aplicaciones posibles) que tienes una web de actividades de montaña, bastante sencilla, sin ecommerce; pero quieres poder cobrar online las actividades (o las reservas) a tus clientes.
Tienes varias opciones para ello:
Pero el problema es que ninguno de estos sistemas permite generar la cantidad a pagar de forma dinámica y en tiempo real en función de una serie de opciones. Y ahí es donde entra Gravity Forms.
Generar la cantidad a pagar mediante un formulario
La idea es presentar al usuario un formulario creado con Gravity Forms que permita seleccionar al usuario las opciones que quiere y que sea el propio formulario el que calcule la cantidad a pagar en función de estas opciones, y genere el pago en tiempo real.
Pues, como decía más arriba, se puede. Gravity Forms ya tiene entre sus add-ons soluciones para implementar esto con PayPal y con Stripe.
Pero obviamente, si ya tienes un TPV de Redsys querrás usar esta última opción, ya que las comisiones son más bajas y muchas veces el banco impone una comisión extra si no se alcanza un mínimo de transacciones, por lo que lo ideal es recibir el mayor número de pagos con este sistema.
Pues bien, a pesar de que no hay un add-on de Gravity Forms para Redsys, podemos hacerlo, y vamos a ver cómo. Siguiendo con nuestro ejemplo, digamos que en nuestra web de actividades de montaña ofrecemos algunos cursos:
- Curso de marcha nórdica
- Curso de vias ferratas
- Curso de escalada
Cada curso tiene, por supuesto, un precio diferente. Además, paralelamente a los cursos se pueden contratar una serie de servicios extra que aumentan el precio, como el alquiler del material de montaña, el alquiler del material de seguridad o incluir la comida.
Así que vamos a poner nuestra página de reservas online con un formulario pidiendo al cliente los datos, la selección del curso que desea realizar y los extras que quiere contratar. Gravity Forms se encargará de calcular la cantidad que tiene que pagar se generará un pago con esa cantidad y todos los detalles.
Veamos cómo hacer esto. Si lo prefieres, al final tienes un vídeo donde podrás verlo paso a paso siguiendo nuestro ejemplo.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
Pago mediante Redsys según el precio calculado por Gravity Forms
Para esto vamos a usar éste plugin que nos permite insertar un botón de pago mediante Redsys:
Entre otras funcionalidades, este plugin permite recibir los datos (cantidad a pagar, concepto y otros adicionales) mediante la URL, datos que el plugin recibe y utiliza para generar un botón con el pago ya configurado (los datos, aunque se reciban mediante la URL, no quedan visibles). Esto permite enviar al cliente un enlace que ya incluya la información del pago.
Por su parte, Gravity Forms permite enviar los datos recogidos por el formulario a otra URL a través de una serie de parámetros. Esto permite, entre otras cosas y como ya expliqué en su momento, enviar datos de un formulario a otro:
Pues bien, se trata de utilizar estas funcionalidades de ambos plugins para, haciéndolas trabajar en conjunto, hacer que Gravity Forms calcule la cantidad y notifique al botón de Redsys qué opciones ha seleccionado el usuario y cuánto tiene que pagar por ellas.
El plugin del botón Redsys registrará las opciones, generará el pago con TPV y enviará notificaciones con todos los detalles cuando éste se haya completado. Y es más sencillo de lo que parece.
Calcular el precio con Gravity Forms
Lo primero es, como no, crear nuestro formulario. Tenemos, cómo no, que solicitar del usuario los datos personales que necesitemos de él, pero también tenemos que crear las opciones que influirán en la cantidad a pagar (en nuestro ejemplo, los cursos y los extras) y asignarles un precio.
Por último, diremos a Gravity Forms cómo calcular el precio final en función de las opciones seleccionadas (para ello podemos realizar operaciones matemáticas) y qué tiene que hacer con todos los datos.
Para dar forma a nuestro ejemplo, tendremos:
- Un selector desplegable para que el cliente indique qué curso quiere realizar de entre las tres opciones que ofrecemos
- Una serie de casillas para que marque qué extras quiere contratar
- Un campo numérico para que indique el número de plazas que quiere reservar
Asignando precios a las opciones en Gravity Forms
La parte de asignar a cada opción su precio es bastante sencilla, ya que los campos tienen una opción llamada Mostrar valores que nos permitirá asignarlo:
Por último, tendremos que crear un campo númerico oculto que será el que almacene el precio final. En este campo debemos habilitar el cálculo, utilizando una fórmula: (curso + extras) * número de personas.
Sólo hay que tener una precaución: las diferentes opciones de un mismo campo (como los cursos o los extras en nuestro ejemplo) han de tener precios diferentes. Si se asigna el mismo valor a dos o más de ellos Gravity Forms se lía a la hora de pasar los datos, ya que el mismo valor significa para él la misma opción.
Pagar con Redsys en función de las opciones del formulario
Por último, sólo queda enviarlo toda la información al plugin de pago con Redsys. Para ello usaremos la funcionalidad de confirmaciones de Gravity Forms (Formulario > Ajustes > Confirmaciones), y cambiaremos el tipo de confirmación de Texto a Página. Sólo falta seleccionar la página, que habremos creado para ello, que contenga el shortcode del plugin de pagos con Redsys.
También hay que activar la opción Pasar datos de los campos via Query String, y mediante ella pasaremos al shortcode de pagos con Redsys todas las opciones: la cantidad (indicada con cant), el concepto, los datos del usuario y sus selecciones.
Si no sabes cómo hacerlo, puedes echar un vistazo a la entrada que te enlazaba más arriba sobre cómo pasar datos entre formularios o, mejor aún, echarle un vistazo al vídeo de aquí abajo, donde lo verás claramente.
El resultado es que el plugin de pagos con Redsys:
- Genera un botón de pago mediante TPV Redsys de la cantidad según las opciones seleccionadas
- Muestra el texto con todo lo seleccionado por el cliente y lo envía también a Redsys
- Registra la operación, incluyendo cantidad, opciones elegidas, fecha, hora, número de autorización…
- Envía notificaciones por email (personalizables) al administrador y/o al cliente informándole de la reserva, el pago, las opciones y todos los datos
Vídeo: pagos con Redsys generados por un formulario con Gravity Forms
Como una imagen vale más que mil palabras (mil trescientas en el caso de esta entrada) y como seguro que lo ves mucho más claro en un vídeo, donde puedo ir más al detalle, no se diga más, aquí te dejo con uno del proceso, paso a paso:
Clara Martí dice
Enrique, este plugin tiene muy buena pinta,
Mi pregunta es si debemos tener TPV con el banco, o este plugin lo hace por su propios medios de forma independiente
Gracias
Enrique J. Ros dice
Hola Clara
Sí, es necesario tener contratado un TPV con el banco.
Un saludo,
Roberto (Consultoría y marketing 2010) dice
Gran artículo Enrique. Una pregunta. Tengo un cliente que alquila casas, y claro, cada alquiler es distinto. Gravity forms permite introducir algún campo libre (de importe) que el cliente introduzca y esa sea la cantidad a pagar una vez pinchado en enviar? botón que llevaría a la pasarela de pago. Gracias ¡¡
Enrique J. Ros dice
Hola Roberto
Precisamente eso es lo que está explicado en este artículo, échale un vistazo
Un saludo
Andrés dice
Hola Enrique, en el ejemplo que mencionas de cursos, cuando el usuario elige la cantidad dos (2 personas) ¿se puede obligar al usuario que complete los datos de la segunda persona?
Imaginemos que es para una entrada de evento. Pero no tienen que coincidir los datos del comprador si elige 2 entradas o más con sus datos, si no que introduzca los datos de su o sus acompañantes.
Gracias.
Enrique J. Ros dice
Hola Andrés
Sí, eso se podría hacer con la lógica condicional de Gravity Forms.
Un saludo.
Andrés dice
Gracias Enrique, entonces tu plugin me sirve. Me voy a suscribir a tu web y así aprovecho todo.
Un abrazo.
Saludos
diego dice
Hola, estoy interesado en el plugin, pero tengo una duda. Estoy utilizando gravity forms junto a dos plugins oficiales, uno crea un PDF y otro un código QR, ambos con los datos introducidos, y los envia al usuario tras finalizar el formulario. El procedimiento es el siguiente: el usuario rellena el formulario y tras darle a enviar gravity Forms le envía un email con los pdf. ¿Si instalo este plugin los emails se enviarán tras el pago? es necesario q los pdf solo se creen tras el pago.
Enrique J. Ros dice
Hola Diego
No, en absoluto.
Un saludo
diego dice
vayaa!!! pensé que había encontrado la solución. Se te ocurre cómo hacerlo? A mí solo se me ocurre que los dos plugin creen los archivos y los almacene y a la vuelta del TPV los envié. Pero si no vuelve del TPV o da error habría que eliminarlos y no sé si esto es un rollo. Además en el PDF estarían asignados algunos datos que habría que liberar si no se produce la transacción
Leia dice
Hola Diego,
Tengo el mismo problema, encontraste una solución?
jose chacon dice
Hola Enrique un gusto, conocerás algun plugin de reservas que en su backend permita configurar en calculo de comisión? ejemplo, yo tengo una escuela con profesores, y deseo que ellos ofrezcan tutorías de acuerdos a unos horarios a programar, en el back yo cargo los servicios (que serian las especialidades), los empleados (que serian los docentes), y los horarios, días y costo, y que también me permita colocar un porcentaje de comisión al docente, y cuando el alumno agende la tutoría o la clase con ese profesor, y pague en linea, se calcule esa comisión previamente establecida.
Leonarda dice
Hola, Enrique.
He notado que algunos clientes experimentan problemas al realizar pedidos, ya que estos quedan en estado de «procesando». Estoy tratando de configurar notificaciones por correo electrónico para informarles sobre el estado de sus pedidos, pero hasta ahora no he tenido éxito. He intentado todas las opciones disponibles en Gravify Forms (Eventos), pero no he logrado resolver el problema.
¿Podrías por favor indicarme si existe alguna otra opción para gestionar los carritos que quedan en estado de «procesando»? Agradecería mucho cualquier sugerencia que puedas ofrecer.
Gracias por tu ayuda.