Intención de Pago
Las intenciones de pago son responsables de:
- Recolectar la información del checkout.
- Guardar y actualizar el estado de todo el proceso de pago.
Funcionan como la entidad central que representa una transacción desde su creación hasta su resolución final.
Estados
Una intención de pago puede encontrarse en alguno de los siguientes estados:
CREATED
El checkout fue inicializado, pero el usuario todavía no eligió el monto ni el medio de pago.
WAITING FOR PAYMENT
El usuario ya seleccionó token, red, monto y medio de pago y se encuentra esperando que envíe los fondos a la dirección proporcionada.
PROCESSING
El pago está siendo procesado.
COMPLETED
El pago se ejecutó correctamente.
ERROR
Ocurrió un error al procesar el pago.
TIMEOUT
El usuario demoró más de 15 minutos en enviar los fondos, por lo que la transacción expiró.
LOW_BALANCE
El saldo es insuficiente para completar el pago.
REFUNDED
El pago fue reembolsado.
API
En caso de que el endpoint requiera autenticación, esta debe enviarse mediante los siguientes headers:
{
"apiKey": "123xxx456",
"clientId": "123xxx456"
}
Obtener una intención de pago
[GET] /payment_intent/:clientSecret
Obtiene la información de una intención de pago específica.
Respuesta
{
"_id": "65a8609a11ab863177a0de6f",
"userId": "659xxx7730",
"walletId": "65axxxe6d",
"clientSecret": "Dx2xxxvH5",
"status": "COMPLETED",
"apiKeyType": "PRODUCTION",
"receiverId": "identificador-de-cliente",
"walletAddress": "0x123...abc",
"metadata": null,
"created_at": "2024-01-01T23:19:54.258Z",
"updated_at": "2024-01-01T23:20:58.934Z",
"amount": "1",
"merchantData": {
"logo": "https://example.com/logo.png",
"name": "Tienda de Ejemplo",
"description": "Compra el mejor producto del mundo"
}
}
Nota: El
clientSecretse obtiene al momento de crear la intención de pago.
Crear una intención de pago
[POST] /payment_intent
Crea una nueva intención de pago.
Autenticación requerida
Body
{
"receiverId": "identificador-de-cliente",
"metadata": {
"key": "Valor",
"anotherKey": "Otro valor"
},
"merchantData": {
"logo": "https://example.com/logo.png",
"name": "Tienda de Ejemplo",
"description": "Compra el mejor producto del mundo",
"redirect_url": "https://example.com/success"
},
"amount": "1"
}
Parámetros
receiverId(requerido): Identificador único del cliente o carrito.metadata(opcional): Información relevante para tu negocio que quieras conservar durante todo el proceso de pago.amount(opcional): Monto a cobrar al usuario. Si no se especifica, el usuario podrá elegir el monto a pagar durante el checkout.merchantData(opcional): Información que se muestra al usuario durante el proceso de pago.logo: URL de la imagen del logo de tu negocio.name: Nombre de tu negocio.description: Descripción breve de tu negocio o producto.redirect_url: URL a la que se redirige al usuario una vez finalizado exitosamente el proceso de pago.
Respuesta
{
"paymentIntentId": "123...123",
"clientSecret": "Dx2xxxvH5",
"walletAddress": "0x...123",
"receiverId": "identificador-de-cliente",
"merchantData": {
"logo": "https://example.com/logo.png",
"name": "Tienda de Ejemplo",
"description": "Compra el mejor producto del mundo",
"redirect_url": "https://example.com/success"
},
"url": "https://pay.getamplify.app/payment/:clientSecret"
}
url: Enlace para redirigir al usuario a la página de checkout.
Ejemplo
Podés ver un ejemplo completo acá: Ejemplo de integración con Nextjs