A continuación, voy a echar un cable a aquellos que necesiten desarrollar un TPV con Sermepa (casi todos los bancos Servired lo usan).
Desde hace unos días, también sirve para la mayoría de TPV´S 4B, que ahora trabajan con Redsys.
Evidentemente, necesitaréis los datos que el banco os adjuntará una vez os den el alta del servicio.
El código (en php) consta de dos archivos. El primero, será el que envíe todos los datos a la pasarela de pago. Es un formulario en POST que deberá ser ejecutado para enviar todos vuestros datos al banco.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<!--?<br /--> $message = $amount.$order.$code.$currency.$transactionType.$urlMerchant.$clave; $signature = sha1($message); ?> <form id="enviar_tpv" action="<?= $url_tpvv ?>" method="post" name="enviar_tpv"><input type="hidden" name="Ds_Merchant_Amount" value="<?= $amount ?>" /> <input type="hidden" name="Ds_Merchant_Currency" value="<?= $currency ?>" /> <input type="hidden" name="Ds_Merchant_Order" value="<?= $order ?>" /> <input type="hidden" name="Ds_Merchant_MerchantCode" value="<?= $code ?>" /> <input type="hidden" name="Ds_Merchant_Terminal" value="<?= $terminal ?>" /> <input type="hidden" name="Ds_Merchant_TransactionType" value="<?= $transactionType ?>" /> <input type="hidden" name="Ds_Merchant_MerchantURL" value="<?= $urlMerchant ?>" /> <input type="hidden" name="Ds_Merchant_UrlOK" value="<?= $urlOK ?>" /> <input type="hidden" name="Ds_Merchant_UrlKO" value="<?= $urlKO ?>" /> <input type="hidden" name="Ds_Merchant_MerchantSignature" value="<?= $signature ?>" /> <input type="hidden" name="Ds_Merchant_ConsumerLanguage" value="<?= $ar_idiomas_tpv[0] ?>" /></form> |
Cuando el usuario rellene sus datos y proceda al pago, el banco ejecutará el archivo que le indiquéis mediante la variable post Ds_Merchant_MerchantURL del formulario anterior.
El banco enviará distintos datos por post que podéis gestionar como deseéis. Está explicado en el propio código.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<!--?<br /--> try { /* por si hay algun fallo se captura las excepciones */ if (isset($_POST['Ds_Signature'])) { /* creamos las variables para usar */ $Ds_Response = $_POST['Ds_Response']; //codigo de respuesta $Ds_Amount = $_POST['Ds_Amount']; //monto de la orden $Ds_Order = $_POST['Ds_Order']; //numero de orden $Ds_MerchantCode = $_POST['Ds_MerchantCode']; //codigo de comercio $Ds_Currency = $_POST['Ds_Currency']; //moneda $firmaBanco = $_POST['Ds_Signature']; //firma hecha por el banco $Ds_Date = $_POST['Ds_Date']; //fecha $CLAVE = XXXX; //nuestra clave secreta proporcionada por el banco /* creamos la firma para comparar */ $firma = strtoupper(sha1($Ds_Amount . $Ds_Order . $Ds_MerchantCode . $Ds_Currency . $Ds_Response . $CLAVE)); $Ds_Response += 0; //convertimos la respuenta en un numero concreto. if ($firma == $firmaBanco) { // LA RESPUESTA DEL BANCO ES AUTÉNTICA, GESTIONAMOS EL PEDIDO } catch (Exception $e) { /* mail con el error si hay excepciones */ } |
20 comentarios
sj
sj en dijo:me interesa presupuesto para conectar mi web a la caixa, y ademas añadir mas campos en el formulario, como el calculo de transporte que le enviaria la tabla, Espero su presupuesto, muchas gracias
carlos
carlos en dijo:hola, estoy intentando conseguir algo como esto: http://www.ropadesdecolombia.com/index.php?route=information/information&information_id=8 pero sin selector radio, sólo para la caixa. Trabajo con Opencart 1.5.5.1 y el ejemplo de arriba es un Opencart también. Dispongo de pasarela de pago redsys la caixa, y los datos que me proporcionaron los de redsys, que son: Nombre de comercio, codigo FUC y clave de encriptacion.
Ya hemos integrado la pasarela mediante un módulo para Opencart que proporciona redsys, y está funcionando ok(de modo que los clientes pueden realizar el pago de artículos de la tienda), pero esto es diferente, sería una forma de pago sin pasar por el checkout de OCart
Agradecería un poco de ayuda, o si no es posible, me paseis presupuesto por favor
Gracias
Anton
Anton en dijo:Muchas gracias por información y un ejemplo tan fácil y claro.
Incluso con un truco para que no sera copiado y pegado sin saber php 🙂 (no se si lo echo accidentalmente pero esta way, voy a aprovechar lo)
david
david en dijo:me interesa presupuesto para conectar mi web a redsys, y ademas añadir un par de campos a mi formulario de registro. Espero su presupuesto, muchas gracias
David
David en dijo:Le hemos remitido un correo electrónico. Muchas gracias.
Mauro Agustin
Mauro Agustin en dijo:Hola muy buenas tardes, necesito acesoria para integrar una pasarela de pago Redsys en una pagina de PHP y MySql, podemos hacerlo mediante pantalla remota hoy mismo, yo le pagaría las horas de trabajo.
Tengo conocimientos en PHP pero esta pasarela de pago es algo complicada integrarla.
Muchas Gracias.
Jose Manuel
Jose Manuel en dijo:Muy buenas, estoy desarrollando un proyecto y lleva un tvp virtual Redsys. Es el primero que hago y me ha surgido una duda.
Si el usuario rellena el formulario de compra, va a la plataforma de redsys, paga el artículo y después no le da en la plataforma de pago al botón volver a tu web, no se modifican los datos en la BBDD de la web indicando que el pedido ha sido pagado?
Hay alguna forma de que esa notificación se haga por ajax o de alguna otra forma que la web sepa que eso ya se ha pagado?
saludos.
David
David en dijo:Es el propio TPV el que va a llamar a tu aplicación indicándote si el usuario ha pagado correctamente. El TPV llamará a la url que le marques en el campo Ds_Merchant_MerchantURL informándote del resultado de la compra.
Javier
Javier en dijo:Hola, mis conocimientos en php límitados y no consigo configurarlo.
Tengo que configurar un tpv de redsys para que un comercio efectúe cobros con tarjeta.
¿Sería posible una descarga de los archivos base del formulario?
Sería impagable 😉
David
David en dijo:Puedes copiar y pegar sendos bloques de texto. Si ves que no puedes, podemos desarrollarlo a precio muy reducido. No dudes en pedir presupuesto rellenando el formulario.
Napalm
Napalm en dijo:Gracias por el post, me ha sido de una gran ayuda (después de pelearme a puño limpio con los de redsys, y no obtener ninguna ayuda)
un saludo:)
David
David en dijo:Me alegro!
Andres
Andres en dijo:Hola, ya lo pude solucionar.
Andres
Andres en dijo:Buenas, estoy intentando implementar estos php. Tengo pocos conocimientos de php y demas uso Web Easy para mi web,aunque mis 20 años dedicados a la informatica ayudan bastante. Creo que casi lo tengo, pero necesito ayuda, podeis? Gracias.