Devolver o anular un pago

Es posible que después de realizar una operación, necesites devolverla ya sea porque se haya producido un error durante el proceso, porque no tienes stock para suplir la demanda o porque simplemente tu cliente lo ha solicitado. En ese caso, deberás lanzar una operación que cancele la original, y para ello dispones de la devolución y la anulación.

Todas las operativas de esta clase, deben ser iniciadas por tí, el comercio; y según la casuística que provoque que quieras revertir la operación original, debes utilizar una u otra.

  • Una anulación restituye el importe cargado al titular en las operaciones de autorización (un pago), en la preautorización (retención del dinero del cliente), en la confirmación de la preautorización o incluso en una devolución. Las anulaciones por lo general son un método casi instantáneo de revertir la operación original que se quiera anular aunque es recomendable que, para una correcta formalización de los movimientos tanto por tu lado como por el de tus clientes, la reserves sólo para casos excepcionales: por ejemplo, en los casos que se haya producido un error (que al validar el pedido, tu base de datos o algún servicio de tu web no responda); o para anular una operativa de preautorización si has verificado que no vas a poder proveer el servicio pagado por el cliente.
  • Una devolución, ya sea total o parcial, es una transacción contable en la que el TPV Virtual comprobará en primera instancia la existencia de la autorización original que se desea devolver, aasí como que la suma de los importes que se van a devolver no superen nunca el importe autorizado original. El momento del abono al titular depende de la política comercial de cada entidad emisora, y puede variar entre dos y treinta y un días.

Devolver un pago

Las devoluciones son un tipo de operativa que sólo se puede realizar sobre operaciones que se hayan autorizado y completado por lo que primero deberás comprobar que efectivamente se ha producido una autorización antes de empezar el proceso de devolución. A la hora de devolver, podrás realizar tanto una devolución por el importe total de la operación o por un importe menor.

Las operaciones de devolución se pueden realizar desde el Portal de Administración del TPV Virtual o enviando una petición REST al TPV Virtual.

Usando el Portal de Administración del TPV Virtual

La manera más sencilla para poder confirmar una preautorización es haciéndolo desde el Portal de Administración del TPV Virtual. Para encontrar la operación de manera sencilla, te recomendamos que tengas a mano el número de pedido de la operación de preautorización.

Deberás acceder al Portal de Administración del TPV Virtual e ingresar tus credenciales. Una vez dentro, puedes buscar la operación por fechas, o buscarla directamente usando el número de pedido. En este caso, te enseñamos el proceso para devolver una orden de ejemplo, cuyo número de pedido es el 8479OePDHC.

En esta pantalla, y verificado que el tipo de operación mostrado es una autorización, una confirmación o cualquier tipo de operación que conlleva un cargo en la tarjeta del cliente, debes pulsar sobre el botón de las dos flechas en el menú de opciones de la operación que quieres devolver. Al pulsar sobre esta opción, aparecerá un cuadro de diálogo con los detalles de la operación.

En esta ventana podrás ver todos los detalles de la operación y el importe que ha sido devuelto hasta ese momento. Deberás escribir la cantidad que deseas devolver y luego pulsar sobre el botón «Aceptar». En el cuadro de confirmación te informará del importe que has escrito y, si todo está conforme, deberás confirmar la operación.
Una vez hecho, la página se actualizará y podrás ver la operación de devolución y el importe devuelto en la lista de operaciones.

Enviando una petición REST al TPV Virtual

Además de usando el Portal de Administración del TPV Virtual, también puedes realizar la devolución de una orden realizando una petición REST al TPV Virtual. Esto es util si, por ejemplo, deseas realizar un control de las órdenes y ejecutar operaciones sobre estas desde tu propio backoffice, en el que sólo tendrás que programar la petición que se va a enviar en función del tipo de operativa.

Para este tipo de operativa, el valor del parámetro Ds_Merchant_TransactionType deberá ser 3.

Para realizar la petición, deberás formar un objeto JSON que enviar al TPV Virtual. Esta petición se enviará directamente al endpoint de trataPeticion, según el entorno en el que desees operar:

EntornoURL de Conexión
Pruebashttps://sis-t.redsys.es:25443/sis/rest/trataPeticionREST
Realhttps://sis.redsys.es/sis/rest/trataPeticionREST

El objeto que debes enviar es muy parecido a los que has tenido que usar para generar la autorización, sólo que aquí sólo necesitarás un paso. Cuando construyas el mensaje que vas a enviar al TPV Virtual, es muy importante que utilices el mismo número de pedido de la operación que quieres anular y que, a su vez, este coincida con el de la operación de autorización original; por lo que debes prestar especial atención si el ID de pedido que utilizas en tu backoffice y el que envías a Redsys no coinciden, ya que deberás usar este último.

El mensaje de petición deberá ser parecido al que sigue:

{
    "Ds_Merchant_MerchantParameters": "ew0KCSJEU19NRVJDSEFOVF9PUkRFUiI6ICIxNjgwMDcxOTg0IiwNCgkiRFNfTUVSQ0hBTlRfTUVSQ0hBTlRDT0RFIjogIjk5OTAwODg4MSIsDQoJIkRTX01FUkNIQU5UX1RFUk1JTkFMIjogIjEiLA0KCSJEU19NRVJDSEFOVF9UUkFOU0FDVElPTlRZUEUiOiAiMyIsDQoJIkRTX01FUkNIQU5UX0NVUlJFTkNZIjogIjk3OCIsDQoJIkRTX01FUkNIQU5UX0FNT1VOVCI6ICIwMDAwMDAyMDAwIg0KfQ==",
    "Ds_Merchant_Signature": "2wtry7upyNJYEQWylccxJVZHwAV2QH5pQjrh9ErT9bebQe9StJMjpPUFBEX8/0cAVUhEXGIwkD2WGuUf/hd7vg==",
    "Ds_SignatureVersion": "HMAC_SHA512_V1"
}
{
	"DS_MERCHANT_ORDER": "1680071984",
	"DS_MERCHANT_MERCHANTCODE": "999008881",
	"DS_MERCHANT_TERMINAL": "1",
	"DS_MERCHANT_TRANSACTIONTYPE": "3",
	"DS_MERCHANT_CURRENCY": "978",
	"DS_MERCHANT_AMOUNT": "0000002000"
}

Hecho esto, deberás recibir la respuesta del TPV Virtual, que contestará con el resultado de la operación. Un ejemplo de respuesta es el que sigue:

{
    "Ds_Merchant_MerchantParameters": "eyJEc19BbW91bnQiOiIyMDAwIiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6IjE2ODAwNzE5ODQiLCJEc19NZXJjaGFudENvZGUiOiI5OTkwMDg4ODEiLCJEc19UZXJtaW5hbCI6IjEiLCJEc19SZXNwb25zZSI6IjA5MDAiLCJEc19BdXRob3Jpc2F0aW9uQ29kZSI6IjQzOTc2NCIsIkRzX1RyYW5zYWN0aW9uVHlwZSI6IjIiLCJEc19TZWN1cmVQYXltZW50IjoiMiIsIkRzX0xhbmd1YWdlIjoiMSIsIkRzX01lcmNoYW50RGF0YSI6IiIsIkRzX0NhcmRfQ291bnRyeSI6IjcyNCIsIkRzX0NhcmRfQnJhbmQiOiIxIiwiRHNfUHJvY2Vzc2VkUGF5TWV0aG9kIjoiNzgiLCJEc19Db250cm9sXzE2ODAxMDAwMTA4NzMiOiIxNjgwMTAwMDEwODczIn0=",
    "Ds_Merchant_Signature": "N4H-iRKJfAj9axFKZvYVw5mtboa5RgSfT-hRdsJfjSHoRXL9WaxC90klwBCDWwbEafcnsAmsNhkkoU3bXHS58w==",
    "Ds_SignatureVersion": "HMAC_SHA512_V1"
}
{
	"Ds_Amount": "2000",
	"Ds_Currency": "978",
	"Ds_Order": "1680071984",
	"Ds_MerchantCode": "999008881",
	"Ds_Terminal": "1",
	"Ds_Response": "0900",
	"Ds_AuthorisationCode": "439764",
	"Ds_TransactionType": "2",
	"Ds_SecurePayment": "2",
	"Ds_Language": "1",
	"Ds_MerchantData": "",
	"Ds_Card_Country": "724",
	"Ds_Card_Brand": "1",
	"Ds_ProcessedPayMethod": "78",
	"Ds_Control_1680100010873": "1680100010873"
}

Con esto, se debe evaluar la respuesta recibida por parte de Redsys para comprobar cuál ha sido el resultado de la devolución: si recibimos un Ds_Response con valor 0900, significa que la devolución se ha ejecutado correctamente.

Anular una operación

La anulación de una operación es un método que, tal y como se ha explicado anteriormente, se recomienda reservar sólo para una casuística en la que se ha producido un error o se quiere corregir una operación de manera inmediata, como un error en la validación final en tu backoffice (por ejemplo, tu Base de Datos no responde) o la imposibilidad para servir el producto comprado en el momento exacto de la operación inicial.

Según el tipo de operación que se vaya a querer anular, deberás utilizar un Ds_Merchant_TransactionType distinto, por lo que debes controlar que tipo de operación vas a querer anular en cada caso.

Desde el Portal de Administración del TPV Virtual

Puedes anular cualquier tipo de operación desde el Portal de Administración del TPV Virtual, es la manera más sencilla para poder anular una operación. Para encontrar la operación de manera sencilla, te recomendamos que tengas a mano el número de pedido de la operación.

Deberás acceder al Portal de Administración del TPV Virtual e ingresar tus credenciales. Una vez dentro, puedes buscar la operación por fechas, o buscarla directamente usando el número de pedido. En este caso, te enseñamos el proceso para anular una orden de ejemplo, cuyo número de pedido es el 8479OePDHC.

En esta pantalla, una vez verificada que la operación seleccionada es la que realmente quieres anular, debes pulsar sobre el botón del ojo en la columna de operaciones, en la fila correspondiente a la operación seleccionada. Al hacerlo, verás una ventana con los detalles de la operación.

En esta ventana podrás ver todos los detalles de la operación y, en la parte superior, encontrarás los botones para anular la operación, que se ha marcado en amarillo en la imagen. Al pulsar sobre este botón, aparecerá un cuadro de confirmación tras el que, al confirmar, se anulará la operación.

Enviando una petición REST al TPV Virtual

Además de usando el Portal de Administración del TPV Virtual, también puedes anular una operación realizando una petición REST al TPV Virtual. Esto es util si, por ejemplo, deseas realizar un control de las órdenes y ejecutar operaciones sobre estas desde tu propio backoffice, en el que sólo tendrás que programar la petición que se va a enviar en función del tipo de operativa. La petición se deberá realizar enviando una petición REST según el entorno en el que se desee trabajar, teniendo en cuenta qué tipo de operación quieres anular.

TipoOperativa
9Anulación de la preautorización
45Anulación de autorización (pago)
46Anulación de devolución
47Anulación de confirmación separada
EntornoURL de Conexión
Pruebashttps://sis-t.redsys.es:25443/sis/rest/trataPeticionREST
Realhttps://sis.redsys.es/sis/rest/trataPeticionREST

Una vez seleccionado el entorno, la petición deberá tener un aspecto similar al siguiente. Ten en cuenta que deberás adaptar el Ds_Merchant_TransactionType según el tipo de operación de la que vayas a ejecutar la anulación.

ensaje de petición deberá ser parecido al que sigue:

{
    "Ds_Merchant_MerchantParameters": "eyJEU19NRVJDSEFOVF9PUkRFUiI6IjcyMzAiLCJEU19NRVJDSEFOVF9NRVJDSEFOVENPREUiOiI5OTkwMDg4ODEiLCJEU19NRVJDSEFOVF9URVJNSU5BTCI6IjI0OSIsIkRTX01FUkNIQU5UX1RSQU5TQUNUSU9OVFlQRSI6IjQ1IiwiRFNfTUVSQ0hBTlRfQ1VSUkVOQ1kiOiI5NzgiLCJEU19NRVJDSEFOVF9BTU9VTlQiOiIwMDAwMDAyMDAwIn0=",
    "Ds_Merchant_Signature": "sZQwcrzfhh4dzSs+V6ZRevYKZti0y0tyJ+B0yIfR3Yx5Rn7foT5syvWi6wqxF3mQ2aaJpHRCmv2X/5Alt0AX1w==",
    "Ds_SignatureVersion": "HMAC_SHA512_V1"
}
{
	"DS_MERCHANT_ORDER": "7230",
	"DS_MERCHANT_MERCHANTCODE": "999008881",
	"DS_MERCHANT_TERMINAL": "249",
	"DS_MERCHANT_TRANSACTIONTYPE": "45",
	"DS_MERCHANT_CURRENCY": "978",
	"DS_MERCHANT_AMOUNT": "0000002000"
}

Hecho esto, deberás recibir la respuesta del TPV Virtual, que contestará con el resultado de la operación. Un ejemplo de respuesta es el que sigue:

{
    "Ds_Merchant_MerchantParameters": "eyJEc19BbW91bnQiOiIyMDAwIiwiRHNfQ3VycmVuY3kiOiI5NzgiLCJEc19PcmRlciI6IjcyMzAiLCJEc19NZXJjaGFudENvZGUiOiI5OTkwMDg4ODEiLCJEc19UZXJtaW5hbCI6IjI0OSIsIkRzX1Jlc3BvbnNlIjoiMDQwMCIsIkRzX0F1dGhvcmlzYXRpb25Db2RlIjoiMTAzODU4IiwiRHNfVHJhbnNhY3Rpb25UeXBlIjoiNDUiLCJEc19TZWN1cmVQYXltZW50IjoiMiIsIkRzX0xhbmd1YWdlIjoiMSIsIkRzX01lcmNoYW50RGF0YSI6IiIsIkRzX0NhcmRfQ291bnRyeSI6IjcyNCIsIkRzX0NhcmRfQnJhbmQiOiIxIiwiRHNfUHJvY2Vzc2VkUGF5TWV0aG9kIjoiNzgiLCJEc19Db250cm9sXzE2ODExOTQyMTYzMDMiOiIxNjgxMTk0MjE2MzAzIn0=",
    "Ds_Merchant_Signature": "3e6hhZFhVjpQ8b3Y-ghvsEZ8848P9QzCSjfYNbU4sudXyHPJZo2hzFJv1AulQ9sF_lUcoe2-QWUMLM0CXx27HQ==",
    "Ds_SignatureVersion": "HMAC_SHA512_V1"
}
{
	"Ds_Amount": "2000",
	"Ds_Currency": "978",
	"Ds_Order": "7230",
	"Ds_MerchantCode": "999008881",
	"Ds_Terminal": "249",
	"Ds_Response": "0400",
	"Ds_AuthorisationCode": "103858",
	"Ds_TransactionType": "45",
	"Ds_SecurePayment": "2",
	"Ds_Language": "1",
	"Ds_MerchantData": "",
	"Ds_Card_Country": "724",
	"Ds_Card_Brand": "1",
	"Ds_ProcessedPayMethod": "78",
	"Ds_Control_1681194216303": "1681194216303"
}

Con esto, se debe evaluar la respuesta recibida por parte de Redsys para comprobar cuál ha sido el resultado de la anulación: si recibimos un Ds_Response con valor 0400, significa que la anulación ha ido correctamente.

Independientemente del método que utilices para realizar la anulación, podrás comprobar en el Portal de Administración del TPV Virtual, que la operación original ha cambiado a estado «Anulada» y que ahora tienes un registro adicional que indica el estado de la anulación.

NOTA: Es probable que la operación original de una preautorización anulada no cambie a estado «Anulada 9929» tal y como ves en la imagen anterior. No te preocupes, siempre que exista la operación «Anulación de preautorización» en estado «Autorizada» significará que la anulación se ha procesado correctamente.

Todas las operaciones deben ser iniciadas por ti, el comercio, ya que el titular no está presente. A continuación, te mostramos la diferencias entre cada tipo de operativa:

  • Anulación de una autorización: Esta operativa restituye el importe cargado al titular en la operación de autorización lo antes posible. Los movimientos de autorización y anulación pueden no quedar reflejados en la cuenta del titular, depende del emisor de la tarjeta del titular.
  • Anulación de una preautorización: Esta operativa libera la cantidad retenida al cliente durante la preautorización lo antes posible. Los movimientos de preautorización y anulación pueden no quedar reflejados en la cuenta del titular, depende del emisor de la tarjeta del titular.
  • Anulación de una devolución: Esta operativa debe realizarse no más tarde de 48 horas después de la devolución, ya que una vez el importe quede abonado en la cuenta del titular, no se podrá revertir. El titular no verá ningún rastro de la devolución original ni de su anulación.
  • Anulación de una confirmación separada o autenticación: Esta operativa anula la operación de autenticación. El titular no verá rastro de las operaciones en su extracto bancario, al ser la operación anulada una operación que no retiene dinero al titular.