Debido al carácter confidencial de los datos enviados en los mensajes, se hace necesario proteger dichos datos de manera que ninguna persona externa pueda modificar los mismos y confundir a alguna de las dos partes implicadas en el sistema.
A parte de la seguridad inherente que proporciona SOAP en el envío de los mensajes, es necesario añadir una firma a los mensajes que identifique a las dos partes en la transacción. Para calcular la firma, se utiliza una clave secreta compartida entre el comercio y Banco Sabadell.
Los datos que se incluyen en la firma son una cadena con el mensaje enviado (los datos que hay entre las etiquetas <version...> </ version>) y la clave secreta compartida entre Banco Sabadell y el comercio.
Por ejemplo, dado los siguientes datos de petición:
<Version Ds_Version=”0.0”> <Message> <Monitor> <Ds_MerchantCode>327234688</Ds_MerchantCode> <Ds_Terminal>1</Ds_Terminal> <Ds_Order>91031000014</Ds_Order> </Monitor> </Message> </Version>
Generará el siguiente XML:
<Messages> <Version Ds_Version=”0.0”> <Message> <Monitor> <Ds_MerchantCode>327234688</Ds_MerchantCode> <Ds_Terminal>1</Ds_Terminal> <Ds_Order>91031000014</Ds_Order> </Monitor> </Message> </Version> <Signature>KYMRHr7g9at+t2xTx7Mem3pW52rkCckMpd5x13TrD5I=</Signature> <SignatureVersion>HMAC_SHA256_V1</SignatureVersion> </Messages>
Obteniéndose el valor:
571b2d002c878ddb241fc542c7b6d46262bbb7cb
Para el cálculo de la firma de respuesta se utilizarán los mismos datos, al igual que en la firma de entrada.