You are on page 1of 27

TPV Virtual

Manual de Instalación y mantenimiento para distribuciones


Linux.

Revisión Septiembre de 2009


P á g i n a  | 2 
 

Contenido de esta Guía

Descripción general del TPV Virtual. ........................................................... 3

Descripción de ficheros y directorios ........................................................... 4

Cgi totalización .................................................................................... 5

Proceso TPV Virtual ............................................................................... 7

Cgi Vuelta ........................................................................................... 8

Fichero de configuración tpv.conf .............................................................. 9

Instalación paso a paso ......................................................................... 10

Alta del TPV Virtual en entorno de pruebas. ................................................ 12

Alta del TPV Virtual en entorno de producción ............................................. 13

Firewall ........................................................................................... 14

Operaciones de mantenimiento ............................................................... 14

Errores más frecuentes ......................................................................... 14

Asistencia técnica ............................................................................... 14

Consulta de operaciones y devoluciones. .................................................... 15

Seguridad en las transacciones ................................................................ 17

Protocolo de seguridad CVV2/CVC2/CID ..................................................... 18

Protocolos de seguridad Verified by Visa y MasterCard SecureCode .................... 18

Restricción a tarjetas nacionales. ............................................................ 21

Anexo 1: Ejemplo de script de vuelta en lenguaje PHP ................................... 21

Anexo 2: Integración del TPV con Oscommerce, ZenCart y CRELoaded ................ 23

Anexo 3: Arranque automático del proceso TPV_Virtual. ................................. 23

Anexo 4: TPV Lineal. ............................................................................ 24

 
P á g i n a  | 3 
 

Descripción general del TPV Virtual.

El TPV Virtual de Banesto consta básicamente de dos cgis (vuelta y totalizacion) y


un proceso (TPV_Virtual) que, integrados con su tienda virtual o catálogo de
productos permite realizar cobros con tarjeta de crédito y débito a través de
Internet. El TPV puede ser utilizado simultáneamente por múltiples comercios, cada
uno de los cuales tendrá un certificado emitido por la Autoridad de Certificación de
Banesto. El TPV Virtual de Banesto realiza automáticamente la conciliación entre
pagos y ventas, con toda la información para facilitarle las tareas de gestión
mediante un proceso de totalización y cuadres.

Existen dos entornos en los cuales puede operar el TPV:

Entono de pruebas. Entorno orientado a la instalación, configuración e integración


del TPV con la tienda virtual o catálogo de productos del comercio. Las transacciones
realizadas en este entorno se enviarán al servidor de pruebas de Comercio
Electrónico de Banesto, y no irán asociadas a un comercio en concreto, sino al TPV.
Este entorno es ficticio y la respuesta a las transacciones es aleatoria y no implican
movimiento de fondos

Entorno de producción. Una vez que el TPV haya sido instalado, configurado e
integrado correctamente con el catálogo de productos o tienda virtual se podrá
operar en entorno de producción. En este entorno, las transacciones se enviarán al
servidor de producción de Comercio Electrónico de Banesto e irán asociadas a un
comercio en concreto.

Para operar en cualquiera de estos dos entornos, es necesario previamente darse de


alta en el servidor de Comercio Electrónico correspondiente (de pruebas o de
producción) según se indica en posteriores secciones de este documento.

 
P á g i n a  | 4 
 

Descripción de ficheros y directorios

Al descomprimir TPV_Banesto_Linux.tar.gz, se obtendrán los siguientes ficheros y


directorios:

Directorio cgi-bin. Contiene los ficheros y directorios:

Cgi que envía las transacciones al servidor de Comercio


totalizacion
Electrónico de Banesto.

Fichero de configuración del TPV. Contiene la


tpv.conf configuración para trabajar con el TPV en entorno de
pruebas.

Fichero de configuración del TPV para entorno de


tpv.conf.prod
producción.

Fichero con código html que se envía al servidor de


Banesto junto con cada transacción. Este código, como
cabecera.html
ya se explicará más adelante, aparecerá como
encabezado del formulario de pago.

tpv.cert Fichero de certificado válido para realizar pruebas.

02b6b999.0
Ficheros de la Autoridad Certificadora de Banesto que
33c5cef2.0
permiten reconocer la autenticidad de los certificados
5a6327da.0
que se presentan en cada transacción.
f4d87381.0

Subdirectorio compilarvuelta. Contiene los ficheros necesarios para generar el cgi-


bin vuelta. No se suministra compilado pues es necesario hacer una modificación
previa como más adelante se detalla. Contiene los ficheros:

vuelta.c: fuente del cgi-bin vuelta.

leer_resultado.o: fichero objeto necesario para generar el cgi-bin vuelta.

makevuelta: fichero Makefile para generar el cgi-bin vuelta

 
P á g i n a  | 5 
 

Directorio demonio. Contiene los ficheros:

TPV_Virtual: proceso demonio que recibe del Servidor de Comercio Electrónico de


Banesto las respuestas a las transacciones iniciadas desde el cgi-bin totalizacion, y
las peticiones de inicio de proceso de cuadres con Banesto.

start_TPV: script de arranque del TPV.

stop_TPV: script para parar el TPV.

02b6b999.0 33c5cef2.0 5a6327da.0 f4d87381.0

Directorio html. Contiene la página prueba_TPV.htm desde la que se podrán lanzar


transacciones en entorno de pruebas. Antes de utilizarla habrá que editarla y
modificarla según se indica en la sección de instalación y configuración.

Directorio lib. Contiene las librerías dinámicas necesarias para la ejecución del
demonio TPV_Virtual y el cgi-bin totalizacion. Se deberán copiar en el directorio del
sistema /usr/lib /

Cgi totalización

Envía mediante protocolo SSL los datos asociados a cada transacción al servidor de
Comercio Electrónico de Banesto. Recibe, mediante método GET ó método POST, los
siguientes parámetros obligatorios:

nombre_comercio: nombre del comercio asociado a la transacción. El valor de este


parámetro será el asignado en el alta del TPV en entorno de pruebas, ó el asignado al
comercio en el alta de comercios en producción.

referencia: será un identificador distinto asignado a cada transacción. Será una


cadena alfanumérica de cómo máximo 29 caracteres.

coste: importe de la transacción. Debe estar siempre compuesto por un separador


decimal que será el punto y dos cifras decimales. Ejemplo coste=10.00

resto: valor libre

moneda=EUR.

 
P á g i n a  | 6 
 

El funcionamiento del TPV se parametriza desde el fichero de configuración


tpv.conf. El cgi comprueba que la referencia que recibe como parámetro no se ha
repetido en el mismo día, para ello mantiene un fichero diario (referencias.AAMMDD)
con las referencias de todas las transacciones realizadas en el día. La localización de
este fichero se especifica en el fichero de configuración del TPV, tpv.conf

Para el establecimiento de la conexión SSL con el servidor de Comercio Electrónico


de Banesto, el cgi totalizacion necesita el uso de un certificado emitido por la
autoridad certificadora del banco. Este certificado se encuentra en el fichero
tpv.cert. Para realizar transacciones en producción asociadas a un comercio
determinado, es necesario, además del certificado de TPV (tpv.cert), un certificado
de comercio que se suministra al dar de alta al comercio en producción. Este
certificado se encontrará en el fichero nombre_comercio.cert.

Una vez enviados los datos de la transacción, el cgi totalizacion redirige al cliente al
Servidor de Comercio Electrónico de Banesto, mostrándole el formulario de pago.
Este formulario reside en el servidor del banco, por lo que es único para todos los
comercios. Existe, no obstante, la posibilidad de personalizar en parte el formulario
de pago para cada comercio. Para ello:

En entorno de pruebas, el cgi totalizacion envía al servidor de Banesto el contenido


del fichero cabecera.html. Este fichero contiene código html que aparecerá en la
cabecera del formulario de pago. Si el cgi no puede abrir este fichero (por falta de
permisos o porque no se encuentre en el mismo directorio que el cgi-bin), no se envía
ningún código html adicional apareciendo el formulario de pago sin ninguna
modificación.

En entorno de producción, el cgi totalizacion envía al servidor del banco el contenido


del fichero cabecera_nombre_comercio.html, donde nombre_comercio será el
nombre asignado en el alta en producción al comercio asociado a la transacción en
curso. Si el cgi-bin no puede abrir este fichero, enviará el contenido de
cabecera.html, y en caso de que tampoco pueda abrir este último, no enviará
ningún código html adicional, apareciendo el formulario de pago sin ninguna
modificación.

En entorno de pruebas, el cgi totalizacion se puede invocar desde la página


prueba_tpv.htm, previamente habrá que editarla y modificarla según se detalla
posteriormente. En entorno de producción esta página debe ser sustituida por otra a
la que los clientes llegan tras haber seleccionado los productos o servicios que

 
P á g i n a  | 7 
 

desean adquirir y haber totalizado el importe del pago. Desde esta página se hará,
mediante método POST o GET, una llamada al cgi totalizacion o a otro cgi que a su
vez invoque mediante método POST o GET al cgi totalizacion, pasándole los
parámetros que arriba se indican.

Se recomienda que el cgi totalizacion sea invocado desde otro script que
previamente verifique que el coste asociado a la referencia que ha recibido como
parámetro es el precio real asociado a dicha referencia de compra, ya que se podría
invocar al cgi totalizacion desde una página local cambiando el importe de la
transacción.

Proceso TPV Virtual

El proceso TPV_Virtual recibe del Servidor de Comercio Electrónico de Banesto las


respuestas a las transacciones iniciadas desde el cgi totalizacion, y las peticiones de
inicio del proceso de cuadre con el banco. Se arranca con el script start_TPV y se
para con el script stop_TPV.

La comunicación con el servidor de Banesto tiene lugar usando protocolo SSL, por lo
que, al igual que el cgi totalizacion, el demonio TPV_Virtual necesita un certificado
emitido por la Autoridad Certificadora de Banesto. Este certificado, tanto en entorno
de pruebas como en entorno de producción, se encuentra en el fichero tpv.cert.

Al igual que el cgi totalizacion, el proceso TPV_Virtual, debe leer el fichero de


configuración tpv.conf. Como ya se ha dicho en el apartado anterior, este fichero
debe encontrarse en el mismo directorio que el cgi totalizacion. La manera de
indicarle al demonio la localización de tpv.conf es mediante el parámetro -
path_config path (Ver el contenido del script start_TPV).

El proceso TPV_Virtual genera en el directorio en donde se ejecuta los siguientes


ficheros de log diarios:

TPV_Virtual.log.AAMMDD. Contiene información sobre el flujo de cada transacción


realizada, y detalles del proceso de cuadres diario.

 
P á g i n a  | 8 
 

comercio.log.AAMMDD. Contiene una línea por transacción realizada, con


información sobre el resultado de esta. Cada línea contendrá los siguientes campos
separados por dos puntos “:”

COMERCIO= nombre_comercio
RESULTADO= resultado_transaccion
REFERENCIA= referencia_transaccion
IMPORTE= importe_transaccion
CODIGO= codigo_autorizacion
TARJETA= cuatro_ultimos_digitos_tarjeta
NOMBRE= nombre_titular
CEN_AUT= codigo_centro_autorizador
MONEDA= codigo_moneda

Si el campo RESULTADO vale OK, el campo CODIGO contendrá el código de


autorización. Si vale KO, CODIGO contendrá una explicación de la denegación de la
compra.

Cgi Vuelta

Después de que el cliente ha introducido los datos del pago en el formulario de pago
del servidor de Banesto, éste redirige la transacción al centro autorizador
correspondiente para que autorice o deniegue la transacción. Una vez recibida
respuesta del centro autorizador, el servidor de Banesto establece conexión con el
proceso TPV_Virtual para informarle del resultado de la transacción. Este resultado
lo almacena el demonio en el fichero diario comercio.log.AAMMDD.

Por último se invoca al cgi vuelta del servidor del comercio. Este cgi se encarga de
mostrar una página con el resultado de la transacción, resultado que lee del fichero
comercio.log.AAMMDD.

Este cgi no se suministra compilado pues es necesario hacer una modificación previa
como más adelante se detallará. Además de esta modificación, en este cgi se
pueden incluir todas las acciones que se considere necesarias realizar una vez
conocido el resultado de la transacción (actualización de bases de datos locales,
eliminación de ficheros temporales, etc.).

 
P á g i n a  | 9 
 

No es necesario utilizar el vuelta que proporciona Banesto. Puede ser


sustituido por cualquier desarrollo personalizado en cualquier lenguaje (php,
perl, asp, .Net etc) Se suministra ejemplo en php anexo al final del manual.

Fichero de configuración tpv.conf

A continuación se detallan los parámetros incluidos en este fichero de configuración:

PRODUCCION. Valdrá 0 en entorno de pruebas, ó 1 en entorno de producción.

URL_COMPRA. Url del cgi del servidor de Banesto que el cgi totalizacion invoca tras
enviar los datos de la transacción

PATH_FICH_REF. Indica el directorio donde se desea que el cgi totalizacion genere


los ficheros diarios referencias.AAMMDD. Modificarlo si se quiere que se generen en
otro directorio distinto de aquel donde reside el cgi totalizacion.

SERVIDOR_REMOTO. Nombre del servidor de Comercio Electrónico de Banesto. En


entorno de pruebas será oldsun.banesto.es, y en entorno de producción
comercio.banesto.es.

PUERTO_REMOTO. Puerto por el que escucha el proceso servidor de Comercio


Electrónico en Banesto. En entorno de pruebas será 4455, y en entorno de
producción 4488.

IP_LOCAL. Nombre ó dirección IP de la máquina local donde se instala el TPV virtual.


Su valor por defecto es localhost.

PUERTO_LOCAL. Puerto por el que escucha el proceso TPV_Virtual en la máquina


local. En entorno de pruebas será 6655, y en producción 6688.

EJECUTABLE. Camino y nombre del ejecutable de la tienda que lanzará el TPV Virtual
una vez conocido el resultado de la transacción para que gestione el pedido. Este
ejecutable recibirá como único parámetro la línea que se escribe en el fichero

 
P á g i n a  | 10 
 

comercio.log.aammdd, añadiendo al final la fecha de la operación y el parámetro


resto si se pasó el mismo al cgi totalizacion.

Instalación paso a paso

1. Copiar el contenido de la carpeta cgi-bin en un directorio de cgis del servidor


web local.
2. Copiar el directorio demonio en el servidor local.
3. Copiar en el directorio /usr/lib los ficheros libtpvssl.so.0 y libtpvcrypto.so.0
4. Copiar la página prueba_TPV.htm en un directorio del servidor web local y
editar la línea donde indica el path hacia el cgi-bin totalizacion <FORM
method=POST action="path_al_cgi_totalizacion">
5. Editar el script start_TPV e indicar en el parámetro -path_config el directorio
donde se encuentra el fichero de configuración tpv.conf. Si no se indica
adecuadamente este directorio, el proceso TPV_Virtual no podrá leer este
fichero y generará un mensaje de error indicando esta circunstancia.
6. (Solo si se utiliza el cgi vuelta estándar suministrado por Banesto) Compilar el
cgi-bin vuelta. Para ello habrá que editar previamente el fichero fuente
vuelta.c, y modificar la línea 4 indicando en el define PATH_RESULTADO el
directorio donde se encuentra el fichero comercio.log.AAMMDD, que será el
directorio en donde se ejecute el demonio TPV_Virtual . Comprobar además
que el cgi-bin vuelta tiene permiso de lectura para dicho fichero y acceso a
todos los subdirectorios del path donde se encuentra dicho fichero. De no
hacer esta modificación y estas comprobaciones se producirá un error V0 al
ejecutarse el cgi-bin vuelta. Para compilarlo escribir: make -f makevuelta.
Para hacer cualquier modificación extra de este cgi-bin, leer atentamente los
comentarios que se incluyen en el fichero fuente vuelta.c.

La configuración de permisos para cada fichero es la contenida en el paquete.

 
P á g i n a  | 11 
 

Ejemplo de configuración;

Copiar las liberias en el directorio /usr/lib con permisos de lectura y ejecución.

ls -al /usr/lib |grep tpv

-rwxr-xr-x 1 root root 832614 Oct 6 16:01 libtpvcrypto.so.0*


-rwxr-xr-x 1 root root 186584 Oct 6 16:01 libtpvssl.so.0*

Directorio demonio:

-rw-r--r-- 1 root root 1408 ene 30 2006 02b6b999.0


-rw-r--r-- 1 root root 2152 ene 30 2006 33c5cef2.0
-rw-r--r-- 1 root root 2146 ene 30 2006 5a6327da.0
-rw-r--r-- 1 root root 2146 ene 30 2006 f4d87381.0

-rwxr-xr-x 1 root root 45 sep 6 2005 start_TPV


-rwxr-xr-x 1 root root 198 sep 6 2005 stop_TPV
-rw-r--r-- 1 root root 1722 mar 31 2006 tpv.cert
-rwxr-xr-x 1 root root 29138 sep 6 2005 TPV_Virtual

Contenido start_TPV

#!/bin/sh
./TPV_Virtual -path_config /home/root/public_html/cgi-bin &

Indica el path hacia el fichero de configuración tpv.conf

root 17613 0.0 0.0 1988 820 pts/0 S 16:16 0:00 ./TPV_Virtual -path_config
/home/root/public_html/cgi-bin &

Directorio cgi-bin:

-rw-r--r-- 1 root root 1408 ene 30 2006 02b6b999.0


-rw-r--r-- 1 root root 2152 ene 30 2006 33c5cef2.0
-rw-r--r-- 1 root root 2146 ene 30 2006 5a6327da.0
-rw-r--r-- 1 root root 2146 ene 30 2006 f4d87381.0
-rw-r--r-- 1 root root 2008 nov 8 12:36 nombre_comercio.cert
-rwxr-xr-x 1 root root 14388 sep 6 2005 totalizacion
-rw-r--r-- 1 root root 1722 mar 31 2006 tpv.cert
-rw-r--r-- 1 root root 180 nov 8 12:49 tpv.conf
-rwxr-xr-x 1 root root 15279 oct 20 10:22 vuelta

 
P á g i n a  | 12 
 

Alta del TPV Virtual en entorno de pruebas.

Para llevar a cabo el alta en pruebas, habrá que entrar en la aplicación de GESTION
DEL TPV, conectándose a la página web que se indica en el e-mail que se recibió con
el paquete TPV_Banesto_Linux.tar.gz, utilizando el usuario y clave que en este
mismo e-mail se indica.

Elegir la opción ALTA DEL TPV EN ENTORNO DE PRUEBAS. Este proceso de alta tiene
como resultado el registro del TPV en el servidor de pruebas de Comercio Electrónico
de Banesto.

En este momento ya se pueden enviar transacciones en el entorno de pruebas desde


la página prueba_TPV.html. Para ello:

Arrancar el proceso TPV_Virtual ejecutando el script start_TPV

Rellenar los campos de esta página especificando en el campo Nombre de Comercio


el nombre identificador del TPV que se indica en el e-mail de envío de software.

Una vez dado de alta el TPV en entorno de pruebas, se podrán modificar los datos del
alta en este entorno conectándose a la aplicación de GESTIÓN DEL TPV VIRTUAL
eligiendo la opción MODIFICACIÓN ALTA DEL TPV EN ENTORNO DE PRUEBAS.

En el entorno de pruebas, el resultado de las transacciones es aleatorio.

Número de tarjeta de pruebas 4921229706097709


Caducidad 12/2010
Cvv2 313

 
P á g i n a  | 13 
 

Alta del TPV Virtual en entorno de producción

Una vez configurado correctamente el TPV con el catálogo de productos del


comercio, y después de haber dado de alta el TPV en entorno de pruebas, se podrá
proceder a dar de alta comercios para que puedan operar en entorno de producción
(real).

Para procesar el alta en producción deberá enviar un correo electrónico a la


dirección implantacion_ce@banesto.es indicando los siguientes datos;

• CIF/NIF del titular del contrato de comercio electrónico.


• Dirección IP donde está instalado el TPV
• Url del script o página de retorno

Tras solicitar el alta del comercio se recibirá en breve un correo electrónico de


confirmación del alta en producción con los siguientes datos;

Este será el valor que deberá tomar el parámetro


Identificador de
nombre_comercio para todas las transacciones asociadas a ese
comercio
comercio

Debe copiarse en el mismo directorio donde reside el cgi


Certificado de comercio
totalización

Debe copiarse en el mismo directorio donde reside el cgi


Certificado de TPV totalización y también de copiarse en el mismo directorio donde
reside el proceso TPV_Virtual.

Proceso a realizar una vez recibida la confirmación de alta en


producción.

• Parar el proceso TPV_Virtual ejecutando el script stop_TPV.


• Renombrar el fichero tpv.conf.prod a tpv.conf (se recomienda hacer
previamente una copia de este último para poder volver al entorno de
pruebas si se considera necesario).
• Arrancar de nuevo el proceso TPV_Virtual con el script start_TPV.

 
P á g i n a  | 14 
 

Firewall
Si su servidor está detrás de un firewall o cortafuegos deberá habilitar las siguientes
reglas;

Origen Puerto Protocolo Destino Puerto


Origen destino

IP servidor Cualquiera TCP 195.76.19.128 máscara 4455


255.255.255.128
4488

195.76.19.128 Cualquiera TCP IP servidor 6655


máscara
6688
255.255.255.128

Operaciones de mantenimiento
 

Los certificados que identifican al TPV tpv.cert y comercio nombre_de_comercio.cert


tienen una caducidad anual. Mantenga actualizada su dirección de correo electrónico
para recibir correctamente los mismos antes de que finalice su periodo de validez.

Errores más frecuentes


 

Los códigos de error más frecuentes que puede mostrar la pasarela junto con su
solución pueden encontrarlos en la aplicación de gestión del TPV en el apartado FAQ.

Asistencia técnica
 

Si usted tiene alguna consulta técnica referente al TPV Virtual, deberá enviar un
correo electrónico a la dirección implantación_ce@banesto.es

 
P á g i n a  | 15 
 

Consulta de operaciones y devoluciones.

Banesto facilita la aplicación Banesnet donde los comercios podrán visualizar las
operaciones realizadas y gestionar devoluciones totales y parciales. Esta aplicación
deben solicitarla en su sucursal junto con el contrato de comercio electrónico.

Una vez hemos accedido a la aplicación Banesnet Empresas en la opción Otros


cobros accedemos al menú Comercios / TPV´s y seleccionamos la correspondiente a
nuestro Comercio Virtual.

En la consulta de Operaciones Ventas / Devoluciones podemos visualizar las


transacciones realizadas en nuestro comercio por día

 
P á g i n a  | 16 
 

Si accedemos a la Consulta de Totales Diarios podremos visualizar el número e


importes de cada una de las operaciones realizadas en nuestro comercio.

 
P á g i n a  | 17 
 

Mediante la opción Detalle de Ventas realizar la devolución parcial o Total de cada


una de las transacciones realizadas en nuestro comercio.

Seguridad en las transacciones

La pasarela de pagos de Banesto asegura tanto al Comercio como al Comprador los


siguientes aspectos:

• Privacidad - Garantiza a través de la encriptación SSL (proceso de


transformación de la información) que no pueda ser desencriptada o leída por
nadie que no sea el receptor.

• Integridad - Asegurada a través de algoritmos de encriptación. Si alguien


intenta alterar un mensaje encriptado no se podrá desencriptar
correctamente, avisando al receptor de que alguien intentó alterarlo.

• Autentificación - Se consigue a través de los certificados. Aseguran que las


entidades participantes son quienes dicen ser. Esta autentificación pude darse
de cliente a servidor o solo de servidor. De esta forma permitimos una
transacción con una seguridad completa en todos los aspectos, es decir, desde
que el cliente aporta sus datos de pago, hasta que se obtiene el resultado de
la operación.

El esquema de seguridad utilizado se basa en certificados entre emisor y receptor,


que utilizan el protocolo Secure Sockets Layer (SSL) 256 bits. El cifrado de 256 bits,
le proporciona el máximo nivel de protección posible al realizar operaciones
financieras o confidenciales a través de Internet. Este protocolo garantiza la
confidencialidad en el cifrado de datos, la autentificación de los servidores, la
integridad de los mensajes, no permitiendo las modificaciones en la información, y
opcionalmente, autentificar al cliente, y así conocer la identidad del usuario.

 
P á g i n a  | 18 
 

Protocolo de seguridad CVV2/CVC2/CID

Es un código de tres cifras impreso en el panel de firma del reverso de las tarjetas
Visa (CVV2) o Mastercard (CVC2). En las tarjetas American Express el código tiene 4
dígitos y va impreso en el frontal de la tarjeta (CID). Gracias a él es posible
identificar que la tarjeta es verdadera y existe.

Requerir este dato al titular permite reducir considerablemente el fraude con


tarjetas en transacciones no presenciales ya que se evita el robo de tarjetas
mediante la generación de PAN de tarjetas con programas informáticos. Este código
no aparece en facturas de venta, ni se almacena sólo está impreso en la tarjeta, por
lo que normalmente su aportación por parte del titular, implica mayor tranquilidad
acerca de la legitimidad de la transacción y de alguna manera nos asegura que la
tarjeta está en su poder en el momento de realizar la transacción.

Si el banco emisor de la tarjeta valida dicho código y concluye que es erróneo, la


posibilidad de que la transacción sea fraudulenta es muy alta, por lo que se
denegará, evitando el fraude y protegiendo al comercio.

Protocolos de seguridad Verified by Visa y MasterCard


SecureCode

En el año 2001 el número de retrocesiones y fraudes en transacciones a través de


Internet comenzaba a representar una cifra significativa. La mayoría de las
devoluciones estaban producidas por reclamaciones en las que los titulares de las
tarjetas indicaban su no participación en la transacción. Para reducir el número de
compras con disputas existía pues una necesidad de un sistema de pago que
permitiera verificar que persona estaba realizando la transacción no presencial. Este
proceso de verificación se denomina “Autentificación del pago”. Para ello las marcas
de tarjetas Visa y MasterCard promovieron a nivel mundial los protocolos seguros de
pago Verified by Visa y MasterCard SecureCode. Ambos se basan en la tecnología 3D-
Secure.

Esta tecnología desarrolla la capacidad para que los emisores de las tarjetas tengan
capacidad para realizar la autentificación de un pago, esto es, garantiza que el
cliente que está usando la tarjeta es verdaderamente el titular de la misma, lo que

 
P á g i n a  | 19 
 

reduce la probabilidad de uso fraudulento de las tarjetas, además de mejorar el


funcionamiento de la transacción electrónico ya que beneficia a todos los
participantes compradores, comercios y entidades bancarias.

Estos protocolos aseguran el control del titular sobre el uso de su tarjeta para sus
compras en Internet y proporciona seguridad en los pagos agregando un nivel
adicional de protección para consumidores y comercios. Estos protocolos han
reducido el número de retrocesiones y fraude en comercio electrónico en un 80%.

3D-Secure pone en contacto al cliente con su banco emisor de la tarjeta en el


momento del pago. Al conectar al cliente con su banco, éste puede identificarlo, por
ejemplo pidiendo una contraseña asociada a la tarjeta. Sin esta contraseña el pago
no sería seguro. En realidad la forma que tenga el banco emisor de autenticar a su
cliente depende de cada banco (claves, llamada telefónica, etc). Lo que se consigue
con el protocolo es establecer una vía común para conectar al titular en el momento
de la compra con su banco y que éste proceda a su identificación.

Para un titular cuya tarjeta está registrada en Verified by Visa o MasterCard


SecureCode, el proceso de compra en comercio adherido consiste en una a vez
presentada la página de pago y al introducir el número de tarjeta en el formulario, el
cliente verá que una página nueva emerge para conectarle con su banco y le pide una
password (o podría ser otro tipo de identificación). Si la password introducida es
correcta el proceso de pago sigue normalmente y se cierra la operación.

El TPV Virtual de Banesto es compatible con los protocolos de pago seguro por
Internet, Verified by Visa y MasterCard SecureCode y es transparente para los
comercios. En Banesnet podrá consultar que transacciones son realizadas mediante
pago seguro o pago normal.

El hecho de que una transacción sea segura puede implicar según la normativa que
esté vigente de Visa y Mastercard y en función del contrato con Banesto, que el
comercio tenga protección (garantía de pago) frente a los retrocesos del titular en
aquellos casos que el titular niega la participación en la compra, sin perjuicio de los
derechos del consumidor contemplados en la Ley y las marcas de tarjeta por lo que
no implica que el comercio no tenga responsabilidad sobre repudios del tipo
“mercancía no recibida” o “mercancía dañada” los cuales se tramitarán a través de
las oficinas y de acuerdo con las normativas de las marcas internacionales.

 
P á g i n a  | 20 
 

Modalidades de pago en el TPV de Banesto.

Seguro: El TPV trata de autorizar la operación exclusivamente de forma segura


utilizando los protocolos CES. Esta verificación la puede realizar el propio banco
emisor, aceptando sin más el riesgo de repudio, o solicitar la autenticación al titular
por aquel medio que considere oportuno para verificar su identidad. No son
aceptadas las transacciones que por normativa no gozan de protección para el
comercio (Visa Business/Corporate MasterCard no europeas o Visa anónima prepago).
No todos los titulares o tarjetas están vinculadas al sistema CES lo que puede limitar
las ventas. Existe una modalidad más segura donde solo se admiten operaciones CES
donde el titular se ha autenticado con éxito.

SSL/No garantizado: Operaciones realizadas en entorno seguro, utilizan el número


de tarjeta fecha de caducidad y código de seguridad CVC2/CVV2/CID. No existe
garantía de pago para el comercio, pero es sin duda el tipo de pago más extendido.
Si el titular del medio de pago reclama a su banco emisor el importe de una
operación por no haberla realizado, Banesto queda facultado para efectuar el cargo
contra la cuenta o cuentas que mantenga el comercio.

Mixto: Es una combinación de los medios de pago seguros y estándar SSL. Las
operaciones que se puedan hacer como seguras se intentan hacer como segura, y las
que no, se realizan como una operación normal. En este caso en las operaciones
seguras el comercio tiene garantía de pago y en las no seguras el responsable es el
propio comercio. Es importante señalar que si una tarjeta admite autentificación
siempre se trata de auténtica al titular independientemente del importe, es decisión
de la entidad permitirle continuar sin autentificación.

El paso de un tipo de modalidad a otro es trasparente en cuanto a desarrollo del


comercio.

 
P á g i n a  | 21 
 

Restricción a tarjetas nacionales.

Si su tienda virtual solo realiza ventas en el territorio nacional puede aumentar la


seguridad de las transacciones restringiendo el pago a tarjetas nacionales. Consulte a
través del correo electrónico implantacion_ce@banesto.es.

Anexo 1: Ejemplo de script de vuelta en lenguaje PHP

<?php
/**
* Esta función obtiene el resultado de la transacción tras las comprobaciones de Banesto.
* Devuelve 1 si no hubo ningún error y -1 en caso contrario (OJO: no obtiene el código del
error, como hacía la de Banesto).
* Si no hay errores, carga los datos de la transacción en un array (pasado como parámetro
por referencia).
* Los datos se obtienen del log correspondiente a la fecha pasada por GET, para la
referencia de la transacción (tb pasada por GET).
* Sólo se cogen los datos indicados en el array $datos_log.
*/
function leer_resultado(&$datos)
{
$datos = array();
$valor = -1;

// Leemos las filas del log correspondiente a la fecha en cuestión:


$filas_log = file(PATH_RESULTADO . "/comercio.resultados." . $GLOBALS['fecha']);

foreach ($filas_log as $fila)


{
$datos_fila = explode(":", $fila);

foreach ($datos_fila as $dato)


{
if (preg_match("/^(\w+)=(.*)$/", $dato, $kv_dato) && in_array($kv_dato[1],
$GLOBALS['datos_log']))
{
$datos[strtolower($kv_dato[1])] = $kv_dato[2];
}
}

// Sólo nos interesan los datos para la referencia pasada por GET (tb comprobamos
que el nombre del comercio es correcto):
if (isset($datos['comercio']) && ($datos['comercio'] == $GLOBALS['comercio']) &&
isset($datos['referencia']) && ($datos['referencia'] == $GLOBALS['referencia']))
{
$valor = 1; // no hay error
break; // ya no hace falta mirar más filas
}
}

 
P á g i n a  | 22 
 

return $valor;
}

// -----------------------------------------------------------------------------
// Configuración del script (cambiar lo que corresponda para otros comercios):
// -----------------------------------------------------------------------------
/**/

// URL de destino (página del comercio a donde se redirigirá):


$url_redir = "http://www.tupaginaweb.com";

// Directorio donde se genera el fichero comercio.log.<aammdd>:


define("PATH_RESULTADO", "/directorio/TPV/demonio");
/**/

// Parámetros recibidos por GET:


$comercio = $_GET['comercio'];
$referencia = $_GET['referencia'];
$fecha = $_GET['fecha'];
$email = isset($_GET['email'])? $_GET['email'] : "";

// Datos que nos interesan del log:


$datos_log = array("COMERCIO", "RESULTADO", "REFERENCIA", "IMPORTE", "CODIGO",
"MONEDA");

// Leemos el log de esta fecha y obtenemos los datos correspondientes a la transacción


indicada por la referencia:
$valor = leer_resultado($datos);

// Si no hubo ningún error:


if ($valor == 1)
{
// Transacción autorizada:
if ($datos['resultado'] == "OK")
{
$resultado = 1;
}
// Transacción no autorizada:
else
{
$resultado = 0;
}
}

// Si hubo algún error:


else

 
P á g i n a  | 23 
 

{
$resultado = -1;
}

// Redirigimos a la página del comercio:


$param_get = "resto=" . $resto . "&referencia=" . $referencia . "&fecha=" . $fecha . "&res="
. $resultado ."valor=" .$valor;

header("Location: " . $url_redir . "?" . $param_get);


exit();
?>

Anexo 2: Integración del TPV con Oscommerce, ZenCart y


CRELoaded

La presente versión del TPV Virtual de Banesto es compatible con los software para
administrar catálogos de productos y tiendas virtuales de código abierto (opensource)
Oscommerce, ZenCart y CreLoaded. Para ello puede descargar desde el sitio web de
sus desarrolladores http://www.oscommerce.org.es la última versión del módulo para
integrar esta aplicación con el software del TPV. Banesto no proporciona soporte
acerca de software de terceros.

Anexo 3: Arranque automático del proceso TPV_Virtual.

• Crear un fichero en init.d con la ruta de ejecución de start_TPV

• Desde el perfil de arranque utilizado para arrancar el sistema operativo crear


un enlace simbólico en el directorio donde guardar los script con los procesos
que se deben arrancar para este perfil.  

•  

 
P á g i n a  | 24 
 

Anexo 4: Módulo Lineal

El módulo lineal, es un componente adicional del TPV Virtual anteriormente descrito


y que proporciona la posibilidad de realizar pagos directamente desde su propio sitio
web sin redirigir al usuario al servidor de comercio electrónico de Banesto, o bien
para realizar el envío de ficheros de transacciones para cobros de remesas.

Este componente consta de dos ficheros intercio_bto que es el cgi (puede utilizarse
como ejecutable) para el procesamiento de transacciones, y de un fichero de
configuración tpv_transp.conf

Instalación y configuración

• Copiar los ficheros intercio_bto y tpv_transp.conf en el mismo directorio


donde esté copiado el cgi totalizacion.

• Editar los valores del fichero de configuración tpv_transp.conf adecuados a los


de su servidor.

Fichero de configuración

Tanto en modo ejecutable como cgi, toma valores del fichero de configuración
tpv.conf del TPV Virtual triangular y del fichero de configuración propio
tpv_transp.conf, el cual contiene los siguientes datos:

#datos comercio
TOTALIZACION=/cgi-bin/totalizacion
IP_COMERCIO=XXX.XXX.XXX.XXX
PUERTO_COMERCIO=80
TIPO_CONEXION=normal

#datos banco
IP_BANCO=comercio.banesto.es

#nombre de los ejecutables a arrancar en cada caso


EJECUTABLE_CARGO=nombre_ejecutable_cargo

#ruta de acceso a los ficheros de log


PATH=/logs

 
P á g i n a  | 25 
 

Datos comercio:

• TOTALIZACION: URL del cgi totalizacion (absoluta o relativa).


• IP_COMERCIO: Dirección IP de la maquina donde se está ejecutando.
• PUERTO_COMERCIO: Puerto del Web server del comercio.
• TIPO_CONEXION: Indica el tipo de conexión con el cgi totalizacion. Podrá ser
"normal" o "ssl".

Datos banco:

• IP_BANCO: Servidor de comercio electrónico de Banesto.

Nombre de los ejecutables:

• EJECUTABLE_CARGO: Nombre del ejecutable que debemos arrancar cuando se


finaliza una operación de cargo.

Ruta ficheros log:

• PATH: Directorio donde genera los log el demonio TPV_Virtual.

Funcionalidad

Existe la posibilidad de doble funcionalidad dependiendo de los parámetros que se


envíen así como varias formas de ejecución.

Invocación al componente "intercio" como cgi para realizar operaciones de cargo

Con presentación en Banesto del Formulario de Compra

En este caso NO deberán pasarse en la operación cargo los parámetros propios de la


tarjeta y será el propio Banco quien muestre el formulario y solicite dichos datos
realizando la operación y devolviendo los datos a la dirección indicada.

Sin presentación en Banesto del formulario de Compra

En este caso deberán pasarse en la operación cargo los todos los parámetros
indicados en este documento Operación, numero tarjeta, fecha caducidad, etc que
los solicitará el propio comercio. Como respuesta aparecerá una pantalla donde se
indican el resultado final de la operación. Existe la posibilidad de indicar en el
fichero de configuración el nombre de un ejecutable a invocar cuando se recibe la
respuesta pudiéndole pasar los datos de la operación como parámetros de entrada.(

 
P á g i n a  | 26 
 

Resultado , descripción en caso de error , descripción nombre comercio, referencia ,


importe, Código autorización ... )

Invocación al componente "intercio" como ejecutable bien desde otro ejecutable o


bien desde la línea de comandos

En este caso no existirá nunca la posibilidad de solicitud de datos por el banco.

Operaciones de Cargo:

Deberá invocarse al componente intercio con todos los datos requeridos para
efectuar el cargo y obtendrá el resultado todos los datos requeridos dando como
resultado un texto de resultado final de operación y con la posibilidad de arrancar
un ejecutable indicado en el fichero de configuración que recibirá los parámetros de
la operación (Resultado, descripción , nombre comercio, referencia, importe,
Código autorización ). Además de los parámetros nombre_comercio, referencia,
coste, moneda y resto si se utiliza deberá enviar adicionalmente los siguientes
parámetros.

CAMPO DESCRIPCIÓN
operación contendrá el valor "cargo".
num_tarjeta contendrá el numero de la tarjeta.
mes mes de la fecha de caducidad (01 a 12).
ano año de la fecha de caducidad (2009...).
Contendrá el valor de 3-4 dígitos extra llamado CVV2
cvv2
dependiendo del Nº de tarjeta.

Verificaciones

Para evitar errores en el procesamiento de las transacciones se recomienda realizar


las siguientes validaciones antes de enviar una transacción.

• Permitir únicamente los prefijos de las distintas marcas de tarjetas. (34 y 37


para American Express, 4 para Visa y Visa Electron, 51-55 para MasterCard,
5020-5038-6404-5759-6761 para Maestro.)

 
P á g i n a  | 27