Skip to main content

Documentación

Transferencias Bancarias

Mueva fondos entre cuentas en diferentes bancos.

Una transferencia bancaria es una solicitud de pago desde la cuenta bancaria de su cliente hacia usted. Muchos clientes utilizan las transferencias bancarias como su método de pago principal. Rapyd facilita que sus clientes usen transferencias bancarias para mover fondos entre cuentas y pagar compras. Con las transferencias bancarias puede realizar los siguientes tipos de pagos:

  • Enviar fondos internacionalmente utilizando el código IBAN.

  • Transferencias el mismo día (RÁPIDO) o mediante código QR en Singapur.

El proceso de transferencia bancaria que se describe a continuación explica cómo:

  • Agregar pagos por transferencia bancaria a su flujo de negocio.

  • Crear una solicitud de pago por transferencia bancaria.

  • Capturar la respuesta del pago.

Proceso de pago por transferencia bancaria

64808376193c2.png

La identificación de los métodos de pago por transferencia bancaria que aceptará y los campos obligatorios que los clientes deben completar se describe en Cómo funciona.

customer-instructions.jpg
  1. “El cliente confirma un pago por transferencia bancaria en el carrito del proceso de pago.

  2. El backend de su sitio web solicita a Rapyd que procese el pago por transferencia bancaria.

  3. Rapyd procesa la transacción y responde con los detalles de la transacción de pago.

  4. La respuesta incluye instrucciones de pago para el cliente.

  5. La respuesta incluye instrucciones de pago para el cliente.

contact-bank.jpg
  1. El cliente contacta a su banco (por ejemplo, usando el sitio web del banco, la aplicación móvil, soporte telefónico o una sucursal) e indica al banco que transfiera el dinero.

  2. El banco del cliente realiza la transferencia del dinero.

complete-transaction.jpg
  1. Rapyd es notificado de que la transferencia fue exitosa.

  2. Rapyd notifica al backend de su sitio web mediante un Webhook de Pago Completado que que el pago se completó correctamente.

  3. Usted notifica al cliente que la compra se realizó con éxito.

Los diagramas de secuencia de mensajes a continuación describen cómo se intercambia la información entre Rapyd, el comercio, los clientes del comercio y el banco:

Crear pago por transferencia bancaria – Éxito

create-bank-transfer-payment---success.svg

Crear pago por transferencia bancaria – Fallo

create-bank-transfer-payment---transaction-failed.svg

Crear pago por transferencia bancaria – Transacción expirada

create-bank-transfer-payment---transaction-expired.svg

Decida qué tipos de transferencias bancarias aceptará en un país específico, para que su cliente pueda seleccionar los métodos de pago en su página de pago.

  • Para fines ilustrativos, en los ejemplos de código a continuación se utiliza MX (México) y MXN (Peso mexicano) como país y moneda. El tipo de pago es Transferencia bancaria MX SPEI.

Para hacerlo, utilice Listar métodos de pago por país con los siguientes parámetros:

Descripción de los parámetros de consulta

Parámetro de consulta

Descripción

país

Ingrese MX como el código de país para México.

moneda

Ingrese MXN ccomo el código de moneda para pesos mexicanos.

Solicitud de listado de métodos de pago por país

Solicitud de listado de métodos de pago por país

    • Solicitud

      • // Request URL: GET https://sandboxapi.rapyd.net/v1/payment_methods/country?country=MX&currency=MXN
        
        // Message body absent
    • .NET Core

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string country = "MX";
                        string currency = "MXN";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payment_methods/country?country={country}&currency={currency}");
        
                        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 result = await makeRequest('GET', '/v1/payment_methods/country?country=MX&currency=MXN');
        
            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);
        
        try {
            $object = make_request('get', '/v1/payment_methods/country?country=MX&currency=MXN');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
        
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        country = 'MX'
        currency = 'MXN'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/country?country={country}&currency={currency}')
        pprint(results)
        
Respuesta del listado de métodos de pago por país

Listar métodos de pago por país describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "8065d391-d324-41cb-8b36-a7d97bd0ed6c"
            },
            "data": [{
                    "type": "mx_spei_bank",
                    "name": "SPEI Bank",
                    "category": "bank_transfer",
                    "image": "https://iconslib.rapyd.net/checkout/mx_spei_bank.png",
                    "country": "mx",
                    "payment_flow_type": "bank_transfer",
                    "currencies": [
                        "MXN"
                    ],
                    "status": 1,
                    "is_cancelable": false,
                    "payment_options": [{
                            "name": "customer",
                            "type": "customer",
                            "regex": "",
                            "description": "make sure a customer was created with first_name, last_name, email and address",
                            "is_required": true,
                            "is_updatable": false
                        }, {
                            "name": "ewallet",
                            "type": "string",
                            "regex": "",
                            "description": "make sure to pass an ewallet",
                            "is_required": false,
                            "is_updatable": false
                        }
                    ],
                    "is_expirable": false,
                    "is_online": false,
                    "minimum_expiration_seconds": null,
                    "maximum_expiration_seconds": null
                }
            ]
        }
           
        

La sección datos de esta respuesta muestra que mx_spei_bank es un método de pago aceptado para transferencias bancarias.

Nota

Una respuesta completa de la API generalmente enumera muchos métodos de pago.

Determine los campos que el cliente debe completar para el método de pago, utilizando Obtener campos obligatorios del método de pago con el siguiente parámetro:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

tipo

Ingrese mx_spei_bank como el tipo de método de pago.

Solicitud para obtener los campos obligatorios del método de pago

Solicitud para obtener el conjunto de campos obligatorios para un pago mx_spei_bank.

    • Solicitud

      • // Request URL: GET https://sandboxapi.rapyd.net/v1/payment_methods/mx_spei_bank/required_fields
        
        // Message body absent
    • .NET Core

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string type = "mx_spei_bank";
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("GET", $"/v1/payment_methods/{type}/required_fields");
        
                        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 result = await makeRequest('GET', '/v1/payment_methods/mx_spei_bank/required_fields');
        
            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);
        
        try {
            $object = make_request('get', '/v1/payment_methods/mx_spei_bank/required_fields');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_method = 'mx_spei_bank'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/{payment_method}/required_fields')
        pprint(results)
        
        
Respuesta de los campos obligatorios del método de pago

Obtener campos obligatorios del método de pago describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "19ea2c3f-7e09-4834-bd9f-3415109631ab"
            },
            "data": {
                "type": "mx_spei_bank",
                "fields": [
                    {
                        "name": "amount",
                        "type": "number",
                        "regex": "[0-9]*.\\\\\\\\.[0-9]{2}",
                        "description": "Must have two decimal places.",
                        "is_required": false,
                        "is_updatable": false
                    },
                    {
                        "name": "description",
                        "type": "string",
                        "regex": "[a-zA-z]{0,49}",
                        "description": "Description of the payment transaction",
                        "is_required": false,
                        "is_updatable": false
                    },
                    {
                        "name": "expiration",
                        "type": "number",
                        "regex": "",
                        "description": "End of the time allowed for customer to make this payment, in Unix time.",
                        "is_required": false,
                        "is_updatable": false
                    },
                    {
                        "name": "metadata",
                        "type": "object",
                        "regex": "",
                        "description": "A JSON object defined by the Rapyd partner.",
                        "is_required": false,
                        "is_updatable": false
                    }
                ],
                "payment_method_options": [],
                "payment_options": [
                    {
                        "name": "customer",
                        "type": "customer",
                        "regex": "",
                        "description": "make sure a customer was created with first_name, last_name, email and address",
                        "is_required": true,
                        "is_updatable": false
                    },
                    {
                        "name": "ewallet",
                        "type": "string",
                        "regex": "",
                        "description": "make sure to pass an ewallet",
                        "is_required": false,
                        "is_updatable": false
                    }
                ],
                "minimum_expiration_seconds": null,
                "maximum_expiration_seconds": null
            }
        }
           
        

Cuando su cliente realiza el checkout en su sitio web, utilice Crea un pago con los siguientes parámetros para que Rapyd procese el pago por transferencia bancaria del cliente:

Descripción de los parámetros del cuerpo

Parámetro corporal

Descripción

monto

Ingrese 10.000 como el monto del pago.

moneda

Ingrese MXN como el código de moneda para pesos mexicanos.

método_pago

Ingrese un objeto con el siguiente campo: escriba - mx_spei_bank.

Ingrese un objeto con el siguiente campo:

Solicite a Rapyd que procese el pago de Jane por 10,000 MXN (pesos mexicanos) como una transferencia bancaria, como se muestra en la solicitud a continuación:

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body: 
        {
            "amount": 100000,
            "currency": "MXN",
            "payment_method": {
                "type": "mx_spei_bank"
            }
        }/ Req
        
        // Message body absent
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 100,
                            currency = "MXN",
                            payment_method = new
                            {
                                type = "mx_spei_bank",
                            }
                        };
        
                        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);
                    }
                }
            }
        }
        
    • JavaScript

      • const makeRequest = require('<path-to-your-utility-file>/utilities').makeRequest;
        
        async function main() {
          try {
            const body = {
              amount: 100,
              currency: 'MXN',
              payment_method: {
                type: 'mx_spei_bank'
              }
            };
            const result = await makeRequest('POST', '/v1/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 = [
            "amount" => "100",
            "currency" => "MXN",
            "payment_method" => [
                "type" => "mx_spei_bank"
            ]
        ];
        
        try {
            $object = make_request('post', '/v1/payments', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
        
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
            "amount": 100,
            "currency": "MXN",
            "payment_method": {
                "type": "mx_spei_bank"
            }
        }
        
        create_payment_response = make_request(method='post',
                                               path='/v1/payments',
                                               body=payment_body)
        pprint(create_payment_response)
        
        
Respuesta de creación de pago

La respuesta se genera a continuación.

Consulte Crear pago para ver la descripción de los campos incluidos en la respuesta.

CLABE

Desde el 1 de junio de 2004, México utiliza CLABE para la numeración de cuentas bancarias. Este estándar es obligatorio para enviar y recibir transferencias electrónicas interbancarias nacionales.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "0993fb79-2c41-4b41-998b-5101189db34f"
            },
            "data": {
                "id": "payment_d4fbfe943226bdd14ff35bf3f5d39107",
                "amount": 0,
                "original_amount": 100,
                "is_partial": false,
                "currency_code": "MXN",
                "country_code": "mx",
                "status": "ACT",
        
        //      ...      
              
                "customer_token": "cus_b4d4d442f32ae24ed9616753573ea755",
                "payment_method": "other_52f165b04eb609f40559f612ed683245",
        
        //      ...      
              
                "created_at": 1594033690,
        
        //      ...      
              
                "visual_codes": {
                    "payCode": "888455799438564343"
                },
                "textual_codes": {},
                "instructions": [
                    {
                        "name": "instructions",
                        "steps": [
                            {
                                "step1": "Direct the end-user to make payment to the CLABE provided."
                            }
                        ]
                    }
                ],
                "ewallet_id": "ewallet_903e0e470af2d76a45dab68f62cd23b5",
                "ewallets": [
                    {
                        "ewallet_id": "ewallet_903e0e470af2d76a45dab68f62cd23b5",
                        "amount": 10000,
                        "percent": 100,
                        "refunded_amount": 0
                    }
                ],
                "payment_method_options": {},
                "payment_method_type": "mx_spei_bank",
                "payment_method_type_category": "bank_transfer",
        
        //      ...      
              
            }
        }
           
        

La sección datos de esta respuesta muestra lo siguiente:

  • El id del pago es payment_d4fbfe943226bdd14ff35bf3f5d39107.

Nota

Cuando ejecute este flujo en su propio sandbox, obtendrá un ID diferente, el cual necesitará en un paso posterior.

  • El monto_original es 100.000.

  • El código_de_moneda es MXN (pesos mexicanos).

  • El estado es ACT.

Finalización del pago

Esto significa que el proceso de pago está activo y en espera de que se complete el pago.La respuesta incluye instrucciones para que el cliente complete el pago.

Su sitio web proporcionará estas instrucciones al cliente.

Después de que el cliente realice el pago correctamente y Rapyd sea notificado de que los fondos fueron recibidos, Rapyd le envía un webhook con los detalles de la transacción.

Simulación de una transferencia bancaria

El sandbox no simula directamente una transferencia bancaria. Puede simular esta acción mediante el procedimiento descrito en Completar pago. Para ello, necesitará el ID del pago que generó en su sandbox.

Configure su sistema para recibir webhooks utilizando el procedimiento descrito en Definición de un endpoint de webhook.

Vamos a echar un vistazo a Webhook: pago completado.

    • Webhook

      • {
            "id": "wh_7f18c2b90892652fe7ff2cb7d0537732",
            "type": "PAYMENT_COMPLETED",
            "data": {
                "id": "payment_d4fbfe943226bdd14ff35bf3f5d39107",
                "fee": 0,
                "paid": true,
                "order": null,
                "amount": 10000,
                "status": "CLO",
        
        //      ...      
              
                "captured": true,
        
        //      ...      
              
                "created_at": "1551173291",
        
        //      ...      
              
                "instructions": [
                    {
                        "name": "instructions",
                        "steps": [
                            {
                                "step1": "Direct the end-user to make payment to the CLABE provided."
                            }
                        ]
                    }
                ],
        
        //      ...      
              
                "currency_code": "MXN",
        
        //      ...      
            
                "customer_token": "cus_b4d4d442f32ae24ed9616753573ea755",
                "payment_method": "other_52f165b04eb609f40559f612ed683245",
        
        //      ...      
              
                "original_amount": 10000,
        
        //      ...      
           
                "payment_method_type_category": "bank_transfer"
            },
        
        //      ...      
               
            "status": "CLO",
            "created_at": 1594033690
        }
           
        

La sección datos del webhook contiene el mismo tipo de información que la respuesta de la solicitud Crear pago, excepto que el status ahora aparece como CLO (cerrado). Esto indica que el pago se ha completado.

En este punto, puede mostrar un estado de éxito en pantalla para informar al cliente que su compra se realizó correctamente y que puede proceder a recoger los artículos adquiridos.