Skip to main content

Documentación

Reembolsos

Reembolsa un pago.

Rapyd proporciona un método rápido y sencillo para procesar los reembolsos de una compra realizada por un cliente en su sitio web. Los reembolsos se realizan al método de pago utilizado en la transacción de pago original.

Certificación PCI

Solo clientes con certificación PCI-DSS pueden gestionar la información de identificación personal de las tarjetas. Este método está disponible para los comercios que hayan firmado un acuerdo especial con Rapyd.

Un cliente compra un artículo en su sitio web por USD 10.99 (dólares estadounidenses) con su tarjeta. Ahora el cliente quiere devolver el artículo para obtener un reembolso. En este caso de uso, el cliente pagó con tarjeta, por lo que el reembolso se devuelve a esa tarjeta.

El back-end de su sitio web le pide a Rapyd que procese el reembolso. Cuando el dinero se devuelve a la tarjeta, Rapyd le notifica que el reembolso se realizó correctamente.

En la sección Cómo funciona se describe cómo encontrar los métodos de pago específicos por transferencia bancaria que usted aceptará, así como los campos obligatorios correspondientes que los clientes deben completar.

El cliente ha pagado previamente el artículo. Ahora el cliente rellena todos los campos requeridos en su sitio web en la página Solicitud de reembolso. Usted tiene el ID de la transacción y el monto que debe reembolsarse.

full-refund.jpg
  1. El back-end del sitio web solicita a Rapyd que procese el reembolso del cliente.

  2. Rapyd procesa la transacción de reembolso y le notifica que se ha realizado correctamente.

  3. Usted envía la confirmación del reembolso al cliente.

Los siguientes diagramas de secuencia de mensajes describen cómo se intercambia la información entre Rapyd, el comercio y el emisor de la tarjeta.

Reembolso: exitoso

create-card-refund---production-environment.svg

Reembolso: rechazado

create-card-refund---transaction-rejected.svg

Descripción de los estados

Estado

Descripción

Pending (pendiente)

El reembolso aún no se ha completado. Por ejemplo, es posible que el reembolso aún requiera una acción del cliente, como retirar el reembolso en efectivo.

Completed (completado)

Se completó el reembolso.

Rejected (rechazado)

El reembolso no se realizó debido a un error interno.

Error

El reembolso ha fallado.

Reembolsos para comercios en Israel

Al solicitar un reembolso, se aplicará un estado de reembolso pendiente y los fondos quedarán retenidos. Una vez autorizado el reembolso, se deducirán los fondos y el reembolso se cerrará. Esto aplica a los pagos con tarjeta a través de Shva con tarjetas nacionales.

Prerrequisitos

Para ejecutar los ejemplos de este caso de uso, debe crear el siguiente ID en su propio sandbox:

  • 'payment' - Ejecutar Create Payment. Use el «ID» que obtiene en la respuesta.

Cuando el cliente solicite un reembolso en su sitio web, usted le solicitará a Rapyd que procese el reembolso.

Para eso, utilizará Create Refund con el siguiente parámetro:

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

payment

Introduzca el «ID» del pago que recibió cuando creó el pago en su sandbox. Para esta lección de caso de uso, usaremos payment_1b3e27edf2c43a0b5d1a7de69fbe7102, que es el ID de pago que hemos creado en nuestro sandbox.

No necesita especificar el monto, ya que se trata de un reembolso completo.

Crear solicitud de reembolso

Le solicita a Rapyd que procese el reembolso de la transacción anterior.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/refunds
        
        // Message body:
        {
          "payment": "payment_29816514741fe7e4cdee75f7093ccbe1"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            payment = "payment_29816514741fe7e4cdee75f7093ccbe1",
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/refunds", request);
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
        }
    • JavaScript

      • const makeRequest = require('../../../../../Utilities/JS/utilities').makeRequest;
        
        async function main() {
          try {
            const body = {
              payment: 'payment_29816514741fe7e4cdee75f7093ccbe1'
            };
            const result = await makeRequest('POST', '/v1/refunds', body);
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • PHP

      • <?php
        $path = $_SERVER['DOCUMENT_ROOT'];
        $path .= "/code_race_2020/Utilities/PHP/utilities.php";
        include($path);
        
        $body = [
            "payment" => "payment_29816514741fe7e4cdee75f7093ccbe1"
        ];
        
        try {
            $object = make_request('post', '/v1/refunds', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        refund_body = {
            "payment": "payment_29816514741fe7e4cdee75f7093ccbe1"
        }
        
        create_refund_results = make_request(method='post',
                                             path='/v1/refunds',
                                             body=refund_body)
        
        pprint(create_refund_results)
Obtener una respuesta de reembolso

Veamos la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "bc321df9-7bb4-47ce-907a-7bbc5a9b32f7"
            },
            "data": {
                "id": "refund_dcdacdb591a117d3d5eb30e59011aadd",
                "amount": 15.65,
                "payment": "payment_29816514741fe7e4cdee75f7093ccbe1",
                "currency": "USD",
                "failure_reason": "",
                "metadata": {},
                "reason": "",
                "status": "Completed",
                "receipt_number": 0,
                "created_at": 1589302965,
                "updated_at": 1589302965,
                "merchant_reference_id": "",
                "payment_created_at": 1589237080,
                "payment_method_type": "us_debit_visa_card",
                "ewallets": [
                    {
                        "ewallet": "ewallet_be4ba8f13da40caa59a7e03022a8acfe",
                        "amount": 15.65
                    }
                ],
                "proportional_refund": true
            }
        }

La sección data de esta respuesta muestra:

  • El amount es 15,65.

  • El currency es USD.

  • El status es Completado.

Nota

Si el pago se realizó en efectivo o mediante un redireccionamiento bancario, completar el proceso de reembolso requiere los mismos pasos adicionales que el método de pago original. Para simular la acción del cliente, ejecute Complete Refund.

Rapyd envía un webhook para notificarle que la transacción de reembolso se ha completado.

Una vez realizados todos los pasos adicionales, su sitio web muestra al cliente una confirmación de que el reembolso se ha completado.

Para ver los detalles del pago y el reembolso, use Retrieve Payment.

¿Busca información técnica más detallada?

¿Desea ver los métodos y objetos de la API de Rapyd que utilizará? Consulte Merchant API Reference para obtener más detalles técnicos.