Consultas SOAP - Especificación de los mensajes de entrada y de salida

 

En este apartado se describe mediante un XML-SCHEMA el detalle de los mensajes de entrada y salida del servicio web de consultas de transacciones.

Hay varios tipos de mensajes de envío:

 

1. Mensaje de tipo Transaction (simple): permite obtener información de un determinado tipo de operaciones (p. ej., autorización) correspondiente a un pedido.

2. Mensaje de tipo Monitor (simple): permite obtener información de todos los tipos de operaciones (p. ej., autorización y devolución) asociados a un mismo número de pedido.

3. Mensaje de tipo Transaction (masivo): permite obtener un listado de un determinado tipo de operaciones que se han generado sobre el comercio, en un rango de tiempo determinado.

4. Mensaje de tipo Monitor (masivo): permite obtener un listado de todas las operaciones en el comercio y terminal indicados en un rango de tiempo.

5. Mensaje de tipo Detail: permite tener información del detalle de una operación determinada.

 

Este es el XML-SCHEMA que deben cumplir los mensajes enviados al servicio de consulta de transacciones:

 

<schematargetNamespace=“http://www.w3.org/namespace/” 
xmlns:t=“http://www.w3.org/namespace/” 
xmlns=“http://www.w3.org/2001/XMLSchema” elementFormDefault=“unqualified” 
attributeFormDefault=“unqualified”> 
<element name=“Messages”> 
<complexType> 
<sequence> 
<element ref=“t:Version”/> 
<element ref=“t:Signature”/> 
</sequence> 
</complexType> 
</element> 
<element name=“Version”> 
<complexType> 
<sequence maxOccurs=“unbounded”> 
<element ref=“t:Message”/> 
</sequence> 
<attribute name=“Ds_Version” type=“string” use=“required”/> 
</complexType> 
</element> 
<element name=“Message”> 
<complexType> 
<choice> 
<element ref=“t:Transaction”/> 
<element ref=“t:Monitor”/> 
<element ref=“t:Detail”/> 
<element ref=“t:TransactionMasiva”/> 
<element ref=“t:MonitorMasiva”/> 
<sequence minOccurs=“0” maxOccurs=“unbounded”> 
<element ref=“t:Response”/> 
</sequence> 
<element ref=“t:ErrorMsg”/> 
</choice> 
</complexType> 
</element> 
<element name=“Transaction”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_MerchantCode”/> 
<element ref=“t:Ds_Terminal”/> 
<element ref=“t:Ds_Order”/> 
<element ref=“t:Ds_TransactionType”/> 
<element ref=“t:Ds_Merchant_Data” minOccurs=“0”/> 
</sequence> 
</complexType> 
</element> 
<element name=“TransactionMasiva”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_MerchantCode”/> 
<element ref=“t:Ds_Terminal”/> 
<element ref=“t:Ds_TransactionType”/> 
<element ref=“t:Ds_Fecha_inicio”/> 
<element ref=“t:Ds_Fecha_fin”/> 
</sequence> 
</complexType> 
</element> 
<element name=“Monitor”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_MerchantCode”/> 
<element ref=“t:Ds_Terminal”/> 
<element ref=“t:Ds_Order”/> 
<element ref=“t:Ds_Merchant_Data” minOccurs=“0”/> 
</sequence> 
</complexType> 
</element> 
<element name=“MonitorMasiva”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_MerchantCode”/> 
<element ref=“t:Ds_Terminal”/> 
<element ref=“t:Ds_Fecha_inicio”/> 
<element ref=“t:Ds_Fecha_fin”/> 
</sequence> 
</complexType> 
</element> 
<element name=“Detail”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_MerchantCode”/> 
<element ref=“t:Ds_Terminal”/> 
<element ref=“t:Ds_Order”/> 
<element ref=“t:Ds_TransactionType”/> 
<element ref=“t:Ds_Merchant_Data” minOccurs=“0”/> 
</sequence> 
</complexType> 
</element> 
<element name=“Response”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_MerchantCode”/> 
<element ref=“t:Ds_Terminal”/> 
<element ref=“t:Ds_Order”/> 
<element ref=“t:Ds_TransactionType”/> 
<element ref=“t:Ds_Date”/> 
<element ref=“t:Ds_Hour”/> 
<element ref=“t:Ds_Amount”/> 
<element ref=“t:Ds_Currency”/> 
<choice minOccurs=“0”> 
<sequence> 
<element ref=“t:Ds_CardNumber”/> 
<element ref=“t:Ds_ExpiryDate”/> 
</sequence> 
<element ref=“t:Ds_TelephoneNumber”/> 
</choice> 
<element ref=“t:Ds_SecurePayment”/> 
<element ref=“t:Ds_State”/> 
<element ref=“t:Ds_Response” minOccurs=“0”/> 
<element ref=“t:Ds_Merchant_Data” minOccurs=“0”/> 
<element ref=“t:Ds_CardCountry” minOccurs=“0”/> 
<element ref=“t:Ds_CardType” minOccurs=“0”/> 
<element ref=“t:Ds_AuthorisationCode” 
minOccurs=“0”/> 
</sequence> 
</complexType> 
</element> 
<element name=“Ds_MerchantCode”> 
<simpleType> 
<restriction base=“int”> 
<minInclusive value=“1”/> 
<maxInclusive value=“999999999”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_Terminal”> 
<simpleType> 
<restriction base=“short”> 
<minInclusive value=“1”/> 
<maxInclusive value=“999”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_Order”> 
<simpleType> 
<restriction base=“string”> 
<minLength value=“1”/> 
<maxLength value=“12”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_TransactionType”> 
<simpleType> 
<restriction base=“string”> 
<length value=“1”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_Merchant_Data” type=“string”/> 
<element name=“Ds_Fecha_fin” type=“string”/> 
element name=“Ds_Fecha_inicio” type=“string”/> 
<element name=“Ds_Date”> 
<complexType mixed=“true”/> 
</element> 
<element name=“Ds_Hour”> 
<complexType mixed=“true”/> 
</element> 
<element name=“Ds_Amount” type=“long”/> 
<element name=“Ds_Currency” type=“short”/> 
<element name=“Ds_CardNumber”> 
<simpleType> 
<restriction base=“string”> 
<minLength value=“13”/> 
<maxLength value=“19”/> 
</restriction>
</simpleType> 
element> 
<element name=“Ds_ExpiryDate”> 
<simpleType> 
<restriction base=“string”> 
<length value=“4”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_TelephoneNumber” type=“int”/> 
<element name=“Ds_SecurePayment”> 
<simpleType> 
<restriction base=“short”> 
<minInclusive value=“0”/> 
<maxInclusive value=“1”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_State” type=“string”/> 
<element name=“Ds_Response” type=“int”/> 
<element name=“ErrorMsg”> 
<complexType> 
<sequence> 
<element ref=“t:Ds_ErrorCode”/> 
</sequence> 
</complexType> 
</element> 
<element name=“Ds_ErrorCode”> 
<complexType mixed=“true”/> 
</element> 
<element name=“Signature” type=“string”/> 
<element name=“Ds_CardCountry”> 
<simpleType> 
<restriction base=“short”> 
<minInclusive value=“1”/> 
<maxInclusive value=“999”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_CardType”> 
<simpleType> 
<restriction base=“string”> 
<length value=“1”/> 
</restriction> 
</simpleType> 
</element> 
<element name=“Ds_AuthorisationCode”> 
<simpleType> 
<restriction base=“string”> 
<minLength value=“0”/> 
<maxLength value=“6”/> 
</restriction> 
</simpleType> 
</element> 
</schema>

 

Los posibles campos que se envían en el mensaje de petición mantienen el formato que se indica en la creación de cada uno de los mensajes.

 

DATO

NOMBRE DEL DATO

LONG/TIPO

COMENTARIOS

Identificación de comercio: Código FUC

Ds_MerchantCode

9/N

Obligatorio. Código FUC asignado al comercio.

Número de terminal

Ds_Terminal

3/N

Obligatorio. Número de terminal que le asignará su banco. Tres se considera su longitud máxima

Número de pedido

Ds_Merchant_Order

12 / A-N

Obligatorio. Los 4 primeros dígitos deben ser numéricos, para los dígitos restantes solo se deben utilizar los siguientes caracteres ASCII:
 Del 30 = 0 al 39 = 9
 Del 65 = A al 90 = Z
 Del 97 = a al 122 = z

Tipo de transacción

Ds_TransactionType

1 / A-N

Campo obligatorio para el comercio para indicar qué tipo de transacción es.  Los posibles valores son:
 0 - Autorización
 1 - Preautorización
 4 - Pago referencia
 7 - Autenticación
 A - Pago tradicional

Datos del comercio

Ds_Merchant_Data

1024 / A-N

Campo opcional para el comercio para ser incluido en los datos enviados por la respuesta online al comercio si se ha elegido esta opción.

Fecha de inicio

Ds_Fecha_inicio

26 / A-N

La fecha tendrá un formato: aaaa-MM-dd-HH.mm.ss.xxxxxx.
Un ejemplo para el 1 de diciembre a las 12:05 AM sería:

2019-12-01-12.05.00.000000.

Fecha de fin

Ds_Fecha_fin

26 / A-N

La fecha tendrá un formato: aaaa-MM-dd-HH.mm.ss.xxxxxx.
Un ejemplo para el 1 de diciembre a las 12:05 AM sería:

2019-12-01-12.05.00.000000.

 

Como salida podemos encontrar en el XML los campos que nos permiten tener la información solicitada en la consulta:

 

DATO

NOMBRE DEL DATO

LONG / TIPO

COMENTARIOS

Identificación de comercio: código FUC

Ds_MerchantCode

9 / N

Obligatorio. Código FUC asignado al comercio.

Número de terminal

Ds_Terminal

3 / N

Obligatorio. Número de terminal que le asignará su banco.

3 se considera su longitud máxima.

Número de pedido

Ds_Order

12 / A-N

Obligatorio. Los 4 primeros dígitos deben ser numéricos, para los dígitos restantes solo se deben utilizar los siguientes caracteres ASCII:

Del 30 = 0 al 39 = 9

Del 65 = A al 90 = Z

Del 97 = a al 122 = z

Tipo de transacción

Ds_TransactionType

1 / A-N

Campo obligatorio para el comercio para indicar qué tipo de transacción es. Los posibles valores son:

0 - Autorización

1 - Preautorización

4 - Pago referencia

7 - Autenticación

A - Pago tradicional

Datos del comercio

Ds_Merchant_Data

1024 / A-N

Campo opcional para el comercio para ser incluido en los datos enviados por la respuesta online al comercio si se ha elegido esta opción.

Número de autorización

Ds_AuthorisationCode

6 / A-N

Código alfanumérico de autorización asignado a la aprobación de la transacción por la institución autorizadora.

Fecha

Ds_Date

26 / A-N

La fecha del sistema en la que se ha realizado la operación.

Ejemplo: 2009-09-14-11.59.59.999999.

Hora

Ds_Hour

26 / A-N

La fecha del sistema en la que se ha realizado la operación.

Ejemplo: 2009-09-14- 11.59.59.999999.

Importe

Ds_Amount

Núm.

El importe de la operación.

Moneda

Ds_Currency

3 / Núm.

Código de moneda. Los más usados son:

978 = euros

840 = dólares

826 = libras

392 = yenes

Núm. tarjeta

Ds_CardNumber

14-16 / Núm.

(Depende de la configuración del comercio).

Tipo tarjeta

Ds_CardType

1 / Núm.

C = crédito

D = débito

- -> sin determinar

Pago seguro

Ds_SecurePayment

1 / Núm.

0 - Si el pago NO es seguro.

1 - Si el pago es seguro.

Estado

Ds_State

1 / A-N

Estado de la transacción. Posibles valores:

P: en proceso

F: finalizada

T: sin respuesta

E: operaciones con error de formato.

S: solicitada.

I: incidencia especial.

W: estado temporal.

Error

Ds_ErrorCode

71 / A-N

Código de error. (Solo en mensaje de error).

Ver errores en la tabla de errores.

Código de respuesta

Ds_Response

4 / Núm.

Ver la tabla siguiente.

 

 

Como salida podemos encontrar en el XML los campos que nos permiten tener la información solicitada en la consulta:

 

CODIGO

SIGNIFICADO

0000 a 0099

Transacción autorizada para pagos y preautorizaciones.

0900

Transacción autorizada para devoluciones y confirmaciones.

101

Tarjeta caducada.

102

Tarjeta en excepción transitoria o bajo sospecha de fraude.

104/9104

Operación no permitida para esa tarjeta o terminal.

116

Disponible insuficiente.

118

Tarjeta no registrada.

129

Código de seguridad (CVV2/CVC2) incorrecto.

180

Tarjeta ajena al servicio.

184

Error en la autenticación del titular.

190

Denegación sin especificar motivo.

191

Fecha de caducidad errónea.

202

Tarjeta en excepción transitoria o bajo sospecha de fraude con retirada de tarjeta.

912/9912

Emisor no disponible.

Cualquier otro valor

Transacción denegada.

 

Nota: solo en el caso de las preautenticaciones (preautorizaciones separadas) se devuelve un 0 si está autorizada y el titular se autentica, y un 1, si está autorizada y el titular no se autentica.

En base a este XML-SCHEMA, podemos mostrar varios ejemplos para poder comprobar los datos de entrada y de salida de los XML.

Los campos “tarjeta” y “fecha de caducidad” vendrán en función de la configuración del comercio. En el ejemplo se muestran, pero no son obligatorios y no aparecerán a no ser que se especifique dentro de la configuración definida en el comercio.