Contenido del curso
Open Payments
- 5

Cómo Open Payments aplica los principios de Internet al dinero
06:45 min - 6

Cómo funciona la API de Open Payments
06:53 min - 7

Qué es Open Payments y cómo usarlo
07:23 min - 8

Configuración de entorno seguro para desarrollo con Interledger
04:37 min - 9

Configuración de billetera de prueba en Interledger
08:15 min - 10

Flujos y arquitectura de Open Payments explicados paso a paso
05:29 min - 11

Autorización y tokens de acceso en Open Payments con NAP
07:08 min
Creación en Código
Crea un outgoing payment con Open Payments
Resumen
Si estás integrando pagos con Open Payments en Node.js, llegaste al momento clave: cotizar, autorizar y ejecutar un outgoing payment entre dos billeteras Interledger. Aquí verás cómo Alicia (emisor) le paga a Bob (receptor) usando tokens de acceso, quotes y consentimiento por redirect.
¿Cómo se genera una quote en Open Payments?
La cotización vive en el servidor del receptor, no en el del emisor. Aunque el token de autorización se obtuvo en el auth server de Alicia, la quote se crea en el servidor de Bob, porque depende de las condiciones del incoming payment que existe ahí [01:00].
Para pedir la cotización necesitas dos cosas:
- El access token con permiso
quote createque conseguiste en el paso anterior. - Un objeto con la wallet address de Alicia y la referencia al incoming payment de Bob.
El método de transporte declarado es ILP, que indica que el pago se moverá por el protocolo Interledger. Al hacer console.log(quote) en la terminal verás un objeto con el monto a recibir, el monto a debitar, los tiempos de expiración, la fecha de creación y el método.
¿Qué es una quote en Open Payments? Es un objeto que especifica exactamente cuánto debe enviar el emisor para que el receptor reciba la cantidad prometida, incluyendo tiempos de expiración y método de transporte.
¿Cómo se solicita la concesión para el outgoing payment?
Una vez tienes la quote, toca pedirle permiso a Alicia para crear el pago saliente. Este grant se solicita del lado del emisor y exige interacción por redirección, es decir, el usuario debe consentir explícitamente [03:30].
Dentro del fragmento de código defines:
- La wallet address de Alicia, que es quien autoriza el token.
- Los límites de gasto, atados al monto exacto de la quote para evitar sobrecargos.
- El tipo de interacción, en este caso un redirect.
- Un identificador para reutilizar el token con otras cuentas.
Al correr node index.js la terminal imprime una URL. Ojo aquí: si olvidas guardar el archivo con Command + S o Control + S, el script no toma los cambios. Ya con la URL en mano, la copias al navegador y aparece tu billetera de Interledger pidiendo autorización para un pago de 10 dólares a nombre del cliente, con dos botones: aceptar y declinar.
¿Cómo crear un prompt interactivo con readline en Node.js?
Para que el flujo espere al usuario antes de continuar, necesitas un prompt interactivo. Ahí entra el módulo nativo readline de Node.js [05:30].
En la configuración inicial importas readline y creas una interfaz con input y output. Luego lanzas una pregunta tipo "Presione Enter para continuar con el pago saliente". Esto pausa la ejecución hasta que el usuario, después de aceptar la autorización en el navegador, vuelva a la consola y presione Enter.
¿Para qué sirve readline en este flujo? Para detener la ejecución del script y darle tiempo al usuario de aceptar el consentimiento en el navegador antes de continuar con la creación del pago saliente.
¿Qué hace el finalize outgoing payment?
Cuando el usuario consiente vía redirect, el flujo NAP necesita finalizar la autorización. El método finalize outgoing payment toma la URL de continuación y el token de la transacción, y reanuda el proceso [07:00].
Los resultados posibles son dos:
- Si el usuario aceptó: devuelve un grant finalizado con un access token listo para crear el pago saliente.
- Si no consintió aún: el grant queda en estado pendiente y debes reintentarlo.
El condicional dentro del script verifica esto y arroja un error o se queda esperando un nuevo intento.
¿Cómo se crea el outgoing payment en el resource server?
Este es el paso final: ejecutar el pago saliente en la billetera de Alicia enlazándolo con la quote previa [08:30].
El primer argumento de la llamada incluye:
- La URL del resource server de Alicia, donde se gestionan los pagos salientes.
- El access token que ya trae el límite del monto definido en la cotización.
El segundo argumento es el cuerpo del pago, donde defines:
- El wallet address ID de Alicia, la cuenta desde donde se debita.
- El quote ID, la clave que vincula el outgoing payment a la cotización aprobada.
Al ejecutar console.log el servidor devuelve un objeto con un ID único del pago saliente (en formato URL), el monto debitado, el monto recibido por Bob (los 10 dólares del ejemplo), la referencia al incoming payment de Bob y el estado del pago: pendiente, completado o fallido.
Copias la URL del redirect, la pegas en el navegador, confirmas los 10 dólares, aceptas y vuelves a Visual Studio Code para presionar Enter. La consola ya muestra el monto recibido, el monto debitado y todos los datos del outgoing payment ejecutado.
¿Qué validar después de ejecutar el flujo?
Usaste el token de autorización para crear el outgoing payment, lo vinculaste a la quote y confirmaste que se respetó el método ILP del protocolo Interledger. Puedes entrar a tu billetera de prueba y revisar que toda la transacción quedó registrada.
Con esta lógica ya tienes las bases para enviar y recibir pagos con Open Payments y manejar las autorizaciones en cualquier integración. ¿Qué vas a construir con esto? Cuéntalo en los comentarios.