Skip to main content

Documentación

Tarjeta almacenada

Almacene la información de pago del cliente para compras recurrentes y por suscripción.

Optimice el proceso de tarjeta almacenada y reduzca su carga de cumplimiento PCI generando un token seguro para los clientes que opten por guardar su información de pago con su negocio.

Un caso de uso típico puede seguir estos pasos:

  1. Mientras navega en su sitio web, el cliente selecciona guardar su tarjeta para uso futuro.

  2. Rapyd almacena los datos de la tarjeta y vincula la tarjeta al identificador personal único de Rapyd del cliente.

  3. El cliente compra un artículo por 9.99 USD (dólares estadounidenses) utilizando la tarjeta almacenada.

  4. Un mes después, vuelven a comprar otro artículo por 9,99 USD (dólares estadounidenses).

  5. Su sitio web muestra la tarjeta almacenada como el método de pago seleccionado.

  6. El cliente simplemente hace clic en Pagar ahora.

Múltiples métodos de pago

Este caso de uso describe a un cliente que almacena un único método de pago con Rapyd. Sin embargo, los clientes pueden almacenar múltiples métodos de pago si así lo desean.

  1. Seleccione la tarjeta que se utilizará para el pago.

  2. Haga clic en el ícono de lápiz para editar los datos de la tarjeta.

    6480836056ec8.png
  3. Opcional: Puede actualizar los datos de la tarjeta. Haga clic en Actualizar para guardar los cambios.

  4. Haga clic en Realizar su pedido.

    64808363331dc.png
  5. Redirección a la página de Pago exitoso.

  6. Haga clic en Finalizar.

    64808365aaab4.png

La forma de encontrar los métodos específicos de pago con tarjeta que aceptará y los campos requeridos correspondientes que los clientes deben completar se describe en Cómo funciona.

store-customer-card.jpg
  1. Un cliente en su sitio web agrega un artículo al carrito de compras y presiona el botón de checkout. El cliente completa la información de la tarjeta y selecciona Guardar los datos de la tarjeta para uso futuro. Luego, el cliente hace clic en Pagar ahora.

  2. Su sitio web solicita a Rapyd que cree un ID de cliente.

  3. Luego, su sitio web solicita a Rapyd que cree un Auth por $0 para validar la tarjeta utilizando el ID de cliente.

  4. Rapyd envía a su sitio web el ID de cliente para utilizar la tarjeta almacenada como el método de pago predeterminado del cliente.

Nota

Para obtener más información sobre cómo guardar la información de la tarjeta del cliente mediante una página alojada, consulte Guarde los detalles de la tarjeta con Rapyd Checkout.

process-first-time.jpg
  1. El backend del sitio web solicita a Rapyd que procese el pago del cliente, especificando el monto, la moneda y el ID de cliente.

  2. Rapyd procesa la transacción utilizando la tarjeta almacenada vinculada al ID de cliente.Cuando el proceso se completa correctamente, Rapyd notifica al backend del sitio web.

  3. Su sitio web muestra una página que informa al cliente que la compra se completó correctamente.

subsequent-purchase.jpg
  1. El cliente regresa un mes después, agrega un nuevo eBook al carrito de compras y realiza el checkout.

  2. Con base en la información intercambiada con Rapyd, su sitio web muestra la tarjeta almacenada como el método de pago seleccionado.

  3. El cliente hace clic en Pagar ahora .

process-next-payment.jpg
  1. El backend del sitio web solicita a Rapyd que procese el pago del cliente, especificando el monto, la moneda y el ID de cliente.

  2. Rapyd procesa la transacción utilizando la tarjeta almacenada vinculada al ID de cliente.Cuando el proceso se completa correctamente, Rapyd notifica al backend del sitio web

  3. Su sitio web muestra al cliente una página de “compra exitosa”.

Decida qué métodos de pago con tarjeta aceptará, para que el cliente pueda especificar sus métodos de pago en la página de pago. Utilice Listar métodos de pago por país con los siguientes parámetros:

  • US y USD se utilizan como ejemplo de país y moneda.

Descripción de los parámetros de consulta

Parámetro de consulta

Descripción

país

Ingrese US como el código del país.

moneda

Ingrese USD como el código de la moneda.

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

Cree una solicitud para obtener una lista de todos los métodos de pago disponibles en US.

    • 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 de listado de métodos de pago por país

El Tipo de método de pago describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "cfa35a73-aa0b-4e7e-839c-4c3b6149edd7"
            },
            "data": [{
                    "type": "us_debit_visa_card",
                    "name": "Visa",
                    "category": "card",
                    "image": "https://iconslib.rapyd.net/checkout/us_visa_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 datos de la respuesta muestra que una tarjeta Visa es una opción de pago aceptable.

Nota

Una respuesta real generalmente enumera muchos métodos de pago.

Debe identificar los campos que el cliente debe completar para el método de pago.

Para identificar estos campos, utilizará Obtener campos requeridos 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 us_debit_visa_card como el tipo de método de pago.

Solicitud de obtención de los campos requeridos del método de pago

Cree una solicitud para obtener el conjunto de campos requeridos para una tarjeta Visa.

    • Solicitud

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

      • using System;
        
        namespace RapydApiRequestSample
        {
            class Program
            {
                static void Main(string[] args)
                {
                    try
                    {
                        string type = "us_visa_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_visa_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_visa_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_visa_card'
        results = make_request(method='get',
                               path=f'/v1/payment_methods/{payment_method}/required_fields')
        pprint(results)rom 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 de obtención de los campos requeridos del método de pago

El Tipo de método de pago describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            “status”: {
                “error_code”: “”,
                “status”: “SUCCESS”,
                “message”: “”,
                “response_code”: “”,
                “operation_id”: “598b1a00-e302-4037-b0ef-aac895974e9e”
            },
            “data”: {
                “type”: “us_visa_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”: false,
                        “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”
                    }
                ],
                “payment_method_options”: [
                    {
                        “name”: “3d_required”,
                        “type”: “string”,
                        “regex”: “”,
                        “description”: “”,
                        “is_required”: false,
                        “is_updatable”: 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
                    }
                ],
                “minimum_expiration_seconds”: null,
                “maximum_expiration_seconds”: null
            }
        }
           
        

La respuesta muestra que, para una tarjeta Visa de EE. UU., es obligatorio proporcionar los siguientes campos:

  • número

  • mes_expiración

  • año_expiración

  • nombre

  • cvv

Asegúrese de que el cliente complete todos estos campos.

Cuando su cliente guarda los datos de su tarjeta, Rapyd crea un ID de cliente único, almacena la tarjeta y la vincula a dicho ID. Utilice este ID siempre que necesite que Rapyd gestione una solicitud para este cliente. El requisito mínimo para crear el ID es el nombre del cliente. Envíe a Rapyd una solicitud para crear el ID del cliente y almacenar la tarjeta.

Para ello, utilizará Crear cliente con los siguientes parámetros:

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

nombre

Ingrese Jane Doe como el nombre del cliente.

método_pago

Ingrese un objeto con los siguientes campos:

  • tipo - us_debit_visa_card

  • campos - Ingrese un objeto con los siguientes campos:

    • número - 4111111111111111

    • mes_expiración - 10

    • año_expiración - 20

    • cvv - 123

    • nombre - Jane Doe

Solicitud de creación de cliente

Usted solicita a Rapyd que cree un ID de cliente y un método de pago para su cliente.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/customers
        
        // Message body: 
        {
            "name": "Jane Doe",
            "payment_method": {
                "type": "us_debit_visa_card",
                "fields": {
                    "number": "4111111111111111",
                    "expiration_month": "10",
                    "expiration_year": "20",
                    "cvv": "123",
                    "name": "Jane Doe"
                }
            }
        }
        
    • Python

      • from pprint import pprint
        
        from utilities import make_request
                                                    
        customer_body = {
            "name": "Jane Doe",
            "payment_method": {
                "type": "us_visa_card",
                "fields": {
                    "number": "4111111111111111",
                    "expiration_month": "10",
                    "expiration_year": "20",
                    "cvv": "123",
                    "name": "Jane Doe"
                }
            }
        }
                                                    
        create_customer_response = make_request(method='post',
                                                path='/v1/customers',
                                                body=customer_body)
        pprint(create_customer_response)
Respuesta de creación de cliente

El Objeto de cliente describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "92b400c5-6c1d-484c-b327-bb7015897f89"
            },
            "data": {
                "id": "cus_8ded332b08966abf51bdc28c106acb7c",
        
                //      ...
        
                "name": "Jane Doe",
                "default_payment_method": "card_dbc9f6743ec2ab00486843edfdca42d9",
        
                //      ...
        
                "payment_methods": {
                    "data": [
                        {
                            "id": "card_dbc9f6743ec2ab00486843edfdca42d9",
                            "type": "us_debit_visa_card",
                            "category": "card",
                            "metadata": null,
                            "image": "https://iconslib.rapyd.net/checkout/us_visa_card.png",
                            "name": "Jane Doe",
                            "last4": "1111",
                            "cvv_check": "unchecked",
        
                            //      ...
        
                            "expiration_year": "20",
                            "expiration_month": "10",
        
                            //      ...
        
                        }
                    ],
        
                    //      ...
        
                    "url": "/v1/customers/cus_8ded332b08966abf51bdc28c106acb7c/payment_methods"
                },
        
                //      ...
        
                "created_at": 1581246256,
        
                //      ...
        
            }
        }
           
        

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

  • Rapyd crea un ID de cliente para su cliente. El ID del cliente comienza con cus_. El valor del Id del cliente en el código de ejemplo anterior es cus_8ded332b08966abf51bdc28c106acb7c. Cuando ejecute este ejemplo en su propio sandbox, obtendrá un ID de cliente diferente.

  • Rapyd también crea un ID de tarjeta para su cliente. El ID de la tarjeta comienza con tarjeta_. El Id de la tarjeta en el código de ejemplo anterior es card_dbc9f6743ec2ab00486843edfdca42d9. Esta tarjeta queda almacenada como el método_de_pago_predeterminado.

Cuando su cliente paga con su tarjeta almacenada, usted envía el pago a Rapyd para su procesamiento.

Para enviar el pago del cliente, utilice Crear pago con los siguientes parámetros:

Descripción de los parámetros del cuerpo

Parámetro del cuerpo

Descripción

monto

Ingrese 9.99 como el monto del pago.

moneda

Ingrese USD como el código de la moneda.

cliente

Ingrese el 'customer_id' que recibió cuando creó el cliente en su sandbox.Para los fines de este caso de uso, se utiliza cus_8ded332b08966abf51bdc28c106acb7c, que es el ID de cliente creado en el sandbox.

Solicitud de creación de pago

Solicite a Rapyd que procese el pago de su cliente por 9.99 USD (dólares estadounidenses), tal como se muestra en el código de ejemplo a continuación.

    • Solicitud

      • // Request URL: POST https://sandboxapi.rapyd.net/v1/payments
        
        // Message body:
        {
        	"amount": 9.99,
        	"currency": "USD",
        	"customer": "cus_8ded332b08966abf51bdc28c106acb7c"
        }
    • Python

      • from pprint import pprint
        
        from utilities import make_request
        
        payment_body = {
            "amount": 9.99,
            "currency": "USD",
            "customer": "cus_8ded332b08966abf51bdc28c106acb7c"
        }
        
        create_payment_response = make_request(method='post',
                                               path='/v1/payments',
                                               body=payment_body)
        pprint(create_payment_response)
        
Respuesta de creación de pago

El Objeto de pago describe los campos incluidos en la respuesta.

    • Respuesta

      • {
            "status": {
                "error_code": "",
                "status": "SUCCESS",
                "message": "",
                "response_code": "",
                "operation_id": "4e44e8c1-ee8c-411a-a2de-a2a2ae0122d3"
            },
            "data": {
                "id": "payment_7b4cb9456f1ff73132831fc2e35d88be",
                "amount": 9.99,
                "original_amount": 9.99,
                "is_partial": false,
                "currency_code": "USD",
                "country_code": "US",
                "status": "CLO",
        
                //      ...
        
                "customer_token": "cus_8ded332b08966abf51bdc28c106acb7c",
                "payment_method": "card_dbc9f6743ec2ab00486843edfdca42d9",
                "expiration": 0,
                "captured": true,
        
                //      ...
        
                "created_at": 1581248060,
        
                //      ...
        
                "paid": true,
                "paid_at": 1581248060,
        
                //      ...
        
                "payment_method_type": "us_debit_visa_card",
                "payment_method_type_category": "card",
        
                //      ...
        
            }
        }
           
        

La respuesta (en el código de ejemplo anterior) muestra que Rapyd procesó correctamente el pago según el monto, la moneda y el ID del cliente. Se pagó un monto de 9.99 USD (dólares estadounidenses) desde la tarjeta del cliente.

Siempre recibirá una respuesta similar. La única diferencia será la fecha, el ID del pago y el monto, en caso de que no sea idéntico.

Puede verificar que el pago fue exitoso, ya que el estado (Dentro de datos) es CLO (cerrado). El Objeto de pago enumera los valores posibles para el estado.

En este punto, puede informar al cliente que la compra se ha completado.

¿Busca información técnica más detallada?

¿Desea ver los métodos y objetos de la API de Rapyd que utilizará? Merchant API Reference para obtener más detalles técnicos.