Saltar al contenido principal

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 clientSecret se 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