Pago en dos pasos
Autorice una tarjeta y capture fondos una vez que se complete el pedido.
Es posible que prefiera obtener una autorización de tarjeta mientras se ensambla o procesa el pedido del cliente en su sitio web. El pago en dos pasos primero autoriza la tarjeta y, cuando se envíe el pedido, pídale a Rapyd capturar el pago.
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 encontrar los métodos de pago específicos que aceptará y los campos obligatorios correspondientes que los clientes deben llenar en la sección Cómo funciona.

Al usar su sitio web o aplicación, un cliente agrega muebles al carrito de compras y realiza el pago.
Su página web muestra los métodos de pago disponibles.
El cliente selecciona «tarjeta».
Su página web solicita los detalles de la tarjeta.
El cliente proporciona los detalles y hace clic en Pagar ahora.

El back-end de su página web solicita a Rapyd la autorización de la tarjeta.
Rapyd procesa la solicitud de autorización, devuelve una confirmación y un identificador de pago.
Usted notifica al cliente que la compra se ha realizado correctamente.

Prepara y empaca su producto para su entrega.
El back-end de su página web le pide a Rapyd que compruebe el pago, especificando el ID de pago.
Rapyd procesa la solicitud de comprobación 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 comercio y la red de tarjetas.
Pago con tarjeta en dos pasos
Decida qué métodos de pago aceptará para que su cliente pueda especificar sus métodos de pago en su 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 |
|---|---|
country | Introduzca US como código del país. |
currency | Introduzca USD como código de la moneda. |
Determine los campos obligatorios para el método de pago tal y como se describe en Campos obligatorios para obtener el método de pago.
Cree una billetera empresarial. Ejecute Crear billetera. Use el ID que obtiene en la respuesta. Para obtener más información, consulte Crear una billetera de Rapyd.
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á Crear pago con los siguientes parámetros:
Descripción de los parámetros de cuerpo
Parámetro de cuerpo | Descripción |
|---|---|
amount | Introduzca 115.65 como el monto de pago. |
currency | Introduzca USD como código de moneda. |
capture | Introduzca falso como el valor. Esto le indica a Rapyd que cree solo una autorización de tarjeta. El pago autorizado se comprobará más adelante. |
ewallet | Introduzca el ID de la billetera que recibió cuando creó la billetera empresarial de Four Star Furniture en su 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 sandbox. |
payment_method | Introduzca el objeto 'payment_method' con los siguientes campos:
|
Pídale 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"; } ?>
Python
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)
Veamos 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", // ... } }
La sección data de esta respuesta muestra:
El pago
ides payment_fc109dbe553a223401d86156e3adea8c. Cuando ejecute este ejemplo en su propia sandbox, obtendrá un ID diferente, que necesitará para un paso posterior en este caso práctico.amountes 0, lo que indica que todavía no se ha recibido ningún dinero.original_amountes 115.65currency_codees USDEl
statuses ACT (activo). Esto indica que el pago aún no se ha comprobado.El
customer_tokenes cus_bd1338e2b5980deb6e3eae9eb785fdceque es un identificador de cliente único solo 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_methodes un ID de método de pago único solo para esta transacción.capturedes falso porque se trata únicamente de una autorización de tarjeta.
Ha preparado y empaquetado su pedido vendido. Antes de enviarlo, debe comprobar el pago con tarjeta que se autorizó anteriormente.
Para eso, use Comprobar pago con los siguientes parámetros:
Descripción de los parámetros de ruta
Parámetro de ruta | Descripción |
|---|---|
payment | Introduzca el ‘ID’ de pago que recibió cuando creó el pago en su sandbox. 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 sandbox. |
Descripción de los parámetros de cuerpo
Parámetro de cuerpo | Descripción |
|---|---|
amount | Introduzca 115.65 como monto del pago. |
Como usted está comprobando la cantidad total que se autorizó anteriormente, el parámetro amount es opcional.
Pídale a Rapyd que compruebe todos los pagos de 115,65 USD (dólares estadounidenses) de su 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"; } ?>
Python
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)
Veamos 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", // ... } }
La sección data de esta respuesta muestra que el status ha cambiado a CLO (cerrado) y el amount ha cambiado al monto total de la compra.