Skip to main content

Documentación

Cómo mover fondos entre billeteras

Envíe dinero dentro del ecosistema de Rapyd. | Enterprise

La plataforma Rapyd facilita a sus clientes la transferencia de dinero desde su propia Rapyd Wallet a la billetera de otro cliente. Los casos de uso comunes pueden incluir:

  • Un cliente quiere transferir fondos a la billetera de otro cliente.

  • Un vendedor de un mercado decide transferir fondos a la billetera de otro vendedor.

  • La billetera de una empresa transfiere fondos a la billetera de un empleado para que la transacción sea más rápida que el desembolso.

Por ejemplo, un cliente de su plataforma quiere transferir fondos a otro cliente de su plataforma.

El cliente 1 le proporciona la información de identificación del cliente 2, el monto y la moneda a transferir. Su sistema ERP le pide a Rapyd que transfiera el dinero al cliente 2. Cuando se inicia la transferencia, su ERP le pide al cliente 2 que acepte la transferencia. Rapyd completa la transferencia y su ERP notifica a ambos clientes que se ha transferido el dinero.

Nota

¿Por qué transferir fondos entre Rapyd Wallets en lugar de un proceso de desembolso? Rapidez, sencillez y costos. La creación de un ecosistema de billeteras le permite pagar a sus trabajadores de forma más fluida, acelera el tiempo de procesamiento y evita las costosas comisiones de transacción de terceros.

Veamos los aspectos más destacados de su flujo de trabajo.

En su página web o aplicación móvil, el cliente selecciona Transferir fondos a otra billetera y hace clic en Confirmar.

initiate-the-transfer.jpg
  1. La página web o la aplicación móvil solicitan al cliente los detalles de la transferencia.

  2. El cliente 1 proporciona los detalles.

  3. El back-end le pide a Rapyd que inicie la transferencia.

  4. Rapyd procesa la solicitud y le notifica que se ha iniciado la transferencia.

  5. Su back-end envía la confirmación al cliente que solicitó la transferencia.

complete-the-transfer.jpg
  1. Usted notifica al destinatario que se está enviando dinero y le pide que acepte.

  2. El destinatario hace clic en Aceptar.

  3. Su back-end le pide a Rapyd que finalice la transferencia.

  4. Rapyd transfiere el dinero y le notifica que la transferencia se ha completado.

  5. Usted notifica a ambos clientes que la transferencia se ha completado.

Los siguientes diagramas de secuencia de mensajes describen cómo se intercambia la información entre Rapyd, el comercio y los clientes del comercio.

Transferir fondos entre billeteras

transfer-funds-between-wallets-sequence---recipient-does-not-respond.svg

Transferencia de fondos entre billeteras: rechazada

transfer-funds-between-wallets-sequence---customer-rejects-transaction.svg

Transferencia de fondos entre billeteras: cancelada

transfer-funds-between-wallets-sequence---recipient-does-not-respond.svg

Prerrequisitos

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

  • source_ewallet: ejecute Crear una billetera para la billetera del cliente. Use el ID de billetera que obtuvo en la respuesta.

  • destination_wallet: ejecute Crear una billetera para la billetera del cliente. Use el ‘id’ que obtuvo en la respuesta.

Para obtener más información, consulte Crear una Rapyd Wallet.

Cuando el cliente solicita transferir fondos a la billetera del cliente, pídale a Rapyd que inicie el proceso de transferencia. Este es el primer paso de un proceso de dos pasos.

Para eso, use Transferir fondos entre billeteras con los siguientes parámetros:

Descripción de los parámetros

Parámetro del cuerpo

Descripción

amount

Introduzca 100 como el monto a transferir de la billetera del cliente.

currency

Introduzca USD como código de moneda para dólares estadounidenses.

source_ewallet

Introduzca el ID que recibió cuando creó la cartera del cliente en su sandbox. Para los fines de esta lección de casos de uso, estamos usando ewallet_56a273c10570528c608f2c6bcdc8ea41, que es el ID de la billetera que hemos creado en nuestra sandbox.

destination_ewallet

Introduzca el ‘id’ que recibió cuando creó la cartera del cliente 2 en su sandbox. Para los fines de esta lección de casos de uso, estamos usando ewallet_43b888d4c038a219c52f45e754139f74, que es el ID de la billetera que hemos creado en nuestra zona de pruebas.

Solicitud de transferencia de fondos entre billeteras

Pídale a Rapyd que transfiera el dinero a la billetera del cliente 2.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/account/transfer
        
        // Message body:
        {
                "amount": 100,
                "currency": "USD",
                "source_ewallet": "ewallet_56a273c10570528c608f2c6bcdc8ea41",
                "destination_ewallet": "ewallet_43b888d4c038a219c52f45e754139f74",
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 100,
                            currency = "USD",
                            source_ewallet = "ewallet_56a273c10570528c608f2c6bcdc8ea41",
                            destination_ewallet = "ewallet_43b888d4c038a219c52f45e754139f74",
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/account/transfer", 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 = {
              source_ewallet: 'ewallet_56a273c10570528c608f2c6bcdc8ea41',
              destination_ewallet: 'ewallet_43b888d4c038a219c52f45e754139f74',
              amount: 100,
              currency: 'USD'
            };
            const result = await makeRequest('POST', '/v1/account/transfer', 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 = [
            'amount' => 100,
            'currency' => 'USD',
            'source_ewallet' => 'ewallet_56a273c10570528c608f2c6bcdc8ea41',
            'destination_ewallet' => 'ewallet_43b888d4c038a219c52f45e754139f74'
        ];
        
        try {
            $object = make_request('post', '/v1/account/transfer', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
Respuesta de transferencia de fondos entre billeteras

Veamos la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "1e6a07d6-7b06-4d6b-88b6-552fd4c2ec60"
            },
            "data": {
                "id": "af468df8-6f4e-11ea-833c-02e199f7f6f5",
                "status": "PEN",
                "amount": 100,
                "currency_code": "USD",
                "transfer_response_at": 0,
                "created_at": 1585219432,
                 
        //   ...
                  
            }
        }

La sección data de esta respuesta muestra:

  • El Id de la transacción de transferencia es af468df8-6f4e-11ea-833c-02e199f7f6f5. Cuando ejecute este ejemplo en su propia sandbox, obtendrá un ID diferente, que necesitará para un paso posterior en este caso de uso.

  • El status es PEN (Pendiente). El dinero aún no se ha transferido.

  • El amount es 100.

  • El currency_code es USD.

Transacciones pendientes en el libro mayor de billeteras

Para ver el estado de las transacciones, consulte el campo status. El source_ewallet_id o el destination_ewallet_id identifican la billetera de origen y destino de la transacción.

Cuando el cliente 2 indica que acepta la transferencia, pídale a Rapyd que complete la transacción.

Para eso, use Configurar la respuesta de transferencia con los siguientes parámetros:

Descripción de los parámetros

Parámetro del cuerpo

Descripción

id

Introduzca el ‘id’ de la transacción de transferencia que recibió al crear la transacción de transferencia en su sandbox. Para los fines de esta lección de casos de uso, estamos usando af468df8-6f4e-11ea-833c-02e199f7f6f5, que es el ID de la transacción de transferencia que creamos en nuestra sandbox.

status

Introduzca aceptar para indicar que el cliente 2 acepta la transferencia.

Configurar solicitud de respuesta de transferencia

Pídale a Rapyd que complete la transferencia de $100,00 de la billetera del cliente a la billetera del cliente 2.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/account/transfer/response
        
        // Message body:
        {
            "id": "af468df8-6f4e-11ea-833c-02e199f7f6f5",
            "status": "accept"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            id = "af468df8-6f4e-11ea-833c-02e199f7f6f5",
                            status = "accept",
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", "/v1/account/transfer/response", 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 = {
              id: 'af468df8-6f4e-11ea-833c-02e199f7f6f5',
              status: 'accept'
            };
            const result = await makeRequest('POST', '/v1/account/transfer/response', 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 = [
            'id' => 'af468df8-6f4e-11ea-833c-02e199f7f6f5',
            'status' => 'accept',
        ];
        
        try {
            $object = make_request('post', '/v1/account/transfer/response', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        transfer = 'af468df8-6f4e-11ea-833c-02e199f7f6f5'
        
        body = {
            "id": transfer,
            "status": "accept"
        }
        
        results = make_request(method='post', path='/v1/account/transfer/response', body=body)
        pprint(results)
Establecer la respuesta de transferencia

Veamos la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "4b8e014f-38ff-48dc-812b-547bd1f65874"
            },
            "data": {
                "id": "af468df8-6f4e-11ea-833c-02e199f7f6f5",
                "status": "CLO",
                "amount": 100,
                "currency_code": "USD",
                "destination_phone_number": null,
                "transfer_response_at": 1585219599,
                "created_at": 1585219432,
                 
        //   ...
                  
            }
        }

La sección data de esta respuesta muestra que el estado es ahora CLO (cerrado). Esto indica que el dinero se ha transferido al monedero del cliente 2.

Su página web notifica a ambos contactos de la billetera que la transferencia se ha completado.