[Tutorial - Webpay] Instalar y Configurar Módulo Webpay para Drupal 7

Posteado el por: moncada.nicolas
FacebookTwitter
drupal y webpay

El comercio electrónico en Chile cada vez toma más fuerza y para muchas tiendas es primordial contar con un comercio que tenga elementos diferenciadores que los distinga claramente de sus competencia entregándole una ventaja competitiva. Específicamente esto es lo que permite Drupal junto con dos alternativas (módulos) para generar un verdadero e-commerce, hablo de Ubercart y de Drupal Commerce. De todas sus características, ambos pueden habilitar distintos métodos de pago, pero hasta hace muy poco solo estaban disponibles los más usados internacionalmente. En cambio en Chile, lo más usado es Webpay de Transbank y su integración puede llegar a ser algo complejo, es por eso que nace Webpay API, un módulo que centraliza las funcionalidades de comunicación entre el sistema de pago con nuestro sitio en Drupal para luego facilitar la integración con cualquier módulo de comercio, ya sea con alguno de los dos que ya he mencionado u otro sistema personalizado.

Nueva versión disponible

Esta versión ha caducado ya que transbank no dará más soporte al KCC. Existe una nueva versión del módulo que da soporte a Webservice de Webpay. Ver aquí.

Objetivo del Tutorial

Este tutorial tiene como objetivo dejar funcionando Webpay en nuestro sitio, asegurándonos solo si existe conexión en todo el proceso de pago en el ambiente de certificación. En el próximo tutorial se especificará como configurar Ubercart y Drupal Commerce para operar con este método de pago, sin embargo es primordial este primer paso.

Requerimientos

Recomendaciones/Configuraciones Apache y PHP

Para que el sistema de KCC pueda operar sin problemas en el servidor del comercio, se necesita tener en cuenta que algunos parámetros de Apache y de PHP deben estar deshabilitados, en caso contrario puede no haber conexión con Webpay. Los parámetros son:

  • mod_security de Apache *Si requieren contar con dicho módulo de apache, deberán configurar una regla para que haya conexión entre el KCC y la página de cierre la cual es http://misitio.com/?q=webpay/close/(CLP|USD). No he tenido experiencia con ello, si alguien cuenta con dicha información, se le agradecería si la pudiera compartir. EDIT: Mod_Security y Webpay
  • safe_mode de PHP

Importante

El servidor debe ejecutar programas CGI.

Tu sitio debe ser accesible desde internet. Si estas probando en tu local (ej: http://localhost) difícil le será a Webpay encontrar tu sitio, por lo que fallará en el proceso.

Permisos de escritura

La documentación de Transbank define los permisos que deben tener cada archivo del sistema de KCC, adicionalmente, Apache debe contar con permisos de escritura sobre el archivo datos/tbk_config.dat, esto para configurar sus parámetros desde la administración de Drupal, si por algún motivo Apache no tiene permisos, el sistema generará el archivo para reemplazarlo en la carpeta correspondiente.

Instalando y Comprobando que KCC esta andando en mi Servidor

Antes de empezar a trabajar con Drupal, debemos asegurarnos de que el sistema de KCC esta bien instalado y operando en nuestro servidor, para ello debemos crear una carpeta (recomendado en la raiz de Drupal) que se llame "cgi-bin" (es como lo más común, muchos hosting dejan establecido dicha carpeta en la raíz de los sitios para ejecutar programas cgi.). Aquí podemos pegar todos los archivos y carpetas del KCC, a continuación como se vería: Una vez que este hecho y los permisos bien dados, haremos un prueba accediendo a tbk_bp_pago.cgi por el browser, por ejemplo entrando a http://misitio.com/cgi-bin/tbk_bp_pago.cgi, debería aparecer esto: Si no te aparece esto, entonces debes configurar adecuadamente Apache.

Habilitando y Configurando el módulo Webpay API

Ya teniendo el KCC operando en nuestro sitio, podremos empezar a trabajar en Drupal. Descargamos e instalamos el módulo Webpay, pueden hacerlo con drush. drush dl webpay drush en webpay

Luego vamos a la página de configuración, podemos acceder desde /admin/config/webpay, veremos las siguientes opciones:

Primero debemos decirle a Drupal donde esta nuestro KCC y que datos debería tener nuestro archivo tbk_config.dat, entramos a la segunda opción (KCC Settings):

Como se ve en la imagen, existen secciones para la moneda chilena y para la del dolar ¿Por qué? Webpay permite que un sitio pueda operar con moneda nacional o con dolares, sin embargo no pueden operar al mismo tiempo en una misma configuración, ya que ambos usan distintos códigos, en otras palabras, si necesitan operar con las dos opciones, tendrán que tener instalado dos KCC en sus servidores, exactamente iguales, el único archivo que cambiará será el tbk_config.dat y se generarán otros archivos en la carpeta logs. Especificamente podríamos tener adentro de la carpeta cgi-bin, dos sub carpetas, una que se llame clp y otra usd, y en cada una de ellas un KCC completo. En esta oportunidad solo vamos a trabajar con CLP, así que configuraremos dicha sección solamente.

Por defecto, solo bastaría con definir la ruta del KCC, en este caso en cgi-bin, los otros datos ya vienen definidos para operar en certificación. Ahora vamos a la sección de arriba (General Data):

Aquí lo único que debemos completar sería la IP de nuestro sitio y el puerto con el que este opera, normalmente es 80, pero nunca se sabe. Otro detalle podría ser la extensión del check_mac, ya que si usan Linux debe ser *.cgi pero si están en Windows, entonces deben seleccionar la extensión *.exe. Listo, con todo esto ya dado le damos en guardar, aquí es donde el sistema generará el archivo tbk_config.dat e intentará reemplazarlo en la carpeta datos del KCC, avisará si pudo o no, en caso contrario se dispondrá un link con el archivo generado para que puedas descargarlo y luego reemplazarlo manualmente, en este ejemplo quedaría algo así:

IDCOMERCIO  = 597026007976
MEDCOM  = 1
PARAMVERIFCOM = 1
TBK_KEY_ID  = 100
URLCGICOM = http://misitio.com/cgi-bin/tbk_bp_resultado.cgi
SERVERCOM = 173.236.32.11
PORTCOM = 80
WHITELISTCOM = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789./:=&?_
HOST = 173.236.32.11
WPORT = 80
URLCGITRA = /filtroUnificado/bp_revision.cgi
URLCGIMEDTRA = /filtroUnificado/bp_validacion.cgi
SERVERTRA = https://certificacion.webpay.cl
PORTTRA = 6443
PREFIJO_CONF_TR = HTML_
HTML_TR_NORMAL = http://misitio.com/?q=webpay/close/CLP

Probando Conexión

Para probar la conexión podemos instalar el módulo Webpay Test, el cual viene incluido en Webpay API, simplemente se habilita. Pueden comprobar en /admin/config/webpay/configure-basic si el sistema de Prueba esta habilitado para operar con Webpay, debería aparecer esto:

(Aquí mismo deberán estar Ubercart o Drupal Commerce cuando se integren con Webpay API.) Desde aquí menciona a que link se debe ir para probar la conexión, entrando a http://misitio.com/webpay-test. Entramos a la opción de probarlo en CLP y nos mostrará los datos que se enviará a Webpay:

Simplemente hacemos click sobre Go to Webpay, si todo esta bien, debería redirigirnos a la siguiente página:

Si les dio un error, pueden ir a ver en la carpeta log del KCC, aquí buscan el archivo TBK_EVNyyyymmdd.log para ver que sucedio. Normalmente puede ser error de las llaves, adjunto las llaves en modo de certificación que use:

privada.pem

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAn3HzPC1ZBzCO3edUCf/XJiwj3bzJpjjTi/zBO9O+DDzZCaMp
14aspxQryvJhv8644E19Q+NHfxtz1cxd2wnSYKvay1gJx30ZlTOAkzUj4QMimR16
vomLlQ3T2MAz1znt/PVPVU7T/JOG9R+EbiHNVKa/hUjwJEFVXLQNME97nHoLjb3v
V5yV2aVhmox7b54n6F3UVPHvCsHKbJpXpE+vnLpVmdETbNpFVrDygXyG+mnEvyiO
BLIwEY3XTMrgXvS069groLi5Gg8C5LDaYOWjE9084T4fiWGrHhn2781R1rykunTu
77wiWPuQHMS0+YC7mhnsk8Z/ilD+aWz/vhsgHwIDAQABAoIBAQCM+Nrt4cpNKQmn
+Ne8348CGRS9ACXp6WRg6OCQXO4zM7lRZAminVgZgSQXE6aJR+T9rIWMeG7GWydX
aJGzEEQJZOjV0MkUr+7mk9qiTOGkGHmGlyHnRQU8jDU59vXe3UEl3l5+NmwHbQht
waf9F7XLmoLK/WoVJA6tICRpCl1oQrpziqN+gjdmMpz9i8I1sMFE7+Y7xf+7S2u7
c1MRPUWqgdS9yViQVh3vZi25m5CyKRVnOB0hpNuZ7nrJymtADYSWt9wV2W1fX+MX
UUoYfxyQQvWryHhGdedU7GGAnoEdblUcDkBuAaFmsm1P8K4HQZLWP4v6pYlW2JLa
Zoaerb3BAoGBANCRevl0CLB0HBU7sCs0eN9fTkIEsh3OVIxPSBqDnKsynJrIWovK
cs37Vb6phzdQO3ADoFJvR9ck8+v6Cv0KR8IOFl9wfC4ZoxkKBBeq94ZLN+YhE2PW
KiRFybqcgCtzxKS3MyWgpIcT9xFtHVjlorZ8Jk51fgLZbGzamtLhderVAoGBAMO0
mIiiV4l2vXzu4tFfkpu/GOx/D9/vAic3X9FOky09BNCyuMXMQgI8e3wWsGEZghls
Vg9KDV5EPxAmpumcdPFK2IMACaH41ac7vys3ZD8kMK0INQkuDAcG4YsxMaTwEPo0
p1i3zwwEWwknw1yJkOyozz0EcIzS9NrZZEjnBHEjAoGAQ81XdeqzvHEyg/CQd6sq
NCtubGXMZYYi1C4d2Yi5kKn2YRcK4HDi23V+TWodK+0oNWToZIQKjbVUmn0Bv3rt
EvezbDlMFUx+SfCIng0VRJIFTQmpnQYNUxdg2gpwXC/ZWFa6CNxtQABMjFy1cqXM
PJild1IYseJurgBu3mkvBTUCgYBqA/T1X2woLUis2wPIBAv5juXDh3lkB6eU8uxX
CEe2I+3t2EM781B2wajrKadWkmjluMhN9AGV5UZ8S1P0DStUYwUywdx1/8RNmZIP
qSwHAGXV9jI0zNr7G4Em0/leriWkRM26w6fHjLx8EyxDfsohSbkqBrOptcWqoEUx
MOQ5HQKBgAS4sbddOas2MapuhKU2surEb3Kz3RCIpta4bXgTQMt9wawcZSSpvnfT
zs5sehYvBFszL3MV98Uc50HXMf7gykRCmPRmB9S+f+kiVRvQDHfc9nRNg2XgcotU
KAE16PQM8GihQ0C+EcXHouyud5CRJGfyurokRlH/jY3BiRAG5c+6
-----END RSA PRIVATE KEY-----

tbk_public_key.pem

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC0ltrgs03d0agToUo8mDMQS8sR
9GGwVy9mpnvkCYDWCMcn2Ymtsu1UXv7oNTDnPuFctA9mjiodZCIL+9FuPCNnGr3f
hz1vDAreTEZZnhn9m+XVssEA8E2WVMh3e3nrIM3tlmZAKcdnxqYqjFTdlCwSAqYf
4hrmhDT4ctxzDfBMaQIDAQAB
-----END PUBLIC KEY-----

En la documentación de Webpay tienen los número de tarjetas que pueden usar de prueba. Una que asegura el éxito en la compra y otro que simula el fracaso. En el siguiente tutorial se verá el como integrar Ubercart y Drupal Commerce.

Consideraciones para la Certificación con Transbank

Para certificarse con Transbank, existe una serie de elementos que debe contar el comercio, la mayoría de ellos ya están abordados con el módulo, pero debemos configurar algunas cosas. Esto se configuran en la página de configuración básica de Webpay (admin/config/webpay/configure-basic), aquí deben:

  • Ingresar el link en donde hablan de las devoluciones.
  • Tener desactivado la opción "Active Access Restriction" para que puedan hacer pruebas en la página de cierre. Después, cuando estén en producción, la activan.
moncada.nicolas

Últimos Comentarios

Blog

En esta sección compartimos algunas experiencias concretas para la comunidad de desarrolladores de código abierto

Hace un tiempo atrás, Transbank (la empresa detrás de Webpay) había habilitado una nueva modalidad para integrar su sistema de pago con nuestros sitios. Se trata de un servicio web que utiliza el protocolo SOAP, haciendonos más fácil la integración con respecto a su antecesor. Y para soportar esto en Drupal, se ha publicado una nueva versión del módulo Webpay y aquí veremos como funciona.

Posteado el por: moncada.nicolas

Para la junta de Drupal (realizado el 20 de Diciembre del 2016) he presentado el desarrollo de un módulo pensado para la comunidad de Drupal Chile, llamado Badge. El objetivo del módulo es crear logros o insignias y asignarlo a usuarios u otras entidades de nuestro sitio.