Transacciones HTTP usando PHP

Escrito el 2 febrero, 2001 – 10:00 | por storm | 3.936 lecturas

Durante años los sistemas transaccionales propietarios han dominado el mundo de las aplicaciones de gran escala. Que ocurre cuando queremos migrar esas aplicaciones a la web? Esta el protocolo HTTP preparado para este tipo de aplicaciones? En esta nota Jens Auken responde todo esto y mucho mas e incluso explica como construir un sistema transaccional complejo usando PHP.

Transacciones HTML usando PHP


Por Jens Auken.
Jens Auken es desarrollador de aplicaciones para una importante firma automotriz alemana. Jens migro todas las aplicaciones transaccionales de su firma a la web usando PHP como principal plataforma logrando una importante reduccion de costos para la firma.

Uno de los ambientes donde mas exitosamente proliferaron los sistemas propietarios de la decada del 70 y 80 es el mercado transaccional, aplicaciones bancarias, de negocios, financieras, relativas al mercado de acciones, de salud, servicios de informacion y un gran numero de industrias construyeron complejos sistemas transaccionales sobre las mas diversas plataformas.

Durante los ultimos años a quedado ampliamente demostrado que la web es el camino mediante el cual todas las aplicaciones deberan ser reescritas, con un numero de usuarios que crece exponencialmente y con una clara tendencia a un futuro en el cual todo el mundo estara conectado resulta fundamental adaptar todas las aplicaciones existentes y pensar todas las nuevas que surgiran en torno a la web.

“Todo aquello que no sea accesible via un URI tiene los dias contados” (Tim Berners Lee)

En este articulo analizamos como utilizar el protocolo HTTP para construir complejos sistemas transaccionales, que pueden facilmente reemplazar a los antiguos sistemas transaccionales usando recursos mas difundidos y economicos, nos centraremos en como transaccionar usando PHP.

Sistemas transaccionales basicos

Un sistema transaccional basico consiste de un servidor que procesa transacciones y 1 a N clientes que utilizan dicho servidor para transaccionar, por ejemplo para pagar una compra online o para verificar el socio de un video club.

Servidores transaccionales HTTP

Construir un servidor transaccional sobre la web es sencillo ya que el protocolo HTTP es facilmente adaptable para tal fin. Podemos pensar un servidor transaccional HTTP como una o varias paginas web que reciben informacion via “POST” y a partir de dicha informacion devuelven una respuesta, nada mas simple y sencillo. Mediante el agregado de SSL al servidor es sencillisimo convertir el sistema en un sistema seguro por lo que incluso transacciones financieras pueden realizarse con facilidad. De esta forma una transaccion es simplemente un request http tipo POST con todos los datos necesarios para la transaccion en forma de post fields.

Para mostrar un ejemplo supongamos un servidor transaccional extremadamente simple que valida si un numero es par o no. Podemos construir esta aplicacion con un simple script php.

 

if(isset($number)) {
if($number\%2) {
print(“no”);
} else {
print(“yes”);
}
}
?>

Como podemos ver el script es mas que sencillo pero encierra un amplio poderio, piensen que facilmente puede un script de este estilo con conexion a una base de datos validar usuarios, tarjetas de credito, hacer una operacion bancaria o cualquier otra cosa.

Clientes

Construir un cliente HTML es simple, basta con armar un “form” que pida la informacion al usuario y use el servidor. Pero este no es el uso habitual que un cliente hara del servidor, el uso habitual es que el cliente ejecute una determinada aplicacion y dentro de la misma desee procesar una transaccion. Para ello PHP posee una extension sumamente util denominada CURL, para usar CURL PHP debe ser icompilado con la opcion –with-curl=path_a_curl y deben instalarse las bibliotecas de curl que se pueden bajar de este site: CURL, en general CURL es un paquete muy estable y es muy simple instalar las bibliotecas y modificar PHP para hacer uso de la extension.

Una vez disponible la extension podemos escribir un cliente HTTP en PHP de la forma:


$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,”localhost/farstar/prueba/poster.php”);
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,”number=23″);
curl_exec($ch);

Como podemos ver el uso del paquete es simple, se debe hacer un curl_init y luego tantos curl_setopt como hagan falta, en este caso setamos la URL del servidor (URL de script), seteamos que vamos a hacer un POST y seteamos los campos POST que deseamos enviar.

Por default el resultado es devuelto al STDOUT, lo cual puede capturarse facilmente usando output buffering desde PHP o bien podemos usar la opcion CURL_SETFILE para que el resultado de la transaccion sea devuelto en un archivo.

CURL permite definir usuario y password si hay que ingresar a un servidor con autenticacion HTTP, cookies, user_agent y todos los campos necesarios como para poder efectuar cualquier request HTTP. Pero ademas CURL puede realizar transacciones a servidores usando SSL con lo cual es muy simple implementar un sistema de transacciones seguro.

Usando esquemas como este es sencillo migrar aplicaciones complejas, por ejemplo para validar socios de un videoclub con miles de sucursales es posible centralizar la base de ususarios en un determinado servidor y que el mismo disponga de un script que chequee datos enviados por POST con la informacion del usuario, lo valide contra una base de datos y responda si es o no socio, si debe alguna pelicula, etc, etc. Para efectuar la transaccion las sucursales pueden capturar el numero de socio usando un lector de codigo de barras, un lector de banda magnetica, tarjeta chip o similar y luego enviar una transaccion HTTP al servidor. Dado el enorme uso del protocolo HTTP existen bibliotecas como CURL disponibles para casi cualquier lenguaje (CURL mismo puede usarse desde C, PERL, PHP, Python y varios lenguajes mas). Como vemos no solo logramos convertir antiguos sistemas en web-enabled sino tambien ahorrar muchos costos tanto de infraestructura como de programacion.

Conclusiones

Como hemos visto el protocolo HTTP puede usarse facilmente para definir un entorno transaccional que puede hacerse seguro usando SSL, la extension CURL de PHP permite efecutuar cualquier tipo de transaccion HTTP por lo que resulta ideal para interactuar con servidores transaccionales HTTP. Numerosas organizaciones utilizan este metodo por ejemplo para procesar pagos online con trajetas de credito y operaciones similares. A medida que mas y mas servicios se ofrezcan en la red el uso de transacciones HTTP para los mas variados servicios sera mas y mas frecuente. Este es claramente el futuro de todos los sistemas transaccionales del mundo.

Jens Auken

You must be logged in to post a comment.

Buscar: