Skip to main content

Documentación

Reembolso a varias cuentas

Cuando varios vendedores participan en una sola transacción, puedes enviar un reembolso desde un vendedor.

Rapyd proporciona un método rápido y sencillo para procesar reembolsos parciales de una compra realizada por un cliente en tu sitio web de comercio electrónico.

Puedes hacer reembolsos parciales varias veces por la misma compra.

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 a varios vendedores (monederos) y un vendedor específico (monedero) realizó un reembolso parcial

Certificación PCI

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

El cliente utiliza una tarjeta para comprar un altavoz y un teléfono a dos vendedores del sitio web de tu plataforma. Más adelante, el cliente solicita un reembolso parcial al vendedor del altavoz, ya que el altavoz no era del color exacto que se anunciaba

back-end de tu sitio web le pide a Rapyd que procese el reembolso parcial desde la cartera del vendedor del altavoz. Cuando el dinero se devuelve a la tarjeta del cliente, Rapyd te notifica que el reembolso parcial se ha

Puedes encontrar los métodos de pago por transferencia bancaria específicos que aceptarás y los campos obligatorios correspondientes que los clientes deben rellenar en la sección Cómo funciona.

process-payment.jpg
  1. Un cliente del sitio web de tu plataforma compra dos productos de dos vendedores diferentes.

  2. El back-end del sitio web le pide a Rapyd que procese la transacción.

  3. Rapyd procesa el pago.

process-refund-multiple-accounts.jpg

El cliente rellena todos los campos requeridos por tu sitio web Solicitud de reembolso página para recibir un reembolso parcial de un vendedor. Tienes el identificador de la transacción y el importe que debes reembolsar

  1. El cliente solicita al vendedor un reembolso parcial.

  2. El backend de tu sitio web solicita a Rapyd que procese el reembolso parcial del cliente.

  3. Rapyd procesa la transacción de reembolso y te notifica que se ha realizado correctamente y, a continuación, envías la confirmación del reembolso al cliente.

Prerrequisitos

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

  • 'ewallet' - Ejecutar Crea un monedero para la cartera del vendedor del teléfono. Usa la «identificación» que obtienes en la respuesta. Repite el procedimiento para la cartera del vendedor del altavoz.

Busca los campos obligatorios que los clientes deben rellenar para cada método de pago. Campos obligatorios para obtener el método de pago .

El cliente realiza estas compras en el sitio web de tu plataforma:

  • Un altavoz de un vendedor por 50,00 USD (dólares estadounidenses).

  • Un teléfono de otro vendedor por 200 USD (dólares estadounidenses).

Le pides a Rapyd que procese el pago.

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

Descripción de los parámetros corporales

Parámetro corporal

Descripción

cantidad

Entrar 250 como importe total del pago.

moneda

Entrar USD como código para dólares estadounidenses.

método_pago

Introduzca un objeto 'payment_method' que tenga los siguientes campos:...cvv - Entrar 123.nombre - Entrar Usuario de prueba.

  • tipo - Entrar us_debit_visa_card como el tipo de método de pago.

  • campos - Introduzca un objeto que tenga los siguientes campos. Los campos se definen en la respuesta «Obtener los campos obligatorios del método de pago» us_debit_visa_card.

    • número - Entrar 4- 1111111 .

    • mes_caducidad - Ingresar 10

    • año_caducidad - Ingresar 20

    • cvv- Entrar123.

    • nombre- EntrarUsuario de prueba .

monederos electrónicos

Introduzca una matriz de los siguientes objetos: Primer objeto:

  • monedero electrónico - Introduce el «identificador» de la cartera que recibiste cuando creaste la cartera del vendedor de altavoces en tu sandbox. Para los fines de esta lección de casos de uso, estamos usando ewallet_090e1ef18c3aa754fd43cce9ee454858, que es el identificador de monedero que hemos creado en nuestra zona de pruebas.

  • cantidad - Ingresar 50 como importe a pagar al vendedor del altavoz

Segundo objeto:

  • monedero electrónico - Introduce el «identificador» de la cartera que recibiste cuando creaste la cartera del vendedor de altavoces en tu sandbox. Para los fines de esta lección de casos de uso, estamos usando ewallet_11078019438f943986c1fcfbaba05e13, que es el identificador de monedero que hemos creado en nuestra zona de pruebas.

  • cantidad - Ingresar 200 como importe a pagar al vendedor del teléfono.

Crear solicitud de pago

Le pides a Rapyd que procese el pago.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body:
        {
                "amount": 250,
                "currency": "USD",
                "payment_method": {
                        "type": "us_debit_visa_card",
                        "fields": {
                                "number": "4111111111111111",
                                "expiration_month": "10",
                                "expiration_year": "20",
                                "cvv": "123",
                                "name": "Test User"
                        }
                },
                "ewallets": [
                        {
                                "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                                "amount": 50
                        }, 
            {
                                "ewallet": "ewallet_11078019438f943986c1fcfbaba05e13",
                                "amount": 200
                        }
                ]
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 250,
                            currency = "USD",
                            payment_method = new
                            {
                                type = "us_visa_card",
                                number = "4111111111111111",
                                expiration_month = "10",
                                expiration_year = "20",
                                cvv = "123",
                                name = "John Doe",
                            },
                            ewallets = new Object[]
                            {
                                new
                                {
                                    ewallet = "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                                    amount = 50
                                },
                                new
                                {
                                    ewallet = "ewallet_11078019438f943986c1fcfbaba05e13",
                                    amount = 200
                                },
                            },
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payments", request);
        
                        Console.WriteLine(result);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error completing request: " + e.Message);
                    }
                }
            }
        }
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
            "amount": 250,
            "currency": "USD",
            "payment_method": {
                "type": "us_visa_card",
                "fields": {
                    "number": "4111111111111111",
                    "expiration_month": "10",
                    "expiration_year": "20",
                    "cvv": "123",
                    "name": "John Doe"
                }
            },
            "ewallets": [
                {
                    "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                    "amount": 50
                },
                {
                    "ewallet": "ewallet_11078019438f943986c1fcfbaba05e13",
                    "amount": 200
                }
            ]
        }
        
        create_payment_response = make_request(method='post', path='/v1/payments', body=payment_body)
        pprint(create_payment_response)
Crear respuesta de pago

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "d584c716-0e2d-47aa-a85d-8e8d99f4ee45"
            },
            "data": {
                "id": "payment_a257811affe292c98c8bb6693e8b8cf0",
                "amount": 250,
                "original_amount": 250,
                "is_partial": false,
                "currency_code": "USD",
                "country_code": "US",
                "status": "CLO",
                "description": "",
                "merchant_reference_id": "",
                "customer_token": "cus_8aeff2ec08a57b44e4442786276d4ef2",
                "payment_method": "card_d25e29a0cdb7866766bb2c2528cd49e3",
                
        //  ...
                  
                "created_at": 1581246669,
                "metadata": {},
                "failure_code": "",
                "failure_message": "",
                "paid": true,
                "paid_at": 1581246670,
                
        //  ...          
                  
                "ewallets": [
                    {
                        "ewallet_id": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                        "amount": 50,
                        "percent": 20,
                        "refunded_amount": 0
                    },
                    {
                        "ewallet_id": "ewallet_11078019438f943986c1fcfbaba05e13",
                        "amount": 200,
                        "percent": 80,
                        "refunded_amount": 0
                    }
                ],
                "payment_method_options": {},
                "payment_method_type": "us_debit_visa_card",
                "payment_method_type_category": "card",
               
        //    ...
                  
            }
        }

El datos la sección de esta respuesta muestra que:

  • El pago id es payment_a257811affe292c98c8bb6693e8b8cf0. Cuando ejecutes este ejemplo en tu propia zona de pruebas, obtendrás un ID diferente, que necesitarás para un paso posterior en este caso práctico

  • El cantidad es 250.

  • El moneda es USD.

  • El carteras el objeto indica:

    • Una cantidad de 50 se paga a ewallet_id ewallet_090e1ef18c3aa754fd43cce9ee454858.

    • Una cantidad de 200 se paga a ewallet_id ewallet_11078019438f943986c1fcfbaba05e13.

Utilizarás el pago id y del vendedor de altavoces ewallet_id cuando le pides a Rapyd que reembolse parcialmente el pago al vendedor del altavoz.

El cliente solicita un reembolso parcial al vendedor del altavoz porque el altavoz no era del color exacto que se anunciaba, y tus condiciones de servicio permiten un reembolso parcial del diez por ciento en tales circunstancias.

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

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

Descripción de los parámetros corporales

Parámetro corporal

Descripción

pago

Introduce el «identificador» de pago que recibiste cuando creaste el pago en tu entorno de pruebas. Para los fines de esta lección de casos de uso, estamos usando payment_a257811affe292c98c8bb6693e8b8cf0, que es el identificador de pago que creamos en nuestra zona de pruebas.

monederos electrónicos

Introduzca un monederos electrónicos objeto que tiene los siguientes campos:

  • monedero electrónico - Introduce el «identificador» de la cartera que recibiste cuando creaste la cartera del vendedor de altavoces en tu sandbox. Para los fines de esta lección de casos de uso, estamos usando ewallet_090e1ef18c3aa754fd43cce9ee454858, que es el identificador de monedero que hemos creado en nuestra zona de pruebas.

  • cantidad - Ingresar 5 como importe a reembolsar al cliente.

Crear solicitud de reembolso

Le pides 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_a257811affe292c98c8bb6693e8b8cf0",
            "ewallets": [
                {
                    "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                    "amount": 5
                }
            ]
        }
        
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            payment = "payment_a257811affe292c98c8bb6693e8b8cf0",
                            ewallets = new Object[]
                            {
                                new {
                                    ewallet = "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                                    amount = 5,
                                }
                            }
                        };
        
                        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_a257811affe292c98c8bb6693e8b8cf0',
              ewallets: [
                {
                  ewallet: 'ewallet_090e1ef18c3aa754fd43cce9ee454858',
                  amount: 5
                }
              ]
            };
            const result = await makeRequest('POST', '/v1/refunds', body);
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        refund_body = {
            "payment": "payment_a257811affe292c98c8bb6693e8b8cf0",
            "ewallets": [
                {
                    "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                    "amount": 5
                }
            ]
        }
        
        create_refund_results = make_request(method='post',
                                             path='/v1/refunds',
                                             body=refund_body)
        
        pprint(create_refund_results)
Crear respuesta de reembolso

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "5356d170-951e-44d1-8bd5-fc5c6f110319"
            },
            "data": {
                "id": "refund_61a4c85a7cf7a7e631e454784ec4c579",
                "amount": 5,
                "payment": "payment_a257811affe292c98c8bb6693e8b8cf0",
                "currency": "USD",
                "failure_reason": "",
                "metadata": {},
                "reason": "",
                "status": "Completed",
                "receipt_number": 0,
                "created_at": 1581247161,
                "updated_at": 1581247161,
                "merchant_reference_id": "",
                "payment_created_at": 1581246669,
                "payment_method_type": "us_debit_visa_card",
                "ewallets": [
                    {
                        "ewallet": "ewallet_090e1ef18c3aa754fd43cce9ee454858",
                        "amount": 5
                    }
                ],
                "proportional_refund": false
            }
        }

El datos la sección de esta respuesta muestra:

  • El Id si el reembolso es refund_61a4c85a7cf7a7e631e454784ec4c579.

  • El cantidad es 5.

  • El moneda es USD.

  • El estado es Completado. Esto significa que el proceso de reembolso está completo.

  • En el carteras objeto: El monedero cobrado es ewallet_090e1ef18c3aa754fd43cce9ee454858, la cartera del vendedor del altavoz.

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, ejecuta Reembolso completo.

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

Tu sitio web muestra al cliente una confirmación de que se ha completado el reembolso parcial.

Visualización de detalles de transacciones

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

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

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