Wiki

Clone wiki

woocommerce-webpay / Home

Bienvenido

Bienvenidos al wiki de este plugin. Espero que me ayuden a hacer que este plugin sea el mejor que se pueda encontrar como gateway de pago para WooCommerce con Webpay.

Siempre puedes encontrar la última versión estable por el buscador de plugins de wordpress. * http://wordpress.org/plugins/webpay-woocommerce-plugin/ *

  1. Changelog

##Estado del Arte

Este plugin funciona con las últimas versiones de woocommerce. (Version 2.0.12)

Descarga

Si quieres editarlo recomiendo descargarlo con git:

$ git clone https://ctala@bitbucket.org/ctala/woocommerce-webpay.git

Siempre se puede obtener y descargar la última versión de esta página o del siguiente link:

https://bitbucket.org/ctala/woocommerce-webpay/get/master.zip

DEBUG MODE

Si tienes habilitado en tu instalación de Wordpress el modo debug, el plugin creará mensaje dependiendo de donde se encuentre en el código de manera bien detallada. Si habilitas el login en wordpress puedes ver todo lo que está ocurriendo dentro del archivo debug.log dentro de la carpeta wp-content.

###Ejemplo del debug.log

#!bash

ubuntu@ip-10-147-227-221:/var/www/wp-content$ tail -f debug.log -n 1000 | grep WEBPAY
[25-Jun-2013 16:24:20 UTC] [WEBPAY - FORM]      -> Entrando a la verificación de carpetas
[25-Jun-2013 16:24:20 UTC] [WEBPAY - FORM]      -> Se utilizará /var/www/wp-content/plugins/woocommerce-webpay-2.0/comun/dato20130625042420.log para guardar los datos
[25-Jun-2013 16:24:20 UTC] [WEBPAY - FORM]      -> Preparando para escribir 1000;35 en /var/www/wp-content/plugins/woocommerce-webpay-2.0/comun/dato20130625042420.log
[25-Jun-2013 16:24:20 UTC] [WEBPAY - FORM]      -> ARCHIVO CERRADO
[25-Jun-2013 16:28:26 UTC] [WEBPAY - FORM]      -> Entrando a la verificación de carpetas
[25-Jun-2013 16:28:26 UTC] [WEBPAY - FORM]      -> Se utilizará /var/www/wp-content/plugins/woocommerce-webpay-2.0/comun/dato20130625042826.log para guardar los datos
[25-Jun-2013 16:28:26 UTC] [WEBPAY - FORM]      -> Preparando para escribir 1000;36 en /var/www/wp-content/plugins/woocommerce-webpay-2.0/comun/dato20130625042826.log
[25-Jun-2013 16:28:26 UTC] [WEBPAY - FORM]      -> ARCHIVO CERRADO
[25-Jun-2013 16:35:25 UTC] [WEBPAY - PROCESS - PAYMENT] -> Iniciando el proceso de pago para 37
[25-Jun-2013 16:35:25 UTC] [WEBPAY - FORM]      -> Entrando a la verificación de carpetas
[25-Jun-2013 16:35:25 UTC] [WEBPAY - FORM]      -> Se utilizará /var/www/wp-content/plugins/woocommerce-webpay-2.0/comun/dato20130625043525.log para guardar los datos
[25-Jun-2013 16:35:25 UTC] [WEBPAY - FORM]      -> Preparando para escribir 1000;37 en /var/www/wp-content/plugins/woocommerce-webpay-2.0/comun/dato20130625043525.log

Puedes además revisar el código de manera directa en esta página.

Instalación.

Una ves descargado el plugin hay dos cosas que tienes que tener en consideración.

  1. El plugin creará una carpeta dentro del directorio de uploads llamada webpay-data que contendrá la carpeta comun. Si esta carpeta no se ha creado por favor crearla con permisos de lectura y escritura.

  2. Es my importante que se entiendan los conceptos de escritura y lectura de archivos. El script de transbank es ejecutado por el usuario de apache. Si este usuario no tiene permiso de acceso (Lectura y escritura ) a los archivos creados en la carpeta común, estos tendrán un problema de validación en las últimas etapas.

  3. Debes de tener configurado los archivos CGI de WebPay. El plugin te preguntará por esta información dentro de la configuración. ( Woocommerce -> Settings -> Paymente Gateways -> Webpay Gateway).

  4. La página usada por HTML_TR_NORMAL = http://DIRECCIONDETUPAGINA/?wc-api=WC_Gateway_Webpayplus&xt_compra

  5. Es necesario crear una página en blanco con el shortcode [webpay_thankyou] al cual será redireccionada la transacción.

  6. Es necesario modificar la configuración bajo WooCommerce -> Ajustes -> Finalizar Compra -> WebPayPlus.

  7. Para que el plugin funcione los valores de la dirección del cgi, check path y return page deben de ser correctas. Los otros valores son estéticos y pedidos por parte de Transbank.

  8. Es posible que debas agregar el guion " - " a la WhiteList de transbank para que no tire error de conexión.

Ejemplo tbk_config.dat.

OJO,PESTAÑA y CEJA. La configuración siguiente es para un ambiente de certificación.

#!bash

IDCOMERCIO = TUIDCOMERCIO
MEDCOM = 2
TBK_KEY_ID = 101
PARAMVERIFCOM = 1
URLCGICOM = http://DIRECCIONDETUPAGINA/cgi-bin/tbk_bp_resultado.cgi
SERVERCOM = TUIP
PORTCOM = 80
WHITELISTCOM = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 0123456789./:=&?_
HOST = TUIP
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://DIRECCIONDETUPAGINA/?xt_compra&pay=webpay&wc-api=WC_Webpay
#Posibles problemas. * Si los parametros no están siendo recibidos, existe la posibilidad de que php no pueda ejecutar el comando "EXEC". Solicita que se habilite a tu proveedor de servicios.

  • Puede existir un problema de ejecución de la validación FINAL al usar suPHP para realizar las ejecuciones (exec) para corroborar la información dada por Transbank y el eCommerce. Se recomienda usar una máquina virtual y configurar los permisos a mano.

  • Existe un problema por parte de la respuesta de transbank al momento de darle “mucha” información por post. Si tienen wordpress con las direcciones “largas” o modificadas en vez de las default, wordpress no genera el callback para la corroboración después de que sale el mensaje de pedido exitoso. Adjunto imagen con las dos url que van a la misma página, con solo la “PEQUEÑA” el sistema funciona. ( ARREGLADO EN LA VERSIÓN v2.1.7 )

  • Si tienes los permalink con nombres separados por guion recuerda agregar el guion ( “-” ) a la lista de caracteres permitidos al tbk_config, o simplemente edita el “slug” para que no tengan guion.( ARREGLADO EN LA VERSIÓN v2.1.7 )

  • Existe un ejemplo de como es el debug exitoso de todo el proceso. Si hay un paso que no aparece es muy posible que el server de transbank no esté llegando de manera adecuada al server. Esto puede ser que la dirección esté mal configurada o que el server tenga los puertos o direcciones bloquiadas. El ejemplo lo pueden encontrar acá -> “EJEMPLO

#Tráfico esperado por los servers de Transbank.

Para validar la transacción Transbank realiza el siguiente tráfico de datos.

#!bash


 57.880594 200.10.12.55 -> MIDIRECCIONIP TCP 66 44478 > http [SYN] Seq=0 Win=49640 Len=0 MSS=1460 WS=1 SACK_PERM=1
 57.880646 MIDIRECCIONIP -> 200.10.12.55 TCP 66 http > 44478 [SYN, ACK] Seq=0 Ack=1 Win=14600 Len=0 MSS=1460 SACK_PERM=1 WS=128
 58.012497 200.10.12.55 -> MIDIRECCIONIP TCP 54 44478 > http [ACK] Seq=1 Ack=1 Win=49640 Len=0
 58.017732 200.10.12.55 -> MIDIRECCIONIP TCP 1514 [TCP segment of a reassembled PDU]
 58.017769 MIDIRECCIONIP -> 200.10.12.55 TCP 54 http > 44478 [ACK] Seq=1 Ack=1461 Win=17536 Len=0
 58.017798 200.10.12.55 -> MIDIRECCIONIP HTTP 568 POST http://www.pandora.cl/cgi-bin/tbk_bp_resultado.cgi HTTP/1.1  (application/x-www-form-urlencoded)
 58.017809 MIDIRECCIONIP -> 200.10.12.55 TCP 54 http > 44478 [ACK] Seq=1 Ack=1975 Win=20480 Len=0
 59.146525 MIDIRECCIONIP -> 200.10.12.55 TCP 1310 [TCP segment of a reassembled PDU]
 59.147067 MIDIRECCIONIP -> 200.10.12.55 HTTP 59 HTTP/1.1 200 OK  (text/html)
 59.279550 200.10.12.55 -> MIDIRECCIONIP TCP 54 44478 > http [ACK] Seq=1975 Ack=1257 Win=49640 Len=0
 59.279583 200.10.12.55 -> MIDIRECCIONIP TCP 54 44478 > http [ACK] Seq=1975 Ack=1262 Win=49640 Len=0
 64.199323 MIDIRECCIONIP -> 200.10.12.55 TCP 54 http > 44478 [FIN, ACK] Seq=1262 Ack=1975 Win=20480 Len=0
 64.333729 200.10.12.55 -> MIDIRECCIONIP TCP 54 44478 > http [ACK] Seq=1975 Ack=1263 Win=49640 Len=0

Dirección Server de Certificación : ###

  • 200.10.12.55

Direcciones Server Producción : ###

  • 200.10.14.162
  • 200.10.14.163
  • 200.10.12.162
  • 200.10.12.163
  • 200.10.14.34
  • 200.10.14.177

Se recomienda abrir los puertos que aparecen en el tráfico para las IPs antes mencionadas.

Y eso debería ser todo por ahora.

Have fun!

Updated