Pagos grupales
Permite que hasta diez clientes combinen sus pagos individuales para una sola transacción de compra o un pago grupal.
Rapyd permite que hasta diez clientes compren un producto o un servicio juntos. Esta función es especialmente útil cuando los clientes comparten el mismo servicio. Algunos casos de uso pueden incluir:
Dos o más pasajeros que pagan por un servicio de viaje compartido.
Pago grupal de una factura o servicio.
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 han firmado un acuerdo especial con Rapyd
Puede encontrar los métodos de pago específicos que aceptará y los campos obligatorios correspondientes que los clientes deben llenar en la sección Cómo funciona.

El cliente 1 confirma el pago del viaje compartido.
Pago del viaje compartido del cliente 2.
El cliente solicita a Rapyd que cree un pago grupal.
Rapyd crea un pago grupal y envía la confirmación.
El cliente 1 envía sus fondos.
El cliente 2 envía sus fondos.
Rapyd procesa la transacción y envía una confirmación de webhook.
Notifica a cada cliente que se han recibido los fondos.
Los siguientes diagramas de secuencia de mensajes describen cómo se intercambia la información entre Rapyd, el comercio, los clientes del comercio y la red de tarjetas.
Crear pago grupal: Exitoso
Crear pago grupal: Error
Prerrequisitos
Para ejecutar los ejemplos de este caso de uso, debe crear el siguiente ID en su propio sandbox:
ewallet - Ejecute Create Wallet para la billetera del servicio de viaje compartido. Use el «ID» que aparece en la respuesta.
Decide qué métodos de pago aceptará. Ver 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 Campos obligatorios para obtener el método de pago .
Dos clientes pagan por un servicio de viaje compartido que cuesta 250 USD (dólares estadounidenses). Cuando llegan a su destino, el usuario de prueba 1 paga USD 50 y el usuario de prueba 2 paga USD 200.
Para transferir el dinero a la billetera de la empresa, solicita a Rapyd que cree un pago grupal. De las diferentes opciones de pago, ambos clientes eligen pagar por transferencia bancaria.
Para eso, utilizar Crear un pago grupal con los siguientes parámetros:
Descripción de los parámetros del cuerpo
Parámetro del cuerpo | Descripción |
|---|---|
pagos | Introduzca una lista de objetos El primer objeto
En segundo objeto
|
Crear solicitud de pago grupal
Solicita a Rapyd que cree el pago grupal en la billetera de su empresa.
Solicitud
// Request URL: POST https://sandboxapi.rapyd.net/v1/payments/group_payments // Message body: { "merchant_reference_id": "12345689", "payments": [ { "payment_method": { "type": "us_debit_discover_card", "fields": { "number": "4111111111111111", "expiration_month": "11", "expiration_year": "21", "cvv": "123", "name": "Test User1", "address": "123 Main street, Anytown" }, "metadata": null }, "amount": 50, "currency": "USD", "ewallets": [{ "ewallet": "ewallet_4f8009d08b7b41e5d3b356494101d83b" } ] }, { "payment_method": { "type": "us_mastercard_card", "fields": { "number": "4111111111111111", "expiration_month": "11", "expiration_year": "21", "cvv": "123", "name": "Test User2", "address": "123 Main street, Anytown" }, "metadata": null }, "amount": 200, "currency": "USD", "ewallets": [{ "ewallet": "ewallet_4f8009d08b7b41e5d3b356494101d83b" } ] } ] }
.NET Core
using System; using System.Text.Json; namespace RapydApiRequestSample { class Program { static void Main(string[] args) { try { var payment_a = new { payment_method = new { type = "us_discover_card", fields = new { number = "4111111111111111", expiration_month = "11", expiration_year = "21", cvv = "123", name = "John Doe", address = "123 Main Street, Anytown, NY" } }, amount = 50, currency = "USD", ewallets = new Object[] { new { ewallet = "ewallet_4f8009d08b7b41e5d3b356494101d83b" } } }; var payment_b = new { payment_method = new { type = "us_mastercard_card", fields = new { number = "4111111111111111", expiration_month = "11", expiration_year = "21", cvv = "123", name = "John Doe", address = "123 Main Street, Anytown, NY" } }, amount = 200, currency = "USD", ewallets = new Object[] { new { ewallet = "ewallet_4f8009d08b7b41e5d3b356494101d83b" } } }; var requestObj = new { payments = new Object[] { payment_b, payment_a }, merchant_reference_id = "12345689" }; string request = JsonSerializer.Serialize(requestObj); string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/payments/group_payments", request); Console.WriteLine(result); } catch (Exception e) { Console.WriteLine("Error completing request: " + e.Message); } } } }
JavaScript
const makeRequest = require('<path-to-your-utility-file>/utilities').makeRequest; async function main() { try { const body = { merchant_reference_id: '12345689', payments: [ { payment_method: { type: 'us_discover_card', fields: { number: '4111111111111111', expiration_month: '11', expiration_year: '21', cvv: '123', name: 'Jane Doe', address: '123 Main Street, Anytown' } }, amount: 50, currency: 'USD', ewallets: [ { ewallet: 'ewallet_4f8009d08b7b41e5d3b356494101d83b' } ] }, { payment_method: { type: 'us_mastercard_card', fields: { number: '4111111111111111', expiration_month: '11', expiration_year: '21', cvv: '123', name: 'John Doe', address: '123 Main Street, Anytown' } }, amount: 200, currency: 'USD', ewallets: [ { ewallet: 'ewallet_4f8009d08b7b41e5d3b356494101d83b' } ] } ] }; const result = await makeRequest('POST', '/v1/payments/group_payments', body); console.log(result); } catch (error) { console.error('Error completing request', error); } }
PHP
<?php $path = $_SERVER['DOCUMENT_ROOT']; $path .= "/<path-to-your-utility-file>/utilities.php"; include($path); $body = [ "merchant_reference_id" => "12345689", "payments" => [ [ "payment_method" => [ "type" => "us_discover_card", "fields" => [ "number" => "4111111111111111", "expiration_month" => "11", "expiration_year" => "21", "cvv" => "123", "name" => "Jane Doe", "address" => "123 Main street, Anytown" ] ], "amount" => 50, "currency" => "USD", "ewallets" => [[ "ewallet" => "ewallet_4f8009d08b7b41e5d3b356494101d83b" ] ] ], [ "payment_method" => [ "type" => "us_mastercard_card", "fields" => [ "number" => "4111111111111111", "expiration_month" => "11", "expiration_year" => "21", "cvv" => "123", "name" => "John Doe", "address" => "123 Main street, Anytown" ] ], "amount" => 200, "currency" => "USD", "ewallets" => [[ "ewallet" => "ewallet_4f8009d08b7b41e5d3b356494101d83b" ] ] ] ] ]; try { $object = make_request('post', '/v1/payments/group_payments', $body); var_dump($object); } catch (Exception $e) { echo "Error: $e"; } ?>
Python
from pprint import pprint from utilities import make_request group_payment_body = { "merchant_reference_id": "12345689", "payments": [{ "payment_method": { "type": "us_discover_card", "fields": { "number": "4111111111111111", "expiration_month": "11", "expiration_year": "21", "cvv": "123", "name": "Jane Doe", "address": "123 Main street, Anytown" } }, "amount": 50, "currency": "USD", "ewallets": [{ "ewallet": "ewallet_4f8009d08b7b41e5d3b356494101d83b" }] }, { "payment_method": { "type": "us_mastercard_card", "fields": { "number": "4111111111111111", "expiration_month": "11", "expiration_year": "21", "cvv": "123", "name": "John Doe", "address": "123 Main street, Anytown" } }, "amount": 200, "currency": "USD", "ewallets": [{ "ewallet": "ewallet_4f8009d08b7b41e5d3b356494101d83b" }] }] } create_group_payment_response = make_request(method='post', path='/v1/payments/group_payments', body=group_payment_body) pprint(create_group_payment_response)
Obtenga una respuesta de pago grupal
Veamos la respuesta.
Respuesta
{ "status": { "error_code": "", "status": "SUCCESS", "message": "", "response_code": "", "operation_id": "04d56aea-edee-4aa6-aea2-9d8ab7df98b6" }, "data": { "id": "gp_b323dd9cf3e6a97f4cbca1d223e828b6", "amount": 250, "amount_to_replace": 0, "status": "closed", "currency": "USD", "country": "US", "merchant_reference_id": "12345689", "description": "", "metadata": { "user_defined": "silver" }, "expiration": null, "cancel_reason": null, "payments": [ { "id": "payment_a2e52670fd0d59ce6f4c7520fdd8bdc1", "amount": 50, "original_amount": 50, "is_partial": false, "currency_code": "USD", "country_code": "US", "status": "CLO", // ... "paid": true, "paid_at": 1581435110, // ... "ewallet_id": "ewallet_4f8009d08b7b41e5d3b356494101d83b", "ewallets": [ { "ewallet_id": "ewallet_4f8009d08b7b41e5d3b356494101d83b", "amount": 50, "percent": 100, "refunded_amount": 0 } ], "payment_method_options": {}, "payment_method_type": "us_debit_discover_card", "payment_method_type_category": "card", "fx_rate": "", "merchant_requested_currency": null, "merchant_requested_amount": null, "fixed_side": "", "payment_fees": null, "invoice": "", "escrow": null, "group_payment": "gp_b323dd9cf3e6a97f4cbca1d223e828b6" }, { "id": "payment_4dc0e0ad8590ac86157478fd1f678c19", "amount": 200, "original_amount": 200, "is_partial": false, "currency_code": "USD", "country_code": "US", "status": "CLO", // ... "paid": true, "paid_at": 1581435110, // ... "ewallet_id": "ewallet_4f8009d08b7b41e5d3b356494101d83b", "ewallets": [ { "ewallet_id": "ewallet_4f8009d08b7b41e5d3b356494101d83b", "amount": 200, "percent": 100, "refunded_amount": 0 } ], "payment_method_options": {}, "payment_method_type": "us_mastercard_card", "payment_method_type_category": "card", "fx_rate": "", "merchant_requested_currency": null, "merchant_requested_amount": null, "fixed_side": "", "payment_fees": null, "invoice": "", "escrow": null, "group_payment": "gp_b323dd9cf3e6a97f4cbca1d223e828b6" } ] } }
La sección data de la respuesta muestra:
id- El ID delgroup_paymentes gp_b323dd9cf3e6a97f4cbca1d223e828b6. El ID delgroup_paymentmuestra que el pago fue financiado por varios clientes.Hay dos IDs de pago. Cuando ejecute este ejemplo en su propio sandbox, obtendrá diferentes ID, que necesitará para los pasos posteriores en este caso de uso.
payment_a2e52670fd0d59ce6f4c7520fdd8bdc1 es el ID del pago de Jane Doe.
payment_4dc0e0ad8590ac86157478fd1f678c19 es el ID del pago de John Doe.
El
currency_codees USD (Dólares estadounidenses).El
statuses ACT (Activo y en espera de pago).customer_token- Hay dos tokens de cliente:cus_e0f030467d787e3e3e4570e3e623426a es el ID del cliente de Jane Doe.
cus_f72b1a5d07af0c7aa9ff48008697456c es el ID del cliente de John Doe.
ewallet- El ID del eWallet de su empresa en ambos pagos. El ID del eWallet ewallet_2dae0b1fea197d342868ab127c35592d y la cantidad es USD 200.payment_method_type- Hay dos métodos de pago:US_debit_discover_card es el ID del pago de Jane Doe.
us_mastercard_card es el método de pago de John Doe.
payment_method_type_category- El método de pago es de tipo tarjeta para ambos pagos.
Su sitio web o app notifica a los clientes que transfieran los fondos mediante transferencia bancaria. Cuando ambas transferencias sean realizadas por John como Jane Doe, Rapyd procesa la transacción y envía el webhook Group Payment Completed confirmando que el pago se ha realizado.
Simular una transferencia bancaria
El sandbox no simula directamente una transferencia bancaria. Puede simular esta acción con el procedimiento descrito en Completar el pago. Para ello, necesitará el ID del pago que recibió para cada cliente en la respuesta a «Crear pago grupal».
Configure su sistema para recibir webhooks con el procedimiento descrito en Definición de un endpoint de webhook.
Ahora su sitio web o app puede informar a los dos clientes de que las transferencias a su billetera de cliente se realizaron correctamente.