Nuevo Blog, exclusivo de código

Hemos decidido dejar el blog de Médula para temas más generales de internet y diseño, lo que es código lo llevaremos en el blog especial, con un sistema de publicación semi-estático, sin base de datos que estoy desarrollando.

Yo hice varios diseños y finalmente la Violeta en unas horas hizo el genial diseño que tiene ahora.  Aún debemos hacer que funcionen bien los estilos “responsive”.

La idea es portar los artículos de código de aquí hacia code.medula.cl donde los revisaremos (especialmente el de webpay).

Esperamos tus comentarios.

Toolbox Theme: A good start for HTML5 in WordPress

Finally opened this blog with something.

The other day, in Paul Boag’s podcast, Paul interviewed Ian Stanley about WordPress best practices and they mentioned Toolbox, the HTML5 theme they are using as a base for building other HTML5 themes.

http://wordpress.org/extend/themes/toolbox

I had been struggling with themes a while, but none was clean enough for me, nor easy to modify, but today afternoon I remembered and gave it a try…

This theme is fantastic!

So easy to tweak! just added a few styles, added our webfont, and voilá! 30 minutes later I had a published decent HTML5 Worpress Blog.

Still tons to do, but now there is no going back, it’s so HTML5 semantically correct, a bit too much for my taste. I’m still not convinced about the multi H1  in the document outline, so I’m tweaking a little more, for better backwards compatibility.

I guess one could see this as a Boiletplate for HTML5 themes.

Toolbox Theme: Parte HTML5 en WordPress con el pie derecho.

Finalmente he abierto este blog con algo.
El otro día, escuchando el podcast de Paul Boag, Paul entrevistó a  Ian Stanley sobre buenas prácticas para WordPress. Mencionaron varias cosas, pero entre ellas me llamó la atención un theme llamado Toolbox, que Ian y su equipo han estado usando como base para hacer Themes HTML5, me imagino que lo usan como un Boilerplate, para plantillas de WordPress.

http://wordpress.org/extend/themes/toolbox

Había tenido problemas con este blog desde hace tiempo, las plantillas no me acomodaban. Muy pesadas y sucias algunas y otras tan complicadas de modificar, pero hoy en la tarde me he acordado de Toolbox…

Este theme es filete!

Tan simple de instalar y editar, como no tiene fotos y es semánticamente correcto, me bastó agregar algunas líneas de CSS, nuestra webfont y listón dePaloDeMaderaDeÁrbol! en 30 minutos tenía un blog HTML5 decente funcionado.

Aún faltan toneladas de cosas por afinar, pero ya no hay vuelta atrás, es tan correctamente HTML5. Quizá un poco mucho para mi gusto. Todavía no me convence esto de tener múltiples H1 en el delineado del documento, así que estoy ajustando el html para que sea compatible con algoritmos de delineado más viejos (backwards compatible).

Cómo Configurar Webpay en PHP

Esta es una colección de pruepas y errores que he ido teniendo al configurar webpay en algunos sitios.

Este es un post para chilenos, dado que dudo que en alguna parte del mundo todavía usen un sistema de transacciones electrónicas tan arcaico como el de Transbank, realmente una tortura tratar de entender esto, además de que no hay documentación, ni en la misma página de transbank. Sólo algunos comentarios en algunos foros.

Yo me considero un programador intermedio de PHP, he integrado varios sistemas de pagos, pero esto me dejó completamente parado, tuve que leer el manual completo y aún así no sabía por dónde empezar, así que comencé hakeando/traduciendo el ejemplo hecho en ASP y ahí encontré unas variables post por las que hiceuna búsqueda y encontré publicado el script de PHP usado por un techo para chile, lo que me ayudó a entender algunas lineas del ASP que no me entraban. Ahí es donde estoy ahora, al comienzo de este post, decidido a que si alguien busca ayuda sobre este tema en Google lo encuentre aquí.

Por mientras iré posteando los links que tienen alguna información útil.

http://www.forosdelweb.com/f125/duda-webpay-chile-213843/ varios tipos capos contestando variadas preguntas al respecto

http://svn2.assembla.com/svn/utpch/utpch/webpay/pagina_cierre.php
http://trac2.assembla.com/utpch/browser/utpch/webpay/pagina_cierre.php son el script xt compra.asp versión PHP

http://kb.mediatemple.net/questions/30/Running+scripts+outside+of+the+cgi-bin para ejecutar CGI fuera del cgi-bin

usando el script para ejecutar fuera del CGI-BIN y dando permisos de 0755 a la carpeta y los archivos corre, pero ahora me da un error de conexión.

if you set up permissions incorrectly, you'll probably get "500 Internal Server Error"

Essto explica algunas cosas.

buena referencia en : http://wiki.dreamhost.com/CGI

al final eran los permisos nuevamente: extrañamente la carpeta de logs necesita 0777 [edit:] NUNCA usar permisos 0777 no importa qué NUNCA usarlos [/edit] ¿eso significa que los logs son generados desde el servidor de transbank?
Después resulta que todo es case sentitive, así que no olvidar las mayúsculas.

luego de que se colgara lanzando un error 34 en el log, me dijeron que la última línea del config estaba mala y que para el URLCGICOM usara una dirección absoluta, duda que había tenido desde el principio.

He revisado que se mantiene el error 34 luego de modificar a dirección absoluta el parámetro URLCGICOM, que según el Manual corresponde “34 ERR_REFERER”, por lo cual agradeceré eliminar la línea del archivo de configuración TBK_CONFIG.DAT con el parámetro TBK_REFERER. Solicito por favor mantener la dirección absoluta del parámetro URLCGICOM.

otra nota: los logs se demoran en actualizar la última transacción, hasta 3 minutos en el caso del servidor que estaba probando yo.

siguen los problemas, ahora sale el error 42.

hasta ahora ni idea qué está produciendo lo siguiente:

http://200.119.239.153/seguro/compra.php

conectandose al port : (80)

No pudo abrir socket para conex-com

tienda NO acepto transaccion

respuesta enviada a TBK (ERR)

Error al conectar servidor especificado (42)

ERR;             ;42

http://200.119.229.153/seguro/compra.php;

conectandose al port : (80);
No pudo abrir socket para conex-com;
9290;   ;resultado ;1289858888                              ;15112010      ;185934;200.10.12.55   ;OK ;                    ;tienda NO acepto transaccion;
9290;   ;resultado ;1289858888                              ;15112010      ;185934;200.10.12.55   ;OK ;                    ;respuesta enviada a TBK (ERR)
;9858161553;        
9290;   ;resultado ;datoscom                                ;15112010      ;185934;200.10.12.55   ;Ok ;
597026016975         ;Error al conectar servidor especificado (42);
9290;   ;resultado ;1289858888                              ;15112010      ;185934;200.10.12.55   ;ERR;                    ;42
http://200.119.229.153/seguro/compra.php                                
9858161553;        
9290;   ;transacc  ;9858161553                              ;15112010      ;185625;200.10.12.55   ;OK ;
597026016975         ;conectandose al port : (80)                                              
9858161553;
9290;   ;resultado ;fallo abrir_conexion                    ;15112010      ;185934;200.10.12.55   ; -2;597026016975        ;No pudo abrir socket para conex-com                                        9290;   ;resultado ;1289858888                              ;15112010      ;185934;200.10.12.55   ;OK ;                    ;tienda NO acepto transaccion                                               9290;   ;resultado ;1289858888                              ;15112010      ;185934;200.10.12.55   ;OK ;                    ;respuesta enviada a TBK (ERR)                                         9858161553;        
9290;   ;resultado ;datoscom                                ;15112010      ;185934;200.10.12.55   ;Ok ;597026016975        ;Error al conectar servidor especificado (42)                               9290;   ;resultado ;1289858888                              ;15112010      ;185934;200.10.12.55   ;ERR;                    ;42

hubo que usar la IP local en algunos parámetros y se generó un error 46, que era porque estaba rechazada la autenticación por la tienda.

OJO con las direcciones con ./cgi-bin/tbk_check_mac.cgi slash sin punto en PHP, no es lo mismo que en windows.
en PHP / = raíz del dominio
en ASP / = la carpeta que ontiene este archivo. (corríjanme si estoy mal)

Luego el problema estaba en mi código en el archivo que ellos le llaman xt_compra o Página de Cierre.

OJO con subir los CGI desde Dreamweaver, si usan dreamweaver hay que forzar la transferencia a modo binario, cosa que no pude descubrir cómo hacer, así que usé FileZilla. En otra ocasión usé SFTP (FTP de conexión segura) y no tuve problema, pero no puedo recordar si fue por la conexión segura o porque no usé Dreamweaver.

Si no se suben de modo binario se corrompen los archivos, y el servidor arroja un Internal Server Error, y genera un archivo core que es binario y no pude leer.  Si uno revisa los .log del servidor (en mi caso Dreamhost) el servidor dice los siguiente:

[Tue Nov 30 10:25:34 2010] [error] [client 200.83.106.80] Premature end of script headers: tbk_bp_pago.cgi, referer: http://000.000.000.000/es/payment.php

MEDCOM 1 significa SSL, MEDCOM 2 usa redirección por javascript (cosa que no imagina cómo puede funcionar)

Iba todo bien, hasta que me puse a jugar con cURL para enviar los datos a webpay, bueno, tambin cambié el MEDCOM y el código de comercio para que funcionara en dolares, y me da un error 1 ( ERR_LECTURA_INPUT ) y ni siquiera me muestra la pantalla para pagar con la tarjeta. Vamos a depurar un poco para ver. partamos por devolver la tienda a pesos. No era ni la tienda en dólares ni el cambio de MEDCOM, OK, el error era porqeu estaba usando mal cURL ahora, por una extraña razón cURL si funciona.

Finalmente MEDCOM no puede cambiarse a 1 , por lo tanto no hay comunicación interna por SSL, entonces, aunque en el manual diga que si se puede, los siguientes parámetros tienen que ir así:

MEDCOM         = 2 (1 no se encuentra disponible)

URLCGICOM      = http://www.example.com/cgi-bin/tbk_bp_resultado.cgi --> no puede ser HTTPS://... y les recomiendo que sea absoluto

PORTCOM        = 80 à 443 no está disponible

Adicionalmente....

PORTCOM        = 80 à 443 no funciona (o yo no he logrado hacerlo funcionar)

HTML_TR_NORMAL = http://www.example.com/interno/xt_compra.php --> no puede ser HTTPS://... y les recomiendo que sea absoluto


http://www.webmasterworld.com/php/3164561.htm

<?php

$transbank_format_number = number_format($totalCompra, 2, '', '');

?>

Ahora estoy batallando con xt_compra.php

y Éxito!

ahora a formatear el resultado para que en transbank aprueben el sistema.