CONEXIÓN POR WEBSERVICE

Funcionamiento Webservice-SOAP

El siguiente esquema presenta el flujo general de una operación realizada con el TPV Virtual.

descripcion general del flujo

1 - El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2 - El comercio envía los datos del pago al TPV virtual.

3 - Una vez realizado el pago, el TPV virtual informa del resultado de la operación.

4 - El comercio devuelve la informacion del resultado del pago al titular.

Mensaje de petición de pago

Para que el comercio pueda realizar la petición a través del Web Service de Redsys, es necesario intercambiar una serie de datos, tanto en los mensajes de petición como en los mensajes de respuesta.

La estructura del mensaje siempre será la misma, estableciendo como raíz del mismo el elemento <REQUEST> . En su interior siempre deben encontrarse tres parámetros:

  • <DATOSENTRADA> Datos de la petición de pago.

  • <DS_SIGNATUREVERSION>: Versión del algoritmo de firma.

  • <DS_SIGNATURE>: Firma de los datos de la petición de pago.

Ejemplo de mensaje enviado en la petición SOAP:

									
								   	   
<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_ORDER>1444904795</DS_MERCHANT_ORDER>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_PAN>XXXXXXXXXXXXXXXX</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>XXX</DS_MERCHANT_CVV2>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_TERMINAL>871</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_EXPIRYDATE>XXXX</DS_MERCHANT_EXPIRYDATE>
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>VV3acxBgABrS5VYcLyJD1KqIsa2pPdvajPBG510lFfg=</DS_SIGNATURE>
</REQUEST>
									 
								 

Con éstos tres valores se crea el mensaje que se envía en la petición SOAP a una url que depende del entorno donde se quiera realizar la operación:

https://sis.redsys.es/sis/services/SerClsWSEntrada

https://sis-t.redsys.es:25443/sis/services/SerClsWSEntrada

A continuación se detalla como se obtiene el valor de cada parámetro:


  • <DATOSENTRADA>

Para obtener el elemento <DATOSENTRADA>, debemos montar una cadena con todos los datos de la petición en formato XML

Para todas las peticiones se deben enviar los parámetros obligatorios. Los parámetros opcionales deben usarse si el comercio desea utilizar operativas especiales, como por ejemplo el “Pago por referencia” (Pago 1-Click). En este caso, se deberán incluir los parámetros específicos de este tipo de operativa en el parámetro <DATOSENTRADA> como se ve en el ejemplo:

									
								   	   
<DATOSENTRADA>
	<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
	<DS_MERCHANT_ORDER>1444904795</DS_MERCHANT_ORDER>
	<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
	<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
	<DS_MERCHANT_PAN>XXXXXXXXXXXXXXXX</DS_MERCHANT_PAN>
	<DS_MERCHANT_CVV2>XXX</DS_MERCHANT_CVV2>
	<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
	<DS_MERCHANT_TERMINAL>871</DS_MERCHANT_TERMINAL>
	<DS_MERCHANT_EXPIRYDATE>XXXX</DS_MERCHANT_EXPIRYDATE>
</DATOSENTRADA>
									 
								 
  • <DS_SIGNATUREVERSION>

En la petición se debe identificar la versión concreta de algoritmo que se está utilizando para la firma. Actualmente se utiliza el valor HMAC_SHA256_V1 para identificar la versión de todas las peticiones, por lo que este será el valor de éste parámetro.


  • <DS_SIGNATURE>

Para calcular la firma (<DS_SIGNATURE>) es necesario el valor del parámetro <DATOSENTRADA>, y una clave específica para cada terminal (clave del comercio). Ésta clave se puede obtener accediendo al Módulo de Administración, opción Consulta datos de Comercio, en el apartado “Ver clave”, tal y como se muestra en la siguiente imagen:

descripcion general del flujo

1. Una vez obtenida la clave del comercio debe codificarse en BASE64.

2. Hay que hacer un cifrado 3DES entre ésta clave codificada y el valor del número de pedido de la operación (Ds_Merchant_Order).

3. Con el cifrado anterior y el parámetro <DATOSENTRADA> se calcular el HMAC SHA256.

4. El valor del HMAC SHA256 debe codificarse en BASE64, y el resultado de la codificación será el valor de la firma.


Mensaje de respuesta

Tras el envío de la petición al TPV Virtual, el comercio recibe una respuesta que debe capturar. Se puede recibir dos tipos de respuesta:
  • Respuesta con error

- Si se ha obtenido algún error, el mensaje de respuesta enviará un mensaje con

				        
		    <!--Ejemplo de respuesta de pago con errores: --> 
		   
<RETORNOXML>
	<CODIGO>SIS0253</CODIGO>
	<RECIBIDO>
		<REQUEST>
			<DATOSENTRADA>
				<Ds_Amount>145</Ds_Amount>
				<Ds_Currency>978</Ds_Currency>
				<Ds_Order>1444912789</Ds_Order>
				<Ds_Signature>bAuiQOymGvYzqHi7dEeuWrRYFeUjtFH6NyOoWSl0vHU=</Ds_Signature>
				<Ds_MerchantCode>999008881</Ds_MerchantCode>
				<Ds_Terminal>871</Ds_Terminal>
				<Ds_Response>0000</Ds_Response>
				<Ds_AuthorisationCode>050372</Ds_AuthorisationCode>
				<Ds_TransactionType>0</Ds_TransactionType>
				<Ds_SecurePayment>0</Ds_SecurePayment>
				<Ds_Language>1</Ds_Language>
				<Ds_Card_Type>D</Ds_Card_Type>
				<Ds_MerchantData></Ds_MerchantData>
				<Ds_Card_Country>724</Ds_Card_Country>
			</DATOSENTRADA>
	     </REQUEST>
	  <RECIBIDO>
</RETORNOXML>

					   
					
  • Respuesta con <CODIGO>0</CODIGO>

- En este caso se ha procesado el pago y hay comprobar si éste pago se ha autorizado o denegado. En el caso que el pago se autorice, se recibirá en la respuesta <Ds_Response>0000</Ds_Response>.

											
					   	  
		<!--Ejemplo de respuesta de pago (comercio configurado sin envío de datos de tarjeta): --> 
<RETORNOXML>
	<CODIGO>0</CODIGO>
	<OPERACION>
		<Ds_Amount>145</Ds_Amount>
		<Ds_Currency>978</Ds_Currency>
		<Ds_Order>1444912789</Ds_Order>
		<Ds_Signature>bAuiQOymGvYzqHi7dEeuWrRYFeUjtFH6NyOoWSl0vHU=</Ds_Signature>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>871</Ds_Terminal>
		<Ds_Response>0000</Ds_Response>
		<Ds_AuthorisationCode>050372</Ds_AuthorisationCode>
		<Ds_TransactionType>0</Ds_TransactionType>
		<Ds_SecurePayment>0</Ds_SecurePayment>
		<Ds_Language>1</Ds_Language>
		<Ds_Card_Type>D</Ds_Card_Type>
		<Ds_MerchantData></Ds_MerchantData>
		<Ds_Card_Country>724</Ds_Card_Country>
	</OPERACION>
</RETORNOXML>

							
					   

Como se puede observar en los ejemplo anteriores, la respuesta está formada por dos elementos principales:

- Código (<CODIGO>): Indica si la operación ha sido correcta o no, (no indica si ha sido autorizada, solo si se ha procesado). Un 0 indica que la operación ha sido correcta. En el caso de que sea distinto de 0, tendrá un código de error.

- Datos de la operación (<OPERACION>): Recoge toda la información necesaria sobre la operación que se ha realizado. Mediante este elemento se determina si la operación ha sido autorizada o no a partir del valor del elemento <Ds_Response> .

Utilización de librerías de ayuda

De forma opcional, Redsys suministra librerias (disponibles en PHP, JAVA y .NET) que simplifican la integración por parte del comercio. En este apartado se explica cómo se utilizan éstas librerias.

  • Envío petición

		                    
/*Importar el fichero principal de la librería, tal y como se muestra continuación. El comercio debe decidir
si la importación desea hacerla con la función “include” o “required”, según los desarrollos realizados. */
include_once 'redsysHMAC256_API_WS_PHP_4.0.4/apiRedsysWs.php';
/* Definir un objeto de la clase principal de la librería, tal y como se muestra a continuación: */
$miObj = new RedsysAPIWs;
/* Calcular el elemento . Para llevar a cabo el cálculo de
este parámetro, se debe llamar a la función de la librería “createMerchantSignatureHostToHost()” con la
clave del comercio SHA 256 obtenida del módulo de administración y el elemento con los datos de la
petición de pago (), tal y como se muestra a continuación: */
$datosEntrada="145144490479599
9008881978XXXXXXXXXXXXXXXXXXX0871XXXX";
$claveSHA256 = 'Mk9m98IfEblmPfrpsawt7BmxObt98Je';
$firma = $miObj->createMerchantSignatureHostToHost($claveSHA256,
$datosEntrada);
/*Una vez obtenido el valor del elemento , ya se puedo
completar el mensaje de petición de pago y realizar la llamada Web Service. */
		                    
		                    
		                    
/*Importar la librería, tal y como se muestra a continuación*/
<%@page import="sis.redsys.api.ApiWsMacSha256" %>
/*El comercio debe incluir en la vía de construcción del proyecto todas las
librerías(JARs) que se proporcionan:*/

/*Definir un objeto de la clase principal de la librería, tal y como se muestra a
continuación:*/
ApiWsMacSha256 apiWsMacSha256 = new ApiWsMacSha256();
/*Calcular el elemento . Para llevar a cabo el cálculo de
este parámetro, se debe llamar a la función de la librería “createMerchantSignatureHostToHost()” con la
clave del comercio SHA 256 obtenida del módulo de administración y el elemento con los datos de la
petición de pago (), tal y como se muestra a continuación:*/
String datosEntrada =
"1451444904795999008881
978XXXXXXXXXXXXXX
XXXXX0871XXXX";
String claveSHA256 = "Mk9m98IfEblmPfrpsawt7BmxObt98Je";
String firma =
apiWsMacSha256.createMerchantSignatureHostToHost(claveSHA256, datosEntrada);
/*Una vez obtenido el valor del elemento , ya se puedo
completar el mensaje de petición de pago y realizar la llamada Web Service. */
		                    
		                    
		                        
		/*Importar la librería, tal y como se muestra a continuación:*/
		using RedsysAPIPrj;
		/*Crear un objeto de la clase del Web Service de Redsys. Para poder realizar
		esto es necesario añadir una nueva referencia web con el fichero SerClsWSEntrada.wsdl.*/
		WebRedsysWs.SerClsWsEntradaService s = new
		WebRedsysWs.SerClsWsEntradaService();
		/*Nota: En el atributo location de la etiqueta  Del fichero
		SerClsWSEntrada.wsdl, indicar si se trata del entorno real o pruebas:
		https://sis-t.redsys.es:25443/sis/services/SerClsWSEntrada
		(Pruebas)
		https://sis.redsys.es/sis/services/SerClsWSEntrada (Real)
		*/
		/*Definir un objeto de la clase principal de la librería, tal y como se muestra a
		continuación. Al realizar este paso se inicializan los atributos diccionario clave/valor m_keyvalues y cryp
		de la clase Cryptogra (Clase auxiliar para realizar las operaciones criptográficas necesarias)*/
		RedsysAPIWs r = new RedsysAPIWs();
		/*Generar parametros de DATOSENTRADA (Modalidad Petición de Pago con
		envío de datos de tarjeta) mediante la función:*/
		string datosEntrada = r.GenerateDatoEntradaXML(amount, fuc, currency,
		pan, cvv2, trans, terminal, expire);
		/*Calcular el elemento . Para llevar a cabo el cálculo de
		este parámetro, se debe llamar a la función de la librería “createMerchantSignatureHostToHost()” con la
		clave del comercio SHA 256 obtenida del módulo de administración y el elemento con los datos de la
		petición de pago (), tal y como se muestra a continuación:*/
		string claveSHA256 = "Mk9m98IfEblmPfrpsawt7BmxObt98Je";
		string firma = r.createMerchantSignatureHostToHost(claveSHA256,
		datosEntrada);
		/*Una vez obtenido el valor del elemento , ya se puedo
		completar el mensaje de petición de pago y realizar la llamada Host to Host. Se genera el string XML final
		de petición de pago con DATOSENTRADA, DS_SIGNATUREVERSION y DS_SIGNATURE*/
		string peticionXML = r.GenerateRequestXML(datosEntrada, firma);
		/*Después se llama al método trataPeticion del Web service de Redsys
		pasándole como parámetro el string XML final calculado con el método GenerateRequestXML.*/
		string result = s.trataPeticion(peticionXML);
		                        
		                      
  • Respuesta petición

		                    
		/*Importar el fichero principal de la librería, tal y como se muestra a continuación. El comercio
		debe decidir si la importación desea hacerla con la función “include” o “required”, según los
		desarrollos realizados.*/
		include_once
		'redsysHMAC256_API_WS_PHP_4.0.2/apiRedsysWs.php';
		/*Definir un objeto de la clase principal de la librería, tal y
		como se muestra a continuación: */
		$miObj = new RedsysAPIWs;
		/*Calcular el parámetro . Para llevar a
		cabo elcálculo de este parámetro, se debe llamar a la función de la librería
		“createSignatureResponseHostToHost()” con la clave del comercio SHA 256 obtenida del módulo
		de administración, la cadena que se desea firmar(concatenación de campos descrita en el punto 2
		del apartado 4.1 del presente documento) y el número de pedido.*/
		$cadenaConcatenada="1451444912789999008881978000000";
		$numPedido ="1444912789";
		$claveSHA256 = 'Mk9m98IfEblmPfrpsawt7BmxObt98Je';
		$firma = $miObj-
		>createSignatureResponseHostToHost($claveSHA256,$cadenaConcatenada,$numPedido);
		/*El resultado obtenido debe ser el mismo que el valor
		del parámetro  obtenido en la respuesta.*/
		
		                    
		                    
		                    
		/*Importar la librería, tal y como se muestra a continuación*/
		<%@page import="sis.redsys.api.ApiWsMacSha256" %>
		/*El comercio debe incluir en la vía de construcción del
		proyecto todas las librerías(JARs) que se proporcionan:*/
		
		/*Definir un objeto de la clase principal de la librería, tal y
		como se muestra a continuación:*/
		ApiWsMacSha256 apiWsMacSha256 = new
		ApiWsMacSha256();
		/*Calcular el elemento . Para llevar a
		cabo el cálculo de este parámetro, se debe llamar a la función de la librería
		“createSignatureResponseHostToHost()” con la clave obtenida del módulo de administración, la
		cadena que se desea firmar(concatenación de campos descrita en el punto 2 del apartado 4.1 del
		presente documento) y el número de pedido.*/
		String cadenaConcatenada =
		"1451444912789999008881978000000";
		String $numPedido ="1444912789";
		String claveSHA256 =
		"Mk9m98IfEblmPfrpsawt7BmxObt98Je";
		String firma =
		apiWsMacSha256.createSignatureResponseHostToHost(claveSHA256,cadenaConcatenada,numPed
		ido);
		/*El resultado obtenido debe ser el mismo que el valor
		del parámetro  obtenido en la respuesta.*/
		                    
		                    
		                        
		/* Importar la libreria que proporciona Redsys, tal y como se muestra a continuación y crear un
		objeto de la clase principal de dicha librería. */
		using RedsysAPIPrj;
		RedsysAPIWs r = new RedsysAPIWs();
		/*Convertir la cadena respuesta XML al atributo
		diccionario m_keyvalues de la clave RedsysAPIWs:*/
		r.XMLToDiccionary(result);
		/*Calcular el parámetro . Para llevar a
		cabo el cálculo de este parámetro, se debe llamar a la función de la librería
		“createSignatureResponseHostToHost()” con la clave del comercio SHA 256 obtenida del módulo
		de administración, la cadena que se desea firmar(concatenación de campos descrita en el punto 2
		del apartado 5.1 del presente documento) y el número de pedido.*/
		string claveSHA256 =
		"Mk9m98IfEblmPfrpsawt7BmxObt98Je";
		string cadena = r.GenerateCadena(result);
		string numPedido = r.GetDictionary("Ds_Order");
		string firmaCalculada =
		r.createSignatureResponseHostToHost(claveSHA256, cadena, numPedido);
		/*El resultado obtenido debe ser el mismo que el valor
		del parámetro  obtenido en la respuesta.*/
		                        
		                      

Autenticación EMV3DS

Los pagos pueden realizarse con o sin autenticación. Para realizar el pago sin autenticación debe añadirse el parámetro <DS_DIRECTPAYMENT> con el valor "true" en el elemento <DATOSENTRADA>. En el caso que se requiera autenticación, el parámetro que se debe de añadir es <DS_MERCHANT_EMV3DS>. Los pagos con autenticación EMV3DS en la conexión SOAP sigue los siguientes pasos:

1 - Iniciar petición: El comercio deberá hacer una petición al TPV Virtual para saber si la tarjeta está inscrita en EMV3DS v2 (obtener la versión de la tarjeta) y poder iniciar el proceso de autenticación con el protocolo correspondiente

2 - 3DSMethod (Si procede): El comercio ejecuta el 3DSMethod para que el emisor capture la información del dispositivo.

3 - Solicitud de autorización: El comercio enviará la solicitud de autorización de la operación con el parámetro <DS_MERCHANT_EMV3DS> con un valor en formato JSON donde se incluyen los valores del protocolo EMV3DS.

4 - Respuesta: Una vez enviada la petición, se puede recibir una respuesta "Frictionless" (respuesta final con el parámetro "Ds_Response") o "Challenge"(necesita continuar la autenticación).

5 - Autenticación (Si procede): La entidad emisora requiere que el titular verifique su autenticidad (mediante OTP, contraseña estática, biometría, etc).

6 - Confirmación de autorización: El comercio enviará la autorización con el resultado del challenge al TPV Virtual para finalizar el proceso de autorización y recibir el parámetro "Ds_Response".

Flujo de una Autorización con autenticación EMV3DS

descripcion flujo frictionless

1. El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2. El comercio realiza un inicia petición enviando los datos al TPV Virtual.

3. El TPV Virtual comprueba la configuración de la tarjeta, y en la respuesta informará si la tarjeta soporta autenticación EMV3DS y la versión de protocolo EMV3DS que se aplica.

3.1 Si la tarjeta lo requiere ejecutar el 3DSMethod: se inicia conexión desde el browser con el ACS y este devuelve el resultado de la ejecución al comercio.

4. El comercio envía la solicitud de autorización con tarjeta que soporta EMV3DS v2. Además de los datos de pago es necesario enviar el resultado del 3DSMethod y los datos adicionales para la autenticación.El TPV Virtual inicia la autenticación, y el emisor, en base a los datos recibidos, autentica la operación sin necesidad de intervención del titular. A continuación, el TPV Virtual procesará la autorización.

5. Una vez realizado el pago, el TPV virtual informa del resultado de la operación.

6. El comercio devuelve la información del resultado del pago al titular.

descripcion flujo frictionless

1. El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2. El comercio realiza un inicia petición enviando los datos al TPV Virtual.

3. El TPV Virtual comprueba la configuración de la tarjeta, y en la respuesta informará si la tarjeta soporta autenticación EMV3DS y la versión de protocolo EMV3DS que se aplica.

3.1 Si la tarjeta lo requiere ejecutar el 3DSMethod: se inicia conexión desde el browser con el ACS y este devuelve el resultado de la ejecución al comercio

4. El comercio envía la solicitud de autorización con tarjeta que soporta EMV3DS v2. Además de los datos de pago es necesario enviar el resultado del 3DSMethod y los datos adicionales para la autenticación.

El TPV Virtual inicia la autenticación, y el emisor en base a los datos recibidos decide que el titular debe verificar su autenticidad (challenge)

5. El TPV Virtual devuelve la información para que el titular pueda realizar el challenge con su banco emisor. Según el protocolo con el que se deba autenticar estas peticiones quedarán marcadas de la siguiente forma. Versión 2.1.0 (8210)

6. El comercio redirige al titular vía browser para que conecte con su emisor

7. El titular completa el challenge

8. La entidad emisora devuelve el resultado del challenge a la url indicada por el comercio

9. El comercio envía el resultado del challenge al TPV Virtual para finalizar el proceso de autorización

10. Una vez realizado el pago, el TPV virtual responde con el resultado de la operación.

11. El comercio responde con la información del resultado del pago al titular

descripcion flujo frictionless

1. El titular selecciona los productos que desea comprar e introduce los datos de tarjeta en un formulario mostrado por el comercio.

2. El comercio realiza un inicia petición enviando los datos al TPV Virtual.

3. El TPV Virtual comprueba la configuración de la tarjeta, y en la respuesta informará si la tarjeta soporta autenticación EMV3DS y la versión de protocolo EMV3DS que se aplica.

3.2 Si la tarjeta no permite EMV3DS v2 el comercio puede solicitar la autenticación con los datos de v1. Se recibirá un valor de protocolo NO_3DS_V2

4. El comercio envía la solicitud de autorización al TPV Virtual indicando que está preparado para EMV3DS v1.

5. El TPV Virtual comprueba la configuración del comercio y la tarjeta, y en la respuesta informará que la transacción requiere autenticación y la información para que el titular pueda realizar la autenticación con su banco emisor. Estas peticiones quedarán marcadas de la siguiente forma Versión 1.0.2 ( 8102).

6. El comercio redirige al titular vía browser para que conecte con su emisor.

7. El titular completa la autenticación.

8. La entidad emisora devuelve el resultado de la autenticación a la URL indicada facilitada por el comercio.

9. El comercio envía el resultado de la autenticación al TPV Virtual para finalizar el proceso de autorización.

10. Una vez realizado el pago, el TPV virtual responde con el resultado de la operación.

11. El comercio responde con la información del resultado del pago al titular.

  • Inicia Petición

Esta petición permite obtener el tipo de autenticación 3D Secure que se puede realizar. Se debe enviar una peticion SOAP a la siguiente url:

https://sis.redsys.es/sis/services/SerClsWSEntradaV2

https://sis-t.redsys.es:25443/sis/services/SerClsWSEntradaV2

En el elemento <DATOSENTRADA> se deberá mandar el parámetro <DS_MERCHANT_EMV3DS> de tipo JSON con la etiqueta y valor que vemos en el ejemplo:

							
<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_ORDER>1130</DS_MERCHANT_ORDER>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>4548*********003</DS_MERCHANT_PAN>
		<DS_MERCHANT_EMV3DS>{"threeDSInfo":"CardData"}</DS_MERCHANT_EMV3DS>
	<DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>w0x3HfselBfW3MSPH6R0Ocd9qMkPthwoXO/7DMs0IoM=</DS_SIGNATURE>	
</REQUEST>						
							 
						

Como resultado de la petición se devolverá el parámetro <Ds_EMV3DS> con la información necesaria para proceder a la autenticación.

							
<RETORNOXML>
	<CODIGO>0</CODIGO>
	<INFOTARJETA>
		<Ds_Order>1130</Ds_Order>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>1</Ds_Terminal>
		<Ds_TransactionType>0</Ds_TransactionType>
		<Ds_EMV3DS>
			{"protocolVersion":"NO_3DS_v2",
			"threeDSInfo":"CardConfiguration"}
		</Ds_EMV3DS>
		<Ds_Signature>4Vomk6Eb5FyRDuqj7n4OzkTMea/Or/iuofjo8p8UQg0=</Ds_Signature>
	</INFOTARJETA>
</RETORNOXML>
							
						
  • Ejecución del 3DSMETHOD

El 3DSMethod es un proceso que permite a la entidad emisora capturar la información del dispositivo que está utilizando el titular. Esta información, junto con los datos EMV3DS que son enviados en la autorización, será utilizada por la entidad para hacer una evaluación del riesgo de la transacción. En base a esto el emisor puede determinar que la transacción es confiable y por lo tanto no requerir la intervención del titular para verificar su autenticidad (frictionless).

La captura de datos del dispositivo se realiza mediante un iframe oculto en el navegador del cliente, que establecerá conexión directamente con la entidad emisora de forma transparente para el usuario. El comercio recibirá una notificación cuanto haya terminado la captura de información. En el siguiente paso, al solicitar la autorización al TPV Virtual se enviará el parámetro threeDSCompInd indicando la ejecución del 3DSMethod

Pasos para la ejecución del 3DSMethod:

1. En la respuesta recibida con la configuración de la tarjeta (iniciaPeticion) se recibe los datos siguientes para ejecutar el 3DSMethod:

a. threeDSMethodURL: url del 3DSMethod

b. threeDSServerTransID: Identificador de transacción EMV3DS

Si en la respuesta no se recibe threeDSMethodURL el proceso finaliza. En la autorización enviar

threeDSCompInd = N

2. Construir el JSON Object con los parámetros:

a. threeDSServerTransID: valor recibido en la respuesta de consulta de tarjeta

b. threeDSMethodNotificationURL: url del comercio a la que será notificada la finalización del 3DSMethod desde la entidad

3. Codificar el JSON anterior en Base64url encode

4. Debe incluirse un iframe oculto en el navegador del cliente, y enviar un campo threeDSMethodData con el valor del objecto json anterior, en un formulario http post a la url obtenida en la consulta inicial threeDSMethodURL

5. La entidad emisora interactúa con el browser para proceder a la captura de información. Al finalizar enviará el campo threeDSMethodData en el iframe html del navegador por http post a la url threeDSMethodNotificationURL (indicada en el paso 2), y el 3DSMethod termina.

6. Si el 3DSMethod se ha completado en menos de 10 segundos se enviará en la autorización:

threeDSCompInd = Y

Si no se ha completado en 10 segundos debe detener la espera y enviar la autorización con valor:

threeDSCompInd = N
  • Trata petición

Un vez recibida la respuesta del "Inicia Petición", deberá enviarse un "trata Petición" a la url indicada en la sección "Mensaje de petición de pago SOAP" con el parámetro <DS_MERCHANT_EMV3DS> con los siguientes campos y sus valores correspondientes:


Ejemplo de petición para "protocolVersion": "1.0.2" ("NO_3DS_V2")

					
<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_ORDER>1130</DS_MERCHANT_ORDER>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>4548810000000003</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>123</DS_MERCHANT_CVV2>
		<DS_MERCHANT_EXPIRYDATE>3912</DS_MERCHANT_EXPIRYDATE>
		<DS_MERCHANT_EMV3DS>
			{"threeDSInfo":"AuthenticationData",
			"protocolVersion":"1.0.2",
			"browserAcceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,ap plicati
			on/json",
			"browserUserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gec
			ko) Chrome/71.0.3578.98 Safari/537.36"}
		</DS_MERCHANT_EMV3DS>
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>vMH8pGB96FvXE7F65Mbnqq2vuWd7OP/QijQaAnNg0Ps=</DS_SIGNATURE>
</REQUEST>
					
				

Ejemplo de respuesta para "protocolVersion": "2.1.0"

						
					

<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_ORDER>1130</DS_MERCHANT_ORDER>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>4548810000000003</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>123</DS_MERCHANT_CVV2>
		<DS_MERCHANT_EXPIRYDATE>3912</DS_MERCHANT_EXPIRYDATE>
		<DS_MERCHANT_EMV3DS>
			{"notificationURL":"http://www.urlNotificacionRespuesta.es/Notificacion.jsp",
			"threeDSInfo":"AuthenticationData",
			"browserLanguage":"ES-es",
			"browserColorDepth":"24",
			"browserJavaEnabled":"false",
			"browserAcceptHeader":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,applicatio
			n/json",
			"browserUserAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gec
			ko) Chrome/71.0.3578.98 Safari/537.36",
			"browserTZ":"52",
			"browserScreenHeight":"1250",
			"protocolVersion":"2.1.0",
			"threeDSCompInd":"Y",
			"browserScreenWidth":"1320",
			"threeDSServerTransID":"91f127ff-2ffa-4e1c-ae08-999094dc3935"}
		</DS_MERCHANT_EMV3DS>
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>vMH8pGB96FvXE7F65Mbnqq2vuWd7OP/QijQaAnNg0Ps=</DS_SIGNATURE>
</REQUEST>	
						
					

Se pueden obtener dos tipos de respuesta independientemente de la versión de protocolo enviada: "frictionless" o "Challenge":

Para frictionless la operación habrá sido autorizada y finalizado el proceso de compra con el TPV-Virtual. Se recibe el parámetro "Ds_Response"

					
				<RETORNOXML>
					<CODIGO>0</CODIGO>
					<OPERACION>
						<Ds_Amount>145</Ds_Amount>
						<Ds_Currency>978</Ds_Currency>
						<Ds_Order>1928</Ds_Order>
						<Ds_Signature>6kN7fQqmWhCwTPPbwQWKa6HHp1hQOHtDTnN4H7NB7Lo=</Ds_Signature>
						<Ds_MerchantCode>999008881</Ds_MerchantCode>
						<Ds_Terminal>1</Ds_Terminal>
						<Ds_Response>0000</Ds_Response>
						<Ds_AuthorisationCode>568130</Ds_AuthorisationCode>
						<Ds_TransactionType>0</Ds_TransactionType>
						<Ds_SecurePayment>2</Ds_SecurePayment>
						<Ds_Language>1</Ds_Language>
						<Ds_CardNumber>454881******7229</Ds_CardNumber>
						<Ds_MerchantData></Ds_MerchantData>
						<Ds_Card_Country>724</Ds_Card_Country>
						<Ds_Card_Brand>1</Ds_Card_Brand>
					</OPERACION>
				</RETORNOXML>
					
				

Para challenge la operación requerirá de autenticación del titular, se inicia el flujo challenge.

						
					
<!--Ejemplo de respuesta para "protocolVersion": "1.0.2" ("NO_3DS_V2") --> 	
	
<RETORNOXML>
	<CODIGO>0</CODIGO>
	<OPERACION>
		<Ds_Amount>145</Ds_Amount>
		<Ds_Currency>978</Ds_Currency>
		<Ds_Order>1130</Ds_Order>
		<Ds_Signature>exypXnYPEHkJH7hnP4zeEFs9cE0JNbG+Te4I1+H2i5Y=</Ds_Signature>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>1</Ds_Terminal>
		<Ds_TransactionType>0</Ds_TransactionType>
		<Ds_EMV3DS>
		{"threeDSInfo":"ChallengeRequest",
			"protocolVersion":"1.0.2",
			"acsURL":"https://sas-t.redsys.es:26443/sas/Secure",
			"PAReq":"eJxVUu1uqzAMfRXEpPvvkoRCKb1uptyWq+0HXdWyB4jAWpkKZQm9pW8/p6P7iBTF59ixnePA/dAcvP9obH1sF74I
			uO9hWx6run1Z+M/Fv98z/15CsTeIqx2WJ4MScrRWv6BXVwvfNp2uh3Cme7T9NBaTmQi5SIVbEU/iiHMuppEvYaO2+CZhrCWpV
			BACu0FKasq9bnsJunz7+7iWURyLJAU2QmjQPK7kLtvm2Ubl2Xb5oNYFsA8aWt2g3Ga7pZftNurXXcjTPwrYlYbyeGp7c5FJGA
			G7ATiZg9z3fTdn7Hw+BwYre7EBWlbqVh/QBq+2A+aigH11tzk5y1LWoa5k/qqGpyIbctrrlZqsi+chX6kz7QUwFwEVSSNvmnh
			iMufJPI6BXXnQjWuH1IiIGgF0roYaPc7xnQAagqEZXWSazOg5NwQ4dMcWKYJk/bShQlvSA8bjq/vlg1O67Em8nwObTrkT/epx
			OWvSapKKj6QOAHN32ThPNv4Gsn78knfuw8HI",
			"MD":"c0dec2b81e1df277ba53900a84b3ec82bd3af4f6"}
		</Ds_EMV3DS>
	</OPERACION>
</RETORNOXML>
	
	
	
<!--Ejemplo de respuesta para "protocolVersion": "2.1.0" --> 	
	<RETORNOXML>
	<CODIGO>0</CODIGO>
	<OPERACION>
		<Ds_Amount>145</Ds_Amount>
		<Ds_Currency>978</Ds_Currency>
		<Ds_Order>1130</Ds_Order>
		<Ds_Signature>exypXnYPEHkJH7hnP4zeEFs9cE0JNbG+Te4I1+H2i5Y=</Ds_Signature>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>1</Ds_Terminal>
		<Ds_TransactionType>0</Ds_TransactionType>
		<Ds_EMV3DS>
			"threeDSInfo":"ChallengeRequest",
			"protocolVersion":&quo;t2.1.0",
			"acsURL":"https://sis-d.redsys.es/sis-simulador-web/authenticationRequest.jsp",
			"creq":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjkxZjEyN2ZmLTJmZmEtNGUxYy1hZTA4LTk5OTA5NGRjMzkzNSIsImFjc
			1RyYW5zSUQiOiI2YmI4NGU3Zi1iODljLTQwZmItOWI4My03YzcxNTBjZTU5MTMiLCJtZX
			NzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA1In0"}
		</Ds_EMV3DS>
	</OPERACION>
</RETORNOXML>
						
					
  • Ejecución del Challenge

El comercio deberá montar un formulario que envíe un POST a la URL del parámetro "acsURL" obtenido en la respuesta de la petición de autorización anterior. Dicho formulario envíar los parámetros "PAReq", "MD" y un tercer término "TermUrl" (si sigue el protocolo 1.0.2) o el parámetro "CReq" (si es el protocolo 2.1.0) que se obtiene en la respuesta de la petición de autorización anterior. Este formulario enviará al titular a la página de autenticación de su banco, donde la entidad emisora requerirá que el titular verifique su autenticidad (mediante OTP, contraseña estática, biometría, etc).

Como resultado de esta verificación, la entidad Emisora hará un POST a la URL indicada en el parámetro "TermUrl" (version 1.0.2) o a la "notificationURL" (version 2.1.0) del "trataPetición".

En esta url indicada se recibirá una respuesta que debe de ser capturada con los parámetros: "PARes" y "MD" (version 1.0.2)o el parámetro "cres" (version 2.1.0).

Para terminar la autenticación, debe enviarse otra petición soap igual que las anteriores con éstos valores (PARes/MD o cres)dentro del parémetro "Ds_Merchant_Emv3ds" en formato JSON:

						
	
<!--Ejemplo de mensaje para "protocolVersion": "1.0.2" ("NO_3DS_V2") --> 

	<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_ORDER>1130</DS_MERCHANT_ORDER>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>4548810000000003</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>123</DS_MERCHANT_CVV2>
		<DS_MERCHANT_EXPIRYDATE>3912</DS_MERCHANT_EXPIRYDATE>
		<DS_MERCHANT_EMV3DS>
			{"threeDSInfo":"ChallengeResponse",
			"MD":"7a615bfc6bb3144b04bc3b37639a51cecb3a6e03",
			"protocolVersion":"1.0.2"
			"PARes":"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\r\n+HH69/WQ+L8ANJA9GA=="}
		</DS_MERCHANT_EMV3DS>
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>vMH8pGB96FvXE7F65Mbnqq2vuWd7OP/QijQaAnNg0Ps=</DS_SIGNATURE>
</REQUEST>
	   
	   		
<!--Ejemplo de mensaje para "protocolVersion": "2.1.0" --> 
	
	<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_AMOUNT>145</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_ORDER>1130</DS_MERCHANT_ORDER>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>1</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>4548810000000003</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>123</DS_MERCHANT_CVV2>
		<DS_MERCHANT_EXPIRYDATE>3912</DS_MERCHANT_EXPIRYDATE>
		<DS_MERCHANT_EMV3DS>
			{"threeDSInfo":"ChallengeResponse",
			"protocolVersion":"2.1.0",				
			"Cres":"eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjhkZTg0NDMwLTMzMzYtNGZmNC1iMThkLWYwNzNiNTQ2Y2NlYSIsImFjc1RyYW5zSUQiOiJkYjVjOTljNC1hMmZkLTQ3ZWUtOTI2Zi1mYTBiMDk0MzUyYTAiLCJtZXNzYWdlVHlwZSI6IkNSZXMiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwidHJhbnNTdGF0dXMiOiJZIn0="
		</DS_MERCHANT_EMV3DS>}
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>vMH8pGB96FvXE7F65Mbnqq2vuWd7OP/QijQaAnNg0Ps=</DS_SIGNATURE>
</REQUEST>
							
					

Como respuesta a esta petición, se obtendrá el resultado de la petición de Autorización (Ds_Response) y finaliza el proceso de compra con el TPV-Virtual.

							
<RETORNOXML>
	<CODIGO>0</CODIGO>
	<OPERACION>
		<Ds_Amount>145</Ds_Amount>
		<Ds_Currency>978</Ds_Currency>
		<Ds_Order>6524a</Ds_Order>
		<Ds_Signature>bHAPoCzrlFFbsrlCY/EDazsJCo8jGEdJ8TMaWqwf7JA=</Ds_Signature>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>1</Ds_Terminal>
		<Ds_Response>0000</Ds_Response>
		<Ds_AuthorisationCode>381736</Ds_AuthorisationCode>
		<Ds_TransactionType>0</Ds_TransactionType>
		<Ds_SecurePayment>2</Ds_SecurePayment>
		<Ds_Language>1</Ds_Language>
		<Ds_CardNumber>491801******3839</Ds_CardNumber>
		<Ds_MerchantData></Ds_MerchantData>
		<Ds_Card_Country>724</Ds_Card_Country>
		<Ds_Card_Brand>1</Ds_Card_Brand>
	</OPERACION>
</RETORNOXML>
							
						

PagoMOTO SOAP

Si el comercio quiere realizar preautorizaciones manuales, es preciso que tenga configurado el permiso de preautorizaciones, para ello debe solicitarse a la entidad. Para realizar este tipo de operaciones, debe indicarse en el parámetro "Ds_TransactionType" el valor "1", y en el parámetro "Ds_Merchant_DirectPayment" el valor "moto".

Ejemplo de mensaje de envío mediante una petición WebService SOAP

						 
<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>872</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_AMOUNT>1000</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_ORDER>1524494336</DS_MERCHANT_ORDER>
		<DS_MERCHANT_TRANSACTIONTYPE>1</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>XXXXXXXXXXXXXXXX</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>123</DS_MERCHANT_CVV2>
		<DS_MERCHANT_EXPIRYDATE>4912</DS_MERCHANT_EXPIRYDATE>
		<DS_MERCHANT_DIRECTPAYMENT>moto</DS_MERCHANT_DIRECTPAYMENT>
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>9TLeENf+4JHGIHuEedczgpW4Xcs0zotkvfIlG28N95A=</DS_SIGNATURE>
</REQUEST> 
						 
					   

Tras el envio de la peticion al SIS de una operacion de pago manual, el SIS realizará las comprobaciones pertinentes y construirá un mensaje con el resultado de la operacion que devolverá al comercio:

Ejemplo de mensaje de respuesta mediante una petición WebService SOAP

					
<RETORNOXML>
	<CODIGO>0</CODIGO>
	<OPERACION>
		<Ds_Amount>1000</Ds_Amount>
		<Ds_Currency>978</Ds_Currency>
		<Ds_Order>1524494336</Ds_Order>
		<Ds_Signature>fibhQxIuEWk1yC8HztRxrR3zM30RaVeLv0R1ifS8LIM=</Ds_Signature>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>872</Ds_Terminal>
		<Ds_Response>0000</Ds_Response>
		<Ds_AuthorisationCode>088767</Ds_AuthorisationCode>
		<Ds_TransactionType>1</Ds_TransactionType>
		<Ds_SecurePayment>0</Ds_SecurePayment>
		<Ds_Language>1</Ds_Language>
		<Ds_MerchantData></Ds_MerchantData>
		<Ds_Card_Country>840</Ds_Card_Country>
		<Ds_Card_Brand>2</Ds_Card_Brand>
	</OPERACION>
</RETORNOXML> 
					
				

Para que un comercio realice una operacion de pago manual mediante peticiones al SIS, es preciso que tenga configurado el permiso de autorizaciones, para ello debe solicitarse a la entidad. Para realizar este tipo de operaciones, debe indicarse en el parámetro "Ds_TransactionType" el valor "0", y en el parámetro "Ds_Merchant_DirectPayment" el valor "moto".

Ejemplo de mensaje de pago mediante una petición WebService SOAP

						 
<REQUEST>
	<DATOSENTRADA>
		<DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE>
		<DS_MERCHANT_TERMINAL>872</DS_MERCHANT_TERMINAL>
		<DS_MERCHANT_AMOUNT>1000</DS_MERCHANT_AMOUNT>
		<DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY>
		<DS_MERCHANT_ORDER>1524494336</DS_MERCHANT_ORDER>
		<DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE>
		<DS_MERCHANT_PAN>XXXXXXXXXXXXXXXX</DS_MERCHANT_PAN>
		<DS_MERCHANT_CVV2>123</DS_MERCHANT_CVV2>
		<DS_MERCHANT_EXPIRYDATE>4912</DS_MERCHANT_EXPIRYDATE>
		<DS_MERCHANT_DIRECTPAYMENT>moto</DS_MERCHANT_DIRECTPAYMENT>
	</DATOSENTRADA>
	<DS_SIGNATUREVERSION>HMAC_SHA256_V1</DS_SIGNATUREVERSION>
	<DS_SIGNATURE>9TLeENf+4JHGIHuEedczgpW4Xcs0zotkvfIlG28N95A=</DS_SIGNATURE>
</REQUEST> 
						 
					   

Tras el envio de la peticion al SIS de una operacion de pago manual, el SIS realizará las comprobaciones pertinentes y construirá un mensaje con el resultado de la operacion que devolverá al comercio:

Ejemplo de mensaje pago mediante una petición WebService SOAP

						 
<RETORNOXML>
	<CODIGO>0</CODIGO>
	<OPERACION>
		<Ds_Amount>1000</Ds_Amount>
		<Ds_Currency>978</Ds_Currency>
		<Ds_Order>1524494336</Ds_Order>
		<Ds_Signature>fibhQxIuEWk1yC8HztRxrR3zM30RaVeLv0R1ifS8LIM=</Ds_Signature>
		<Ds_MerchantCode>999008881</Ds_MerchantCode>
		<Ds_Terminal>872</Ds_Terminal>
		<Ds_Response>0000</Ds_Response>
		<Ds_AuthorisationCode>088767</Ds_AuthorisationCode>
		<Ds_TransactionType>0</Ds_TransactionType>
		<Ds_SecurePayment>0</Ds_SecurePayment>
		<Ds_Language>1</Ds_Language>
		<Ds_MerchantData></Ds_MerchantData>
		<Ds_Card_Country>840</Ds_Card_Country>
		<Ds_Card_Brand>2</Ds_Card_Brand>
	</OPERACION>
</RETORNOXML>