Enviar XML en PHP a servidor seguro, y recibir respuesta XML

Rodolfo Porras
06 de Julio del 2010
Estoy instalando un sistema de verificación de identidad con la empresa Equifax. Me enviaron un instructivo, según el cual debo enviar datos del comprador en mi sistema (nombre, direccion, dni...) en formato XML a un server (HTTPS://decidir...) y el server me devolvería otro XML con el cual podría evaluar la veracidad de los datos ingresados por esa persona (comprador en mi carrito de compras).

El tema es que he utilizado diferentes scripts en PHP para enviar el XML, pero siempre me devuelve o un error, o nada.

Aquí les envío los datos más importantes del instructivo que me dieron.
Gracias por su atención!

PD: Estoy haciendo la consulta por esta vía porque en SOPORTE de Equifax no envían scrips de ejemplo, y tengo que arreglármelas por la mía.


CARACTERISTICAS DE COMUNICACION --------------------------

Tipo de servicio: Web Service
Seguridad: SSL a través del protocolo HTTP
Estándar de formato: XML-RPC (Remote Procedure Call).
Especificación XML-RPC : http://www.xmlrpc.com/spec

Método de envío: POST
URL: https://aplicaciones.decidir.com/decidir-ar-svi/JavaXmlRpcServer

FORMATO DE ENTRADA ------------------------------

El formato de la llamada que debe ser realizada es:

<?xml version="1.0" encoding="ISO-8859-1"?>
<methodCall>
<methodName>obtenerPorcentajes</methodName>
<params>
<param><value><string>01234567</string></value></param>
<param><value><string>25418884</string></value></param>
<param><value><string>20254188841</string></value></param>
<param><value><string>FERNANDEZ CRISTIAN GUSTAVO</string></value></param>
<param><value><string>UGARTE 4220</string></value></param>
<param><value><string>30/07/1976</string></value></param>
</params>
</methodCall>


DETALLE DEL INPUT ---------------------------------------------

Un pedido consta de seis parámetros, los cuales deben estar en el siguiente orden:

• Idcliente o customerId: es el número de comercio asignado por DECIDIR
• DNI: número de DNI que se quiere validar
• CUIT: número de CUIT que se quiere validar
• Nombre: nombre completo de la persona o razón social de la empresa a consultar.
• Dirección: Calle y número de la persona o razón social de la empresa a consultar.
• Fecha de nacimiento: Fecha de nacimiento de la persona con formato dd/mm/aaaa

De los mismos, los parámetros id cliente y nombre son obligatorios. De los parámetros
DNI y CUIT uno de ellos es obligatorio. Si vienen ambos, se toma en cuenta el CUIT.

FORMATO DE SALIDA ------------------------------------

La respuesta al pedido devuelta por DECIDIR consta del formato estándar especificado
por XML-RPC, el cual a su vez tiene embebido otro XML con la respuesta fabricada por
DECIDIR.

El XML de respuesta constará del siguiente formato:

<?xml version="1.0" encoding="ISO-8859-1"?>
<methodResponse>
<params>
<param>
<value>
Respuesta XML
</value>
</param>
</params>
</methodResponse>

Se devuelve un XML que contiene otro XML, Respuesta XML, que es la respuesta al
pedido. Este último tiene un formato como se define a continuación:

Ejemplo:

<?xml version="1.0" encoding="ISO-8859-1"?>
<coincidences returnCode="1" message="Hay coincidencias del 100 % para el nombre, 100 %
para el domicilio y 100 % para la fecha de nacimiento.">
<fullName percentage="100" />
<address percentage="100" />
<birthdate percentage="100" birthdateValidationType="2" ReturnAge="1" />
</coincidences>

Como se observa en el ejemplo, se devuelve el porcentaje de coincidencia para cada dato pedido, bajo el atributo “percentage”.
“ReturnAge”: valor “1” si la persona es mayor a 18 años o “2” si es menor.
“birthdateValidationType”: los valores posibles son: “2” si se posee la fecha entera en la base de datos ó “1” si solo se dispone del año.
“returnCode”: es un código de respuesta que puede adquirir los siguientes valores “1” como ok ó “2” si por algún motivo no se pueden devolver los datos.
“message”: Una frase con el resultado de la validación o el mensaje de error en caso de que returnCode sea igual a “2”.