Créditos de guia original:
Este repositorio contiene distintas guías para aprender a utilizar el sistema de pagos WebPay. Este documento se está creando de forma paulatina, cualquier contribución es bienvenida.
Fecha: Enero 2014, Mayo, Septiembre, Noviembre 2015, Febrero 2016, Septiembre 2017
Autor: Camilo Castro camilo@ninjas.cl
Versión: 1.4.0
Guía de Webpay por Camilo Castro se distribuye bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 4.0 Internacional.
Gema : https://github.com/abelorian/transbank-webpay
Basada en gema de usuario Clouw. Se le agregan los logs necesarios para el proceso de certificación
Una vez configurada la gema y esté funcionando con las claves de prueba se debe comenzar el proceso de certificación. Para ésto se debe verificar que los datos detallados en el Manual de Integración KCC 60 Anexo C (p. 54-55) se cumplan a cabalidad. El comercio debe tener la siguiente información (depende del tipo de comercio):
- Página que explique los términos y condiciones del servicio.
- Página que explique la política de devoluciones.
- Página que explique la forma de entrega.
Transbank ha complicado el proceso de certificación exigiendo a los comercios enviar capturas de pantallas de diversas pruebas en un solo archivo pdf. Es necesario llenar un documento llamado Evidencia Comercio.docx, el cual está dentro del archivo descargable desde Transbank Descargas.Dentro del documento se solicitan diferentes datos y responder una serie de preguntas. Una vez llenado se debe exportar en formato pdf y ser enviado a soporte@transbank.cl con una copia al contacto comercial.
Otro ejemplo de documento: https://docs.google.com/document/d/1Zlhr4H5nIPLE3y2sNAl8F0x_6ljeA8PhhbkWi4rJZHQ/edit
El contenido del documento solicita la información mostrada a continuación. El documento y las preguntas pueden ir variando dependiendo del servicio contratado.
- Nombre Comercio
- Url Comercio
- Rubro Comercio
- Rut Comercio
- Código Comercio
- Nombre
- Teléfono
- Nombre
- Teléfono
- Usuario
- Contraseña
- URL de Login
1.- Los print de pantalla de un flujo de pago exitoso de crédito (sin cuotas), además los datos del request y response de cada método (log).
2.- Los print de pantalla de un flujo de pago exitoso de crédito (con cuotas), además los datos del request y response de cada método (log).
3.- Los print de pantalla de un flujo de pago exitoso de débito, además los datos del request y response de cada método (log).
4.- Los print de pantalla de un flujo de pago rechazado, además los datos del request y response de cada método (log).
5.- El print de pantalla que se despliega, después de presionar el botón “Anular” del Formulario de Webpay y explicar la estrategia utilizada para controlar este flujo. (Debe redirigir a la página de rechazo)
6.- Describir el código fuentey explicar las partes en que se realizan las validaciones del certificado de Transbank para cada método. Recordar que se debe validar que todos los response provienen de Transbank.
7.- El print de pantalla que se despliega cuando el certificado no pertenece a Transbank y explicar la estrategia utilizada para controlar este flujo. (Debe redirigir a la página de rechazo)
8.- Los print de pantalla de un flujo de pago con una Orden de Compra duplicada, además los datos del request y response de cada método (log).Para realizar este flujo debes generar una transacción de autorización y luego realizar una nueva transacción con la misma Orden de Compra autorizada anteriormente, siempre debes validar contra la base de datos que la orden de compra no se encuentre autorizada, en caso de detectarse esta situación NO debes consumir el método acknowledgeTransaction, de esta forma generas una reversa forzada. Finalmente debes desplegar la página de rechazo.
9.- Indicar si integrarán, el Webservice de Anulación, en caso que:
- SI lo integren, indicar si realizaran anulaciones totales o parciales.
- NO lo integren, el comercio (no el programador) debe indicar el motivo.
10.- Enviar URL y datos de prueba (link producto, usuario y contraseña).
1.- Los print de pantalla de un flujo de anulación total (todas las pantallas)
2.- Los print de pantalla de un flujo de anulación parcial (todas las pantallas)
3.- Los print de pantalla de un flujo de anulación error (se puede forzar el error con: anular monto superior al autorizado, orden de compra no existe, código de autorización no existe)
4.- Describir el código fuente y explicar las partes en que se realizan la validación del certificado de Transbank del método de anulación.
5.- El print de pantalla que se despliega cuando el certificado no pertenece a Transbank.
6.- Enviar URL y datos de prueba (link producto, usuario y contraseña).
Para facilitar la entrega de datos se ha creado una plantilla de ejemplo disponible en examples/Evidencia Comercio en formato pdf, docx y pages. La cual contiene más detalles sobre como llenar la información y responder las preguntas.
También se ha creado un ejemplo de formulario html para realizar la "Evidencia 6: Validación de Orden de Compra". Puede ser descargado de este link.
Es importante que en las imágenes aparezcan todos los datos de la transacción. Transbank puede rechazar el documento si las imágenes estan incompletas o le faltan datos. Una buena herramienta para sacar capturas de pantalla de página completa es Fireshot.
Una vez que soporte pruebe los datos enviarán al sitio a certificación, proceso que tardará entre 24 a 48 horas.
Una vez que soporte ha aprobado el envío a certificación, Luego de 24 a 48 horas certificación enviará un correo solicitando los archivos listados anteriormente. Se deben enviar de la misma forma a certificacion@transbank.cl.
Certificación tardará unos días en realizar las pruebas. Una vez finalizadas enviará un correo con las instrucciones para generar las claves PEM necesarias para pasar a producción el sitio. Lamentablemente Transbank solo da instrucciones para generarlo utilizando Windows.
Nota
El paso a producción no debe tomar más de 10 días o certificación anulará el proceso y deberá comenzar desde cero.
Nota2
Para ahorrar tiempo es recomendable generar los archivos pem antes de enviar el zip a certificación. De esta forma podrán descargalo fácilmente más tarde.
El generador de llaves se debe descargar desde https://www.transbank.cl/public/documentacion/descarga-kits/generador-llaves.rar
y tendrá los siguientes archivos:
Figura 13: Contenidos de generador-llaves.rar
El archivo Leeme.txt contiene instrucciones sobre la generación de las claves y los correos donde se debe enviar posteriormente publica.pem. Tambíen contiene el archivo tbk_public_key.pem que debemos usarlo para pasar a producción el sitio.
Para generar las llaves debemos abrir el archivo genkey.exe e introducir el código de comercio asociado a la tienda.
Nota
El generador de llaves dice KCC 5.0 pero servirá de todas formas para el KCC 6.0
Figura 14. genkey.exe
Una vez ejecutado generará dos archivos
- privada.pem
- publica.pem
El archivo privada.pem contiene la llave privada asociada al comercio, ésta debe permanecer oculta al público. El archivo publica.pem debe ser entregado a certificación.
Una vez generadas las llaves se debe enviar el archivo publica.pem junto al código del comercio a los correos indicados en el archivo Leeme.txt o en su defecto certificacion@transbank.cl.
Según el manual de Transbank para generar las claves pem en Linux se deben utilizar los siguientes comandos:
Nota
No se ha comprobado su funcionamiento
# openssl genrsa -out privada.pem 4096
# openssl rsa -in privada.pem -pubout -out publica.pem
Tambíén se puede ejecutar el programa genkey.exe usando la aplicación wine.
$ sudo aptitude install wine
$ wine genkey.exe
La versión probada es la wine-1.4.1 bajo un sistema debian wheezy.
Para usar el programa genkey.exe en Mac. Hay distintas alternativas, desde una máquina virtual con Windows. usar Bootcamp o Parallels. Pero la opción más simple sería usando wine. La siguiente es una guía en inglés que explica cómo instalar wine en Mac. http://www.davidbaumgold.com/tutorials/wine-mac/.
Finalmente se debe reconfigurar el sitio para utilizar las llaves generadas anteriormente.
Se debe reemplazar el archivo privada.pem por el generado con el programa. También se debe reemplazar el archivo tbk_public_key.pem por el que se encuentra dentro del comprimido generador-llaves.rar. Los archivos a reemplazar son:
- /cgi-bin/maestros/tbk_public_key.pem
- /cgi-bin/maestros/privada.pem
Nota
Todos los archivos deben ser subidos como ASCII. En linux verificar que los archivos terminen con el retorno de carro tipo UNIX.
Una vez configurado el sitio en producción se hará una prueba final para comprobar que todo este funcionando correctamente, una vez que Transbank informe que el comercio ha sido agregado se debe crear una compra.
La prueba consiste en crear un producto de valor $10 CLP (10 pesos chilenos) y ejecutar una venta con un banco real.
Se debe enviar a transbank una prueba de que el comercio efectua las ventas correctamente usando este producto de prueba.
Una vez completado el proceso de paso a producción se recomienda limpiar todos los registros de las compras realizadas en el proceso de pruebas. Usuarios, carros de compra, estadísticas, etc.
Se puede enviar a Transbank un logotipo del comercio para mostrarse en el formulario de pago, ésto es totalmente opcional.
El logo debe tener las siguientes características:
Formato: GIF Dimensiones: 130 x 59 px.
El proceso de compra está ejemplificado con el siguiente diagrama de actividades. Este proceso es iniciado luego de que la persona ha comprado un artículo e ingresado sus datos bancarios. Es cuando Transbank informa a la tienda si una orden de compra fue exitosamente pagada o no.
Figura 15: Diagrama de Actividades del Proceso de Compra. Fuente: Elaboración Propia.
Nota :
El paso de verificación de monto se debe agregar dos ceros (00) al monto original del carro. Ya que Transbank entrega el monto con dos ceros adicionales.
Ejemplo
$total_order_amount = $cart->getOrderTotalAmount();
$total_order_amount_formatted = $total_order_amount . '00';
if ($total_order_amount_formatted == $tbk_total_amount) {
log("Amounts are Equal");
}
Al hacer pruebas siempre se deben utilizar alguna de las cuentas establecidas en el manual. A continuación se copian los datos.
Para autenticar, el usuario (RUT) a ingresar es 11.111.111-1 (nueve veces el número 1) y la clave es 123. Una vez autenticados, dentro del emisor podrán aceptar ó rechazar la transacción.
Para pruebas con Tarjetas de Crédito
* | VISA | MASTERCARD |
---|---|---|
Número de Tarjeta | 4051885600446623 | 5186059559590568 |
Año Expiración | Cualquiera | Cualquiera |
Mes Expiración | Cualquiera | Cualquiera |
CVV | 123 | 123 |
Resultado | APROBADO | RECHAZADO |
Para pruebas con RedCompra
Número de Tarjeta | Resultado |
---|---|
4051885600446623 | APROBADO |
5186059559590568 | RECHAZADO |
12345678 | APROBADO/RECHAZADO |
Se debe asegurar de que el código de comercio sea el adecuado o se puede encontrar con problemas no deseados al momento de realizar compras. Como no hay forma de saber si el código de comercio está habilitado para webpay plus es mejor preguntar a Transbank directamente antes de enviar los certificados de producción.
Al configurar mal el código de comercio puede aparecer un error similar a
"No se puede acceder a la dirección https://webpay2g.transbank.cl"
Normalmente los plugins disponibles y la configuración de esta guía operan bajo la modalidad de CICR (Cuotas iguales y conocidas RELOADED). Por lo que se recomienda de que los comercios obtengan ese tipo de contrato. El otro tipo de contrato CIC (Cuotas iguales y conocidas) obliga al comercio a implementar en el formulario de pago la selección de cuotas y enviar dos nuevos parametros a Transbank TBK_MONTO_CUOTA (valor de cada cuota) y TBK_NUMERO_CUOTAS (cantidad de cuotas). Implementar CIC implica trabajo que puede ser evitado simplemente cambiando el contrato a CICR, dejando a Transbank la tarea de calcular el monto y el número de las cuotas.
Ambos códigos pueden contener letras además de números. Por lo que su validación debe considearlos como campos alfanuméricos y no solo numéricos. Normalmente sólo tendrán números, pero en pagos con tarjetas extranjeras pueden tener letras.