Hace poco hablaba de como configurar la pasarela de pago Redsys en WooCommerce. En este post te enseño como configurar otra pasarela de pago. La plataforma CECA reúne a varias cajas de ahorros y bancos como: BBK, Kutxa, Liberbank, Cajaastur entre otras.
Por suerte existe un plugin gratuito que puedes descargar desde Github haciendo clic en el botón Download ZIP.
Una vez instalado y activado como cualquier plugin debes introducir los datos que te proporciona tu banco.
Debes introducir los datos de identificación de tu comercio disponibles en la consola tpv de tu banco: Merchant ID, Acquirer BIN y Terminal ID.
Además deberás introducir correctamente las claves de encriptación para pruebas y para entorno real. El resto de los campos puedes dejarlos como vienen por defecto.
Una vez que hayas hecho las pruebas correspondientes para ver que todo funciona correctamente, puedes desmarcar la casilla de “Modo de prueba”. Con esto ya estás listo para empezar a cobrar.
Quitar el mensaje emergente
Este plugin lanza un mensaje emergente a la hora de hacer pago informando sobre como introducir los datos de la tarjeta. Creo que es mejor eliminarlo porque realmente no sirve de mucho y entorpece el proceso de pago.
Para eleiminarlo puedes editar el código del plugin entrando en Plugins > Plugins instalados > CECA WooCommerce Gateway > Editar
Puedes borrar estas lineas y darle a guardar para que no se genere el mensaje:
wc_enqueue_js( ' if (alert ("Gracias por su pedido, recuerde que debe introducir la fecha de caducidad de su tarjeta en formato AAAAMM. Por ejemplo, si su tarjeta caduca en Julio de 2015, debera introducir 201507 como fecha de caducidad. Gracias.")){ ; jQuery("#submit_ceca_payment_form").click(); } ' );
Si tienes cualquier duda deja en comentario y si te ha servido de ayuda comparte!
Hola, me ha sido útil este plugin, pero tiene un problema bastante grave. Cuando alguien hace un pedido a través de Cecabank, aunque el pedido sea pagado correctamente, el plugin no actualiza el estado del pedido a pagado en woocommerce, por lo tanto, no se envía el correspondiente correo electrónico de aviso al propietario de la tienda para que sepa que le han hecho un neuvo pedido.
Hola Pedro, prueba a seguir los pasos de este otro post para completar los pedidos. Es el mismo problema que tiene la pasarela de Redsys.
Un saludo.
Hola:
Dos problemisllas:
1.- No me redirige a la web del banco a menos que le del al botón paga (por segunda vez). Si te aparece que en unos segundos te redirigirá… pero nada.
2.- Cuando paga, no envía ni mail ni lo pasa a estado pagado. Ya vi que poniais que había que probar con dos enlaces pero no me hace nada porque cuando los pongos que me da error a la hora de pagar.
Hola Iñigo, el primer problema seguramente lo esté ocasionando el plugin de CECA, asegúrate de tener la última versión instalada.
Para el segundo problema puedes seguir las instrucciones de completar el pedido con redsys ya que es un sistema parecido.
Te animo de todas formas a pasarte a Stripe que funciona de maravilla y tiene una comisión bastante baja.
Hola Iñigo,
Yo estoy teniendo los mismos problemas que tú y no doy con la solución. Tu los has podido solucionar? De ser así, ¿me puedes indicar como lo has hecho, por favor?
Muchas gracias,
Saludos,
Hola Manuel.
Estoy usando el plugin para la plataforma CECA y tengo el siguiente problema: al cancelar el pago en la página del TPV, me dirige a la página de agradecimiento contando el pedido como realizado y enviando todos los correos de confirmación.
¿Alguna idea de cómo solucionarlo?
Muchas gracias
Hola Miguel, tengo que utilizar el sistema de CECA para un cliente en breve, en cuanto los tenga resuelto actualizo el post. A ver si con eso consigo ayuarte.
Saludos!
Estoy en la misma situacion que Miguel y me urge muchisimo darle solucion. Imagino que habra que modificar el plugin de alguna manera o incluis algun hook….
Espero puedas darle solucion a esto pronto……
Hola Manuel, tengo el mismo problema que MIguel…
He logrado incluir dentro del plugin, la URL_NOK como la direccion de cancelacion. Tanto en la funcion que genera la firma como la que manda los parametros al TPV.
El tema es que ahora todo me da error de firma en el terminal.
Hola,
he estado reviando el plugin, y creo que el problema es que se usa la misma url para el pago aceptado y el cancelado, cuando se genera la firma y cuando se generan los campos del formulario.
Más concretamente, en las funciones calculate_sign y get_ceca_args, se llama a la función $this->get_return_url( $order ) para obtener la url. El problema es que para la URL_NOK se debería usar $order->get_cancel_order_url.
El problema que me está dando, es que a la hora de general la firma sha1 no lo hace como debiera. Probando en la página de ceca, obtengo una firma diferente, y poniendo la cadena a mano obtengo la misma firma que me da ceca, pero usando la función obtengo otra diferente y no he sabido muy bien porque, la cadena no contiene saltos de línea ni espacios.
Si pongo la URL_NOK de manera manual lo hace correctamente, y si pongo una que vaya a una página de la tienda también lo hace bien pero de esta manera no se cancela el pedido por lo que puede generar problemas en futuros pagos.
He llegado hasta aqui 🙂
Alguna idea de como darle solución.
Un saludo y muchas gracias por el aporte y el tiempo dedicado a solucionarnos la vida a gente como yo 😀
Hola Juan Diego y resto, he visto el mismo problema que tu. de hecho le he dado una solución. Como bien dices la firma que devuelve la función no es correcta (todavía no he dado con el porque) y aunque sea algo redundante, funciona. El tema es que si recoges los datos que el formulario monta y generas la firma, esa es la correcta que va realizar el tpv de ceca. Por tanto lo que he realizado es una pagina intermedia que recoge los datos del $_POST, genera de nuevo la firma y automaticamente llama al tpv. Así funciona todo correctamente. En el tpv el botón de cancelar, cancela el pedido y el de aceptar (si todo es correcto) cambia el estado del pedido a procesando…No olvideis poner en URL_NOK la url de cancelación.
Un saludo.
Hola Jose,
Perdona mi ignorancia pero no entiendo muy bien lo que cuentas. A mi por ejemplo el pago me lo hace bien y me sale el Ok del tpv de ceca sin tocar nada. Sin embargo no consigo que me actualice el estado del pedido.Eso es debido a la generación de firma incorrecta que comentas? Con respecto a la URL_NOK donde la tenemos que cambiar.
Estoy desesperado con este tema y la verdad que no me apetece pagar 40€ por una pasarela que quizás dentro de dos días deje de usar.
Saludos,
Hola Gustavo, juntamos varias cosas. Vamos por partes:
1.- El TPV de CECA da el pago como OK.
Esto lo ha hecho siempre bien. Para que te cambie el estado de forma automática, dentro de la configuración del tpv (consola) tienes que poner los campos:
– COMUNICACION ONLINE OK = si
– URL ONLINE OK = http://tudominio.com/?wc-api=wc_gateway_ceca. Aqui puedes variar el http o el https dependiendo del entorno en que te encuentres (pruebas o real). Yo tengo incluso puesta la respuesta requerida = si.
2.- El botón de cancelar del TPV te lleva a la pagina de la tienda, como si hubieras pagado el pedido.
Esto es un error. Como comentabamos, el plugin esta utilizando las misma url para informar de la url_ok y la url_nok del TPV. En la url_nok hay que poner la de cancelación que se obtiene como indico Juan Diego de $order->get_cancel_order_url. Aquí ya hay que “operar” al plugin.
3.- Error en el calculo de la firma.
Al realizar el paso dos, al acceder al TPV para realizar un pago, este nos devuelve un error en el calculo de la firma. Esto se debe a que la función que utiliza el plugin para este calculo, y toda no se porque, al cambiar la URL_NOK por la correcta, el calculo no lo realiza bien.
Para solventar este paso se puede hacer lo que os comentaba en el post anterior.
Si tenéis mas duda lo seguimos viendo mas en detalle
He conseguido hacer funcionar la pasarela con el plugin que vende Joan Boluda en su web. Funciona perfecto con la última versión de WooCommerce y el pedido queda marcado como procesando. En cuanto pueda actualizo el post.
Hola a todos.
He detectado el problema del cálculo de la firma, y este se debe a que la función esc_url del formating.php de WordPress, transforma el caracter ‘&’ al código ‘&’, que causa que las URL que se forma para la firma no sea capaz de distinguir los parámetros de la URL_OK o URL_NOK del resto de parámetros.
La solución que me ha funcionado, es sustituir este código ‘&’ por la codificación HTML ‘%26’, http://www.w3schools.com/tags/ref_urlencode.asp, y de este modo las pasarelas de CECA no se lían con los parámetros.
Salu2
Gracias por la información Adexe!
Hola Adexe, llevo unos días peleando con este tema, y la verdad que ya lo daba por perdido. Al ver que tú lo has conseguido solucionar, me gustaría que me echases una mano, a ver si puedo hacer que me funcione a mi también. No se exactamente a que parte del código debo cambiar, ni que archivo es al que te refieres. Yo he hecho los cambios en url_nok, pero como bien decís da error al calcular la firma.
Espero que puedas echarme un cable. Gracias
Para el problema de la URL_NOK, un usuario de Github propone unos cambios, yo los he puesto en mi plugin y la URL de “cancelar” te lleva a la página de pedido. De esta forma, evitamos la página de “Pedido pagado correctamente” al pulsar en cancelar.
En este post vienen los cambios que hay que hacer, sustituir los rojos por los verdes:
https://github.com/juanmirod/woocommerce-ceca-gateway/pull/7/files?diff=split