Skip to main content

Documentación

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.

Update_Icons_on_Group_Payments.jpg
  1. El cliente 1 confirma el pago del viaje compartido.

  2. Pago del viaje compartido del cliente 2.

  3. El cliente solicita a Rapyd que cree un pago grupal.

  4. Rapyd crea un pago grupal y envía la confirmación.

  5. El cliente 1 envía sus fondos.

  6. El cliente 2 envía sus fondos.

  7. Rapyd procesa la transacción y envía una confirmación de webhook.

  8. 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

create-group-payment-card.svg
create-group-payment-card-processing.svg

Crear pago grupal: Error

create-group-payment-card-failed.svg
create-group-payment-card-failed-processing.svg
create-group-payment-card-failed-update.svg

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.

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 payments que identifiquen cada pago, su tipo, monto del pago y moneda.

El primer objeto payments para el pago del usuario de prueba 1:

  • El objeto payment_method dentro de el objeto payments:

    • type - Introduzca us_debit_discover_card como método de pago.

    • fields - Introduzca los detalles de la tarjeta.

    • amount - Introduzca 50 como la cantidad.

    • currency - Introduzca USD como el código para dólares estadounidenses.

    • El objeto ewallets dentro del objeto pagos:

      • ewallet- Introduzca el «ID» de la billetera que recibió cuando lo creó en su sandbox. Para los fines de esta lección de caso de uso, estamos usando ewallet_4f8009d08b7b41e5d3b356494101d83b, que es el ID de la billetera que creamos en nuestro sandbox.

En segundo objeto payments para el pago del usuario de prueba 2:

  • El objeto payment_method dentro del objeto payments:

    • type - Introduzca us_mastercard_card como método de pago.

    • fields - Introduzca los detalles de la tarjeta.

    • amount- Introduzca 200 como el monto.

    • El objeto ewallets dentro del objeto payments:

      • ewallet- Introduzca el «ID» de la billetera que recibió cuando lo creó en su sandbox. Para los fines de esta lección de caso de uso, estamos usando ewallet_4f8009d08b7b41e5d3b356494101d83b, que es el ID de la billetera que hemos creado en nuestro sandbox.

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 del group_payment es gp_b323dd9cf3e6a97f4cbca1d223e828b6. El ID del group_payment muestra 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_code es USD (Dólares estadounidenses).

  • El status es 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.