Skip to main content

Documentación

Pagar con FX

Permita a los clientes pagar en su moneda local.

La función Pago con FX permite a sus clientes realizar transacciones en la moneda que elijan, incluso si esa moneda es diferente de la que admite su método de pago. El proceso de FX es transparente para el cliente.

Puede aceptar un pago con FX desde miles de métodos de pago (tarjeta, transferencia bancaria, eWallet, con diferentes monedas).

Los casos de uso comunes pueden incluir:

  • Usted vende mercancía en su tienda online y acepta varios métodos de pago de clientes internacionales que utilizan una moneda local diferente.

  • Usted es un contratista independiente que acepta pagos de clientes internacionales.

Su empresa con sede en Europa vende productos en su tienda en línea. Un cliente de los Estados Unidos quiere comprarle un producto que cuesta 370 EUR (euros). Sin embargo, el cliente utiliza un método de pago que solo admite USD (dólares estadounidenses).

Rapyd facilita la transición tanto para el comercio como para el cliente a través de la función de pago FX.

Certificación PCI

Solo clientes con la certificación PCI-DSS pueden gestionar la información de identificación personal de las tarjetas. Este método está disponible para los comercios que hayan firmado un acuerdo especial con Rapyd.

Puede aceptar un pago con FX desde miles de métodos de pago (tarjeta, transferencia bancaria, eWallet, con diferentes monedas).

"Cómo funciona" describe cómo encontrar los métodos de pago específicos que aceptará y sus campos obligatorios.

Paso 1: Compra del cliente
fx-pmt.jpg
  1. Un cliente añade un artículo en su sitio web que cuesta 370 EUR (euros) al carrito de compras. El cliente quiere pagar en USD (dólares estadounidenses). El cliente pulsa el botón de pago y llega a la página de pago. El cliente selecciona el método de pago de su elección (tarjeta, transferencia bancaria, eWallet, con diferentes monedas).

  2. Le pide a Rapyd los campos obligatorios del método de pago y se los presenta al cliente.

  3. El cliente llena los detalles requeridos y confirma el pago pulsando Pagar.

Paso 2: Procesar el pago

Nota

Compruebe si la moneda del tipo de método de pago es diferente a la moneda del sitio web.

process-fx-pmt.jpg
  1. El servidor de su sitio web le pide a Rapyd que procese el pago con FX en la moneda del destinatario (EUR).

  2. Rapyd procesa el pago y envía una respuesta al servidor del sitio web.

  3. Su sitio web muestra una página que indica al cliente que la compra se ha realizado correctamente.

Descubra cómo elegir los métodos de pago que aceptará y busque sus campos obligatorios. El cliente debe llenar estos campos para el método de pago.

En su página de pago, permita al cliente elegir un método de pago. Para procesar el pago con FX, debe:

  1. Decidir qué métodos de pago aceptará.

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

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

país

Introduzca US como abreviatura del país.

moneda

Introduzca USD como código de la moneda.

Solicitud de la lista de métodos de pago por país

Solicite la lista de todos los métodos de pago disponibles en EE. UU. que admiten USD.

    • Solicitud

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

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string country = "US";
                        string currency = "USD";
        
                        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=US&currency=USD');
        
            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=US&currency=USD');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        country = 'US'
        currency = 'USD'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/country?country={country}&currency={currency}')
        pprint(results)
Respuesta para la Lista de métodos de pago por país
    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "2ae2817f-a9ff-464c-a5e9-e6dfb04d4ea3"
            },
            "data": [
        
                  // ...
                  
                {
                    "type": "us_debit_mastercard_card",
                    "name": "Mastercard",
                    "category": "card",
                    "image": "https://iconslib.rapyd.net/checkout/us_mastercard_card.png",
                    "country": "US",
                    "payment_flow_type": "card",
                    "currencies": [
                        "USD"
                    ],
                    "status": 1,
                    "is_cancelable": false,
                    "payment_options": [
                        {
                            "name": "customer",
                            "type": "customer",
                            "regex": "",
                            "description": "make sure a customer was created with first_name, last_name and email",
                            "is_required": true,
                            "is_updatable": false
                        }
                    ],
                    "is_expirable": false,
                    "is_online": false,
                    "minimum_expiration_seconds": null,
                    "maximum_expiration_seconds": null
                },
        
                  // ...        
            ]
        }

La sección data de esta respuesta muestra que Mastercard es un método de pago aceptable.

Debe averiguar qué campos debe rellenar el cliente para el método de pago.

Usará los Campos obligatorios para obtener el método de pago con el siguiente parámetro:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

type

Introduzca us_debit_mastercard_card como tipo de método de pago.

Obtener la solicitud de los campos obligatorios del método de pago

Solicite el conjunto de campos obligatorios:

    • Solicitud

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

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string type = "us_mastercard_card";
        
                        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/us_mastercard_card/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/us_mastercard_card/required_fields');
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Python

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

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "25bdf361-e575-4baf-a180-6cd4602201e8"
            },
            "data": {
                "type": "us_debit_mastercard_card",
                "fields": [
                    {
                        "name": "number",
                        "type": "string",
                        "regex": "",
                        "is_required": true,
                        "instructions": "card number"
                    },
                    {
                        "name": "expiration_month",
                        "type": "string",
                        "regex": "",
                        "is_required": true,
                        "instructions": "expiration month as string, 01-12"
                    },
                    {
                        "name": "expiration_year",
                        "type": "string",
                        "regex": "",
                        "is_required": true,
                        "instructions": "expiration year in to digits as string, 18-99"
                    },
                    {
                        "name": "cvv",
                        "type": "string",
                        "regex": "",
                        "is_required": true,
                        "instructions": "card cvv"
                    },
                    {
                        "name": "name",
                        "type": "string",
                        "regex": "",
                        "is_required": false,
                        "instructions": "card holder name"
                    },
                    {
                        "name": "address",
                        "type": "Address",
                        "regex": "",
                        "is_required": false,
                        "instructions": "card billing address. see Address object for more details"
                    }
                ],
                  
         // ...
                  
                "minimum_expiration_seconds": null,
                "maximum_expiration_seconds": null
            }
        }

La respuesta muestra que los campos obligatorios para us_debit_mastercard_card son:

  • number: El número de la tarjeta de crédito.

  • expiration_month: El mes de caducidad de la tarjeta de crédito.

  • expiration_year: El año de caducidad de la tarjeta de crédito.

  • cvv: El número de verificación de la tarjeta.

Nota: La respuesta muestra que los campos nombre y dirección NO son obligatorios.

Llamada a Obtener tasa de FX

Puede comprobar el tipo de cambio de moneda actual con Obtener tasa de FX.

Cuando el cliente realiza el pago en su sitio web, pídale a Rapyd que procese el pago con la tarjeta del cliente y que convierta la moneda de USD a EUR.

Use Crear pago con los siguientes parámetros:

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

amount

Introduzca 370 como la cantidad de EUR a pagar.

currency

Introduzca EUR como la moneda que recibirá el vendedor.

expiration

Introduzca la fecha de caducidad de la transacción, en tiempo universal.

requested_currency

Introduzca USD como la moneda admitida por el método de pago.

payment_method

Introduzca un objeto con los siguientes campos:

  • type - us_debit_mastercard

  • card fields: (objeto)

    • número - 4 1111111 como número de tarjeta

    • .expiration_month - 10

    • expiration_year - 20

    • cvv - 123

Crear solicitud de pago

Le pide a Rapyd que procese el pago de 370 EUR (euros) del cliente y que le cobre el pago de inmediato.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body:
        {
           "amount": 370,
           "currency": "EUR",
           "expiration": 1591173527,
           "fixed_side": "buy",
           "payment_method": {
               "type": "us_debit_mastercard_card",
               "fields": {
                   "number": "4111111111111111",
                   "expiration_month": "10",
                   "expiration_year": "20",
                   "cvv": "123"
               }
           },
           "requested_currency": "USD"
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 370,
                            currency = "EUR",
                            expiration = 1591173527,
                            fixed_side = "buy",
                            payment_method = new
                            {
                                type = "us_mastercard_card",
                                fields = new
                                {
                                    number = "4111111111111111",
                                    expiration_month = "10",
                                    expiration_year = "20",
                                    cvv = "123",
                                }
                            },
                            requested_currency = "USD"
                        };
        
                        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: 370,
              currency: 'EUR',
              requested_currency: 'USD',
              fixed_side: 'buy',
              payment_method: {
                type: 'us_visa_card',
                fields: {
                  number: '4111111111111111',
                  expiration_month: '10',
                  expiration_year: '20',
                  cvv: '123'
                }
              },
              expiration: 1601173527
            };
            const result = await makeRequest('POST', '/v1/payments', body);
        
            console.log(result);
          } catch (error) {
            console.error('Error completing request', error);
          }
        }
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
            "amount": 370,
            "currency": "EUR",
            "expiration": 1591173527,
            "fixed_side": "buy",
            "payment_method": {
                "type": "us_mastercard_card",
                "fields": {
                    "number": "4111111111111111",
                    "expiration_month": "10",
                    "expiration_year": "20",
                    "cvv": "123"
                }
            },
            "requested_currency": "USD"
        }
        
        create_payment_response = make_request(method='post',
                                               path='/v1/payments',
                                               body=payment_body)
        pprint(create_payment_response)
Respuesta de pago con monedas extranjeras
    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "4b257ecb-2775-4a3d-a829-978ead4d6dff"
            },
            "data": {
                "id": "payment_02e2ce0763a6473ef7788109ae5d0479",
                "amount": 426.13,
                "original_amount": 426.13,
                "is_partial": false,
                "currency_code": "USD",
                "country_code": "US",
                "status": "CLO",
                  
         // ...
                  
                "paid": true,
                "paid_at": 1583308522,
                  
         // ...
                  
                "payment_method_type": "us_debit_mastercard_card",
                "payment_method_type_category": "card",
                "fx_rate": "1.151688",
                "merchant_requested_currency": "EUR",
                "merchant_requested_amount": 370,
                "fixed_side": "buy",
                "payment_fees": null,
                "invoice": "",
                "escrow": null,
                "group_payment": ""
            }
        }

La sección datos de esta respuesta muestra:

  • El amount es 426,13, que es la cantidad equivalente de USD requeridos para el pago de 370 EUR.

  • El merchant_requested_amount es 370,00, que es la cantidad de EUR que se pagan.

  • El fx_rate es el tipo de cambio de EUR a USD de 1,151688.

  • El campo paid_at indica la hora de finalización de la operación de pago, en Tiempo Unix.