Cuando lanzamos nuestro plugin para permitir enviar pagos a RedSys con Contact Form 7 teníamos clara una cosa: el plugin debía permitir entre dos opciones:
- Que el usuario que va a hacer el pago decidiera cuánto iba a pagar rellenándolo él, a través de un campo de CF7. Un ejemplo sería un formulario para el pago de una factura donde el cliente dice qué factura va a pagar e indica el importe.
- Que el administrador de la web fije un precio y el usuario no pueda modificarlo. Ejemplo de esto segundo sería por ejemplo un formulario del pago de una matrícula, donde siempre la matrícula tenga el mismo valor.
Pasó el tiempo, llegaron más clientes y con ellos, en un plugin tan abierto como este, más feedback y más recomendaciones. Incluimos el pago basado en seletores y usando el método de clave-valor que aquí explicamos, permitimos que el usuario pudiera elegir una opción de un selector que no fuera un número, pero que esa opción estuviera relacionada con un número, os doy un ejemplo.
En un selector aparecen 2 opciones: «Matrícula (100€)», «Matrícula + material (150€)». Pues con el método que explicamos arriba puedes poner en cada opción:
- Matrícula (100€)|100
- Matrícula + material (150€)|150
El usuario verá lo primero y se le cobrará lo segundo, de forma que podéis hacer selectores de tipo radio o lista, con títulos explicativos sin tener que usar solo números.
Sumas, multiplicaciones y otras operaciones
Luego llegaron clientes que necesitaban sumas, y las implementamos, pero de forma algo precaria. Así que el otro día, me líe la manta a la cabeza y las versiones más recientes soportan operaciones matemáticas de cualquier tipo.
Como nota técnica deciros que no uso la función eval porque esa función más de uno sabe que puede llegar a tener problemas de seguridad, así que como miramos mucho por no dejar ninguna puerta abierta, usamos un evaluador matemático independiente.
¿Y qué podemos hacer? Básicamente lo que queráis, mientras respetéis la sintaxis, en el campo importe podéis hacer:
- Sumar varios campos: [campo-a]+[campo-b]+[campo-c]
- Igual para multiplicar: [campo-a]*[campo-b]*[campo-c]
- Usar paréntesis para ordenar la preferencia: de operaciones: ([campo-a]+[campo-b])*[campo-c]
Y todo lo que os se os ocurra. ¿Y quién puede querer hacer operaciones matemáticas como multiplicar aquí? Pues he visto ejemplos de varios tipos, pero uno muy obvio es el típico formulario donde se ofrecen una serie de productos o servicios y vais rellanando cuántas cantidades queréis de cada uno de forma que podríais hacer directamente:
[unidades-producto-a]*50+[unidades-producto-b]*40+[tipo-envio]
Como veis se abren muchas posibilidades, así que nada, seguid pendientes de este blog que iremos anunciando todas las nuevas funcionalidades que vayamos agregando a este y a otros plugins.
Yefria
Ya, es para comercio.
Quería algo así:
Un número:
125896
Y que sume así:
1+2+5+8+9+6 = 31 = 3+1 = 4
Francisco Javier Carazo Gil
Pero eso no es una operación estándar.
Aún así, creo que ya hay un filtro (o si no lo hay lo preparo en un momento) para que puedas tú mismo codificar en PHP esa operación no estándar que comentas.
O si no sabes cómo, te podemos dar presupuesto para hacerlo si ya eres cliente.
Yefria
Ya lo tengo en Java. Gracias.
Francisco Javier Carazo Gil
¿Java? Creo que no estás hablando de este plugin.
Yefria
Hola.
Quería hacer con su plugin, Sumar dígitos de un número entero. Pero no sé cómo hacerlo. ¿Podrían ayudarme?
Gracias.
Francisco Javier Carazo Gil
Perdona pero no entiendo bien tu pregunta.
Este plugin permite operaciones en el campo precio así que podrías hacer cosas así:
[unidades]*[precio_unidad]+100
Por ejemplo.