Skip to main content

Documentación

Pago en dos pasos

Autoriza una tarjeta y captura fondos una vez que se complete el pedido.

Es posible que prefieras obtener una autorización de tarjeta mientras se ensambla o procesa el pedido del cliente en tu sitio web. El pago en dos pasos primero autoriza la tarjeta y, cuando se envía el pedido, le pides a capturar el pago.

Certificación PCI

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

Puedes encontrar los métodos de pago específicos que aceptarás y los campos obligatorios correspondientes que los clientes deben rellenar en la sección Cómo funciona.

customer-purchase-goods.jpg
  1. Al usar su sitio web o aplicación, un cliente agrega muebles al carrito de compras y realiza el pago.

  2. Tu sitio web muestra los métodos de pago disponibles.

  3. El cliente selecciona «tarjeta».

  4. Su sitio web solicita los detalles de la tarjeta.

  5. El cliente proporciona los detalles y hace clic Pague ahora.

authorize-payment.jpg
  1. El back-end de tu sitio web solicita a Rapyd la autorización de la tarjeta.

  2. Rapyd procesa la solicitud de autorización y devuelve una confirmación y un identificador de pago.

  3. Notificas al cliente que la compra se ha realizado correctamente.

capture-payment.jpg
  1. Preparas y empacas tu producto para su entrega.

  2. El back-end de su sitio web le pide a Rapyd que capture el pago, especificando el ID de pago.

  3. Rapyd procesa la solicitud de captura y devuelve el estado actualizado de la transacción.

Los siguientes diagramas de secuencia de mensajes describen cómo se intercambia la información entre Rapyd, el comerciante y la red de tarjetas.

Pago con tarjeta en dos pasos

payment-with-late-capture---success.svg

Decide qué métodos de pago aceptarás para que tu cliente pueda especificar sus métodos de pago en tu página de pago.

Utilice Listar los métodos de pago por país con los siguientes parámetros:

  • EE. UU. y USD se muestran como ejemplo de país y moneda.

Descripción de los parámetros de consulta

Parámetro de consulta

Descripción

país

Entrar NOSOTROS como código de país.

moneda

Entrar USD como código de divisa.

Cuando su cliente paga los muebles, usted solicita una autorización de tarjeta para el pago de 115,65 USD (dólares estadounidenses).

Para eso, utilizarás Crear pago con los siguientes parámetros:

Descripción de los parámetros corporales

Parámetro corporal

Descripción

cantidad

Entrar 115.65 como importe del pago.

moneda

Entrar USD como código de divisa.

capturar

Entrar falso como el valor. Esto le indica a Rapyd que cree solo una autorización de tarjeta. El pago autorizado se capturará más adelante.

monedero electrónico

Introduce la «identificación» de la cartera que recibiste cuando creaste la cartera empresarial de Four Star Furniture en tu sandbox. Para los fines de esta lección de casos de uso, estamos usando ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414, que es el identificador de monedero que hemos creado en nuestra zona de pruebas.

método_pago

Introduzca un objeto 'payment_method' con los siguientes campos:

  • tipo - Introduce el tipo de método de pago que quieres usar para la prueba. Para los fines de esta lección de casos de uso, estamos usando us_debit_visa_card .

  • campos - Introduzca un objeto que contenga todos los campos obligatorios, como se muestra en la respuesta cuando ejecutó Obtener el método de pago: campos obligatorios. Para los fines de esta lección de casos de uso, utilizamos los campos obligatorios para us_debit_visa_card

Le pides a Rapyd que procese el pago de 115,65 USD (dólares estadounidenses) del cliente como autorización de tarjeta.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body: 
        {
                "amount": 115.65,
                "currency": "USD",
                "payment_method": {
                        "type": "us_debit_visa_card",
                        "fields": {
                                "number": "4111111111111111",
                                "expiration_month": "10",
                                "expiration_year": "25",
                                "cvv": "123",
                                "name": "Test User"
                        }
                },
                "ewallet": "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
                "capture": false
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        var requestObj = new
                        {
                            amount = 115.65,
                            capture = false,
                            currency = "USD",
                            ewallet = "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
                            payment_method = new
                            {
                                type = "us_visa_card",
                                fields = new
                                {
                                    number = "4111111111111111",
                                    expiration_month = "10",
                                    expiration_year = "25",
                                    cvv = "123",
                                    name = "John Doe",
                                }
                            },
                        };
        
                        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: 115.65,
              currency: 'USD',
              payment_method: {
                type: 'us_visa_card',
                fields: {
                  number: '4111111111111111',
                  expiration_month: '10',
                  expiration_year: '20',
                  cvv: '123',
                  name: 'John Doe'
                }
              },
              ewallet: 'ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414',
              capture: false
            };
            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" => "115.65",
            "currency" => "USD",
            "ewallet" => "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
            "payment_method" => [
                "type" => "us_visa_card"
            ]
        ];
        
        try {
            $object = make_request('post', '/v1/payments', $body);
            var_dump($object);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
            "amount": 115.65,
            "currency": "USD",
            "payment_method": {
                "type": "us_visa_card",
                "fields": {
                    "number": "4111111111111111",
                    "expiration_month": "10",
                    "expiration_year": "25",
                    "cvv": "123",
                    "name": "John Doe"
                }
            },
            "ewallet": "ewallet_452c8cd682f347b4abee9bbee04eac03",
            "capture": False
        }
        
        create_payment_response = make_request(method='post',
                                               path='/v1/payments',
                                               body=payment_body)
        pprint(create_payment_response)

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "7b0f7ce9-ed39-4eb5-ae1d-4210ad865072"
            },
            "data": {
                "id": "payment_fc109dbe553a223401d86156e3adea8c",
                "amount": 0,
                "original_amount": 115.65,
                "is_partial": false,
                "currency_code": "USD",
                "country_code": "us",
                "status": "ACT",
                "description": "",
                "merchant_reference_id": "",
                "customer_token": "cus_bd1338e2b5980deb6e3eae9eb785fdce",
                "payment_method": "card_164f3fd242091eba09f4b8c1f4a75597",
                "expiration": 0,
                "captured": false,
        
         //     ...         
        
                "paid": false,
                "paid_at": 0,
        
         //     ...         
        
                "ewallet_id": "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
                "ewallets": [
                    {
                        "ewallet_id": "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
                        "amount": 115.65,
                        "percent": 100,
                        "refunded_amount": 0
                    }
                ],
                "payment_method_options": {},
                "payment_method_type": "us_debit_visa_card",
                "payment_method_type_category": "card",
        
         //     ...         
        
            }
        }

El datos la sección de esta respuesta muestra:

  • El pago id es payment_fc109dbe553a223401d86156e3adea8c. Cuando ejecutes este ejemplo en tu propia zona de pruebas, obtendrás un ID diferente, que necesitarás para un paso posterior en este caso práctico

  • cantidad es 0, lo que indica que todavía no se ha recibido ningún dinero.

  • cantidad_original es 115.65

  • código_moneda es USD

  • El estado es ACTUAR (activo). Esto indica que el pago aún no se ha capturado.

  • El customer_token es cus_bd1338e2b5980deb6e3eae9eb785fdceque es un identificador de cliente único únicamente para esta transacción. Como la solicitud no especificaba un cliente existente guardado en el sistema, se trata al cliente como un cliente invitado.

  • El payment_method es un identificador de método de pago único únicamente para esta transacción.

  • capturado es falso porque se trata únicamente de una autorización de tarjeta.

Has preparado y empaquetado tu pedido vendido. Antes de enviarlo, debes capturar el pago con tarjeta que se autorizó anteriormente.

Para eso, utilizarás Capture Payment con los siguientes parámetros:

Descripción de los parámetros de ruta

Parámetro de ruta

Descripción

pago

Introduce el «identificador» de pago que recibiste cuando creaste el pago en tu entorno de pruebas. Para los fines de esta lección de casos de uso, estamos usando payment_fc109dbe553a223401d86156e3adea8c, que es el identificador de pago que hemos creado en nuestra zona de pruebas.

Descripción de los parámetros corporales

Parámetro corporal

Descripción

cantidad

Entrar 115.65 como importe del pago.

Como está capturando la cantidad total que se autorizó anteriormente, el importe el parámetro es opcional.

Le pides a Rapyd que capture todos los pagos de 115,65 USD (dólares estadounidenses) de tu cliente.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments/payment_fc109dbe553a223401d86156e3adea8c/capture
        
        // Message body: 
        {
           "amount": 115.65
        }
    • .NET Core

      • using System;
        using System.Text.Json;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string payment = "payment_9d59d89e3ce3519647f0d22f5d37e23c";
        
                        var requestObj = new
                        {
                            amount = 115.65,
                        };
        
                        string request = JsonSerializer.Serialize(requestObj);
        
                        string result = RapydApiRequestSample.Utilities.MakeRequest("POST", $"/v1/payments/{payment}/capture", 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: 115.65
            };
            const result = await makeRequest(
              'POST',
              '/v1/payments/payment_fc109dbe553a223401d86156e3adea8c/capture',
              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);
        
        try {
            $capturePayment = make_request('post', '/v1/payments/payment_fc109dbe553a223401d86156e3adea8c');
            var_dump($capturePayment);
        } catch (Exception $e) {
            echo "Error: $e";
        }
        ?>
    • Pitón

      • from pprint import pprint
        
        from utilities import make_request
        
        capture_payment_body = {
            "amount": 115.65
        }
        capture_payment_response = make_request(method='post',
                                                path='/v1/payments/payment_fc109dbe553a223401d86156e3adea8c/capture',
                                                body=capture_payment_body)
        
        pprint(capture_payment_response)

Echemos un vistazo a la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "8053816d-3d99-47cd-a216-ccc35e38ccce"
            },
            "data": {
                "id": "payment_fc109dbe553a223401d86156e3adea8c",
                "amount": 115.65,
                "original_amount": 115.65,
                "is_partial": false,
                "currency_code": "USD",
                "country_code": "us",
                "status": "CLO",
                "description": "",
                "merchant_reference_id": "",
                "customer_token": "cus_bd1338e2b5980deb6e3eae9eb785fdce",
                "payment_method": "card_164f3fd242091eba09f4b8c1f4a75597",
                "expiration": 0,
                "captured": true,
        
         //     ...         
        
                "paid": true,
                "paid_at": 1590485097,
        
         //     ...         
        
                "ewallet_id": "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
                "ewallets": [
                    {
                        "ewallet_id": "ewallet_8915a7fdeff7be5b7c1a7fa5f0b81414",
                        "amount": 115.65,
                        "percent": 100,
                        "refunded_amount": 0
                    }
                ],
                "payment_method_options": {},
                "payment_method_type": "us_debit_visa_card",
                "payment_method_type_category": "card",
        
         //     ...         
        
            }
        }

El datos la sección de esta respuesta muestra que el estado ha cambiado a CLO (cerrado) y el cantidad ha cambiado al importe total de la compra.