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: |
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: |
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. 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. 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.