Skip to main content

Documentación

Reembolsos parciales

Su cliente solicita el reembolso de una parte de una compra.

Rapyd proporciona un método rápido y sencillo para procesar los reembolsos parciales de una compra.

Puede hacer reembolsos parciales varias veces por la misma compra hasta que los reembolsos sean iguales al monto total de la transacción original.

Los reembolsos se realizan al método de pago utilizado en la transacción de pago original. En este caso de uso, el cliente pagó con tarjeta, por lo que el reembolso se devuelve a esa tarjeta.

Certificación PCI

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

El cliente usó una tarjeta para comprar dos copias de un eBook en su sitio web. Ahora el cliente quiere que el reembolso de un eBook. El precio de cada copia del eBook era de USD 5,99 (dólares estadounidenses).

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

El cliente pagó previamente los eBooks. El cliente ya ha llenado todos los campos obligatorios de la página Solicitud de reembolso de su sitio web . Tiene el ID de la transacción y el monto que debe reembolsarse.

refund.jpg
  1. El back-end del sitio web le pide 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. 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 parcial: Exitoso

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

Reembolso parcial: Rechazado

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

Prerrequisitos

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

  • payment - Ejecute Crear pago. Use el «ID» que obtenga en la respuesta.

Cuando el cliente solicita un reembolso parcial en su sitio web, le pide a Rapyd que procese el reembolso.

Para eso, utilizar Crear reembolso con los siguientes parámetros:

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

payment

Introducir el «ID» del pago que recibió cuando creó el pago en su sandbox. Para los fines de esta lección de caso de uso, estamos usando payment_52b4cb2ba10338e274c689cb759a5043, que es el ID del pago que creamos en nuestro sandbox.

amount

Introducir 5,99 como monto del reembolso.

Crear solicitud de reembolso

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_52b4cb2ba10338e274c689cb759a5043",
            "amount": 5.99 
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            payment = "payment_52b4cb2ba10338e274c689cb759a5043",
                            amount = "5.99",
                        };
        
                        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_52b4cb2ba10338e274c689cb759a5043',
              amount: 5.99
            };
            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",
            "amount" => 5.99
        ];
        
        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_52b4cb2ba10338e274c689cb759a5043",
            "amount": 5.99
        }
        
        create_refund_results = make_request(method='post',
                                             path='/v1/refunds',
                                             body=refund_body)
        
        pprint(create_refund_results)
        
        
Crear respuesta de reembolso

Veamos la respuesta.

    • Respuesta

      • {
        
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "b79147b4-a919-4ad0-9942-8134ed1dad95"
            },
            "data": {
                "id": "refund_80cfd3f26326164a54bdc42535dc8bf3",
                "amount": 5.99,
                "payment": "payment_52b4cb2ba10338e274c689cb759a5043",
                "currency": "USD",
                  
        //      ...
                  
                "status": "Pending",
                "receipt_number": 0,
                "created_at": 1581005810,
                "updated_at": 1581005810,
                "merchant_reference_id": "",
                "payment_created_at": 1581005363,
                "payment_method_type": "mx_banamex_cash",
                "ewallets": [
                    {
                        "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                        "amount": 5.99
                    }
                ],
                "proportional_refund": true
            }
        }
           
        

La sección data de esta respuesta muestra:

  • El amount es 5,99.

  • El currency es USD.

  • El status es Pendiente. Esto significa que para completar el proceso de reembolso se requieren pasos adicionales.

Nota

Si el pago se realizó en efectivo o mediante una redirección bancaria, 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 Reembolso completo.

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

Una vez que se hayan realizado todos los pasos adicionales, su sitio web mostrará a John Doe una confirmación de que el reembolso se ha completado.

Para ver los detalles del pago y el reembolso, utilizar Recuperar el pago.

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

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