Cómo configurar un cliente Open Payments en Node.js

Resumen

Configurar un cliente Open Payments en Node.js requiere tres elementos básicos: una wallet de prueba, un par de llaves pública y privada, y la librería oficial de Interledger. Si estás aprendiendo a integrar pagos peer to peer, esta guía te muestra cómo armar el script desde cero usando Node.js 22 LTS.

¿Qué necesitas antes de configurar el cliente Open Payments?

Antes de tocar una sola línea de código, asegúrate de tener listo tu entorno de desarrollo. La buena noticia es que casi todo se obtiene desde la test wallet de Interledger, así que no tienes que generar firmas ni llaves manualmente [1:30].

  • Node.js instalado, preferiblemente la versión 22 LTS, que tiene soporte hasta 2027.
  • Una wallet de prueba en wallet.interledger-test.dev con al menos tres direcciones creadas.
  • Un editor de código; en el ejemplo se usa Visual Studio Code.
  • La librería oficial @interledger/open-payments instalada vía npm.

¿De dónde sacas la wallet address y las llaves? Ambas se obtienen directamente desde la test wallet de Interledger. La librería se encarga de la firma por defecto, así que no tienes que implementarla tú.

¿Cómo inicializar el proyecto en Node.js?

El primer paso es crear una carpeta limpia y verificar que estás en la versión correcta de Node. En el ejemplo, la carpeta se llama ILF Project y se abre desde Visual Studio Code [3:10].

Desde la terminal integrada, ejecuta estos comandos en orden:

  1. node -v para confirmar que estás en Node.js 22.
  2. npm init -y para generar el package.json con valores por defecto.
  3. npm install @interledger/open-payments para instalar la librería y crear la carpeta node_modules.
  4. Crea un archivo nuevo llamado index.js desde el panel lateral del editor.

Con esto ya tienes la base del proyecto: dependencias instaladas y un punto de entrada listo para escribir la lógica del cliente.

¿Cómo configurar el cliente autenticado y las wallets?

Aquí entra la parte interesante. El flujo de un pago peer to peer en Open Payments necesita tres actores: un cliente, un sender y un recipient. En el ejemplo se usan tres wallets creadas previamente en la cuenta en dólares: MBR como cliente, Alicia Test como remitente y Bob Test como destinatario [5:45].

¿Qué dependencias hay que importar?

En la parte superior de index.js se importan dos cosas. Primero, createAuthenticatedClient desde @interledger/open-payments, que es la función que crea la instancia del cliente. Segundo, fs para leer el archivo donde guardarás la llave privada.

Un detalle clave: usa fs directamente, no la versión con promises, porque vas a leer el archivo de forma síncrona con readFileSync y configuración en UTF-8. Esto evita problemas al cargar la llave privada.

¿Cómo se construye la instancia del cliente?

Dentro de una función async, declaras una constante para la llave privada leyendo el archivo local, y luego llamas a createAuthenticatedClient pasándole tres propiedades:

  • walletAddressUrl: la dirección de la wallet del cliente, por ejemplo ilp.interledger-test.dev/mbr.
  • privateKey: el contenido del archivo private.key cargado en memoria.
  • keyId: el identificador único de la llave que generas en la test wallet.

¿Qué es el keyId en Open Payments? Es el identificador que vincula tu llave privada con la pública registrada en la wallet. Lo obtienes al expandir la llave generada en la sección de developer keys.

¿Cómo generar y vincular las llaves desde la test wallet?

Esta es la parte donde mucha gente se atora, pero la test wallet lo hace bastante directo. Ve a Settings, luego a Developer Keys, y selecciona la cuenta en USD donde están tus wallets [9:20].

Dentro de la wallet del cliente (en el ejemplo, MBR), haz lo siguiente:

  1. Haz clic en Generate public and private key.
  2. Asígnale un nombre descriptivo, por ejemplo client tutorial.
  3. La llave privada se descarga automáticamente al generarse.
  4. Copia el contenido de la llave privada y pégalo en un archivo nuevo en tu proyecto llamado private.key.
  5. Expande la llave en la wallet para ver el keyId y cópialo a tu index.js.

Después de pegar ambos valores, guarda con Cmd+S o Ctrl+S. Si aparece un error, revisa con cuidado el cierre de llaves y paréntesis en la configuración del cliente: es el punto donde más fallas ocurren al armar el objeto de autenticación.

¿Qué quedó listo para el flujo de pago peer to peer?

Con esta configuración inicial ya tienes lo esencial: dependencias importadas, instancia del cliente creada, llave privada cargada desde archivo, y las wallets de sender y recipient identificadas. El cliente autenticado puede ahora firmar peticiones contra el protocolo Open Payments sin que tengas que implementar criptografía manualmente.

Lo que sigue es el flujo de pago peer to peer propiamente dicho, donde se solicitan grants, se crean incoming payments y se ejecuta la transferencia entre Alicia Test y Bob Test. ¿Has intentado integrar Open Payments antes? Cuéntame en los comentarios qué parte del setup te resultó más confusa.