Reembolso a varias cuentas
Cuando varios vendedores participan en una sola transacción, puede 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 su sitio web de comercio electrónico.
Puede 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 (billetaras) y un vendedor específico (billetera) realizó un reembolso parcial.
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 utiliza una tarjeta para comprar un altavoz y un teléfono a dos vendedores del sitio web de su 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.
El back-end de su sitio web le pide a Rapyd que procese el reembolso parcial desde la billetera del vendedor del altavoz. Cuando el dinero se devuelve a la tarjeta del cliente, Rapyd le notifica que el reembolso parcial se ha completado correctamente.
Encontrar los métodos de pago por transferencia bancaria específicos que aceptará y los campos obligatorios correspondientes que los clientes deben llenar se describe en la sección Cómo funciona.

Un cliente del sitio web de su plataforma compra dos productos de dos vendedores diferentes.
El back-end del sitio web solicita a Rapyd que procese la transacción.
Rapyd procesa el pago.

El cliente llena todos los campos requeridos por la página Solicitud de reembolso de su sitio web para recibir un reembolso parcial de un vendedor. Tiene el ID de la transacción y el monto que debe reembolsar.
El cliente solicita al comercio por un reembolso parcial.
El back-end de su sitio web solicita a Rapyd que procese el reembolso parcial del cliente.
Rapyd procesa la transacción de reembolso, le notifica que se ha realizado correctamente y luego envía 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' - Ejecute Crea un monedero para la billetera del vendedor del teléfono. Use el «ID» que obtiene en la respuesta. Repita el procedimiento para la billetera del vendedor del altavoz.
Decida qué métodos de pago aceptará. Listar los métodos de pago por país .
Encuentre los campos obligatorios que los clientes deben llenar para cada método de pago. Ver Obtener los campos obligatorios del método de pago .
El cliente realiza estas compras en el sitio web de su plataforma:
Un altavoz de un vendedor por USD 50,00 (dólares estadounidenses).
Un teléfono de otro vendedor por 200 USD (dólares estadounidenses).
Solicita a Rapyd que procese el pago.
Para eso, utilizar Crear pago con los siguientes parámetros:
Descripción de los parámetros del cuerpo
Parámetro del cuerpo | Descripción |
|---|---|
amount | Introducir 250 como monto total del pago. |
currency | Introducir USD como el código para dólares estadounidenses. |
payment_method | Introducir un objeto 'payment_method' que tenga los siguientes campos:...
|
ewallets | Introducir una matriz de los siguientes objetos: Primer objeto:
Segundo objeto:
|
Crear solicitud de pago
Solicita 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); } } } }
Python
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
Veamos 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", // ... } }
La sección datos de esta respuesta muestra que:
El
iddel pago es payment_a257811affe292c98c8bb6693e8b8cf0. Cuando ejecute este ejemplo en su sandbox, obtendrá una ID diferente, que necesitará para un paso posterior en este caso de uso.El
amountes 250.La
currencyes USD.El objeto
ewalletsindica:Una monto de 50 se paga a
ewallet_idewallet_090e1ef18c3aa754fd43cce9ee454858.Una monto de 200 se paga a
ewallet_idewallet_11078019438f943986c1fcfbaba05e13.
Utilizará el id del pago y ewallet_id del vendedor del altavoz cuando solicite 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 sus condiciones de servicio permiten un reembolso parcial del diez por ciento en tales circunstancias.
Cuando el cliente solicita un reembolso parcial en su sitio web, le solicita 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_a257811affe292c98c8bb6693e8b8cf0, que es el ID del pago que creamos en nuestro sandbox. |
ewallets | Introducir un objeto
|
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_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); } }
Python
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
Veamos 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 } }
La sección datos de esta respuesta muestra:
El
iddel reembolso es refund_61a4c85a7cf7a7e631e454784ec4c579.El
amountes 5.El
currencyes USD.El
statuses Completado. Esto significa que el proceso de reembolso está completo.En el objeto
ewallets: La billetera cobrada es ewallet_090e1ef18c3aa754fd43cce9ee454858, la billetera 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, ejecute Reembolso completo.
Rapyd envía un webhook para notificarle que la transacción de reembolso se ha completado.
Su sitio web muestra al cliente una confirmación de que se ha completado el reembolso parcial.
Visualizar los detalles de las transacciones
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.