Integrar con una IA
No le describa Ayni a su asistente. Pásele el archivo.
Publicamos /llms.txt: un solo archivo de texto con el contrato completo, escrito para que un modelo lo lea entero. Un asistente que lo lee trabaja con los nombres de campo reales. Uno que trabaja de su resumen, inventa.
El prompt con el que empezar
Copie esto y cambie la última línea por su stack. El enlace es lo importante: es lo que reemplaza media hora de explicarle qué es Ayni.
Quiero integrar los cobros por QR de Ayni Cobros en mi aplicación.
Leé https://aynicobros.com/llms.txt completo y seguí ese documento:
tiene el contrato real de la API y de los dos paquetes de npm.
Mi stack es: Next.js 16 con App Router y TypeScript.Si su asistente no puede abrir enlaces, péguele el contenido del archivo. Son unas nueve mil palabras; entra sin problema en cualquier modelo actual.
Tres cosas de su app que el modelo no puede adivinar
El archivo cubre Ayni. Lo que no puede cubrir es lo suyo, y son las tres decisiones donde una integración se tuerce:
- Dónde vive su clave secreta. Una variable de entorno del servidor, un gestor de secretos, lo que use. Si no lo dice, el modelo elige por usted — y en un proyecto de Next.js elegir mal significa un
NEXT_PUBLIC_que publica la clave al navegador. - A qué URL vuelve el comprador y qué pasa ahí. Ayni devuelve al pagador a su
successUrlcon el token en la query. Diga qué tiene que ocurrir en esa página: marcar el pedido, vaciar el carrito, mandar un correo. - Qué cuenta como pedido pagado en su base de datos. El modelo puede escribir la llamada; no sabe si usted libera el pedido al confirmar o espera la conciliación.
Qué revisar en lo que le devuelva
Cinco errores cuestan dinero de verdad, y los cinco compilan sin quejarse. Búsquelos en el código antes de aceptarlo:
- El monto. Tiene que ser un string decimal en unidades mayores:
amount: '250.00'. Si ve25000, o un número sin comillas, está cobrando cien veces de más. - La clave. Busque
AYNI_SECRET_KEYen todo el proyecto. Solo puede aparecer en código de servidor. Nunca en un componente con'use client', nunca con prefijo público. - La fecha. Debe salir de
datePlusDays(), o de la zonaAmerica/La_Pazsi su servidor no es Node. Si vetoISOString(), está calculando el día en UTC y el cobro vence antes de tiempo. - La referencia en los reintentos. Reintentar con la misma
referencedevuelve el cobro original. Si el modelo genera una nueva por intento, un timeout le deja dos QR cobrables para un pedido. - El resultado. Ninguno de los dos paquetes lanza excepciones. Tiene que haber un
if (result.kind !== 'ok')antes de tocarresult.charge. Untry/catchalrededor no atrapa nada.
Ese repaso también se lo puede pedir a la IA, con el código ya escrito delante:
Revisá esta integración de Ayni contra https://aynicobros.com/llms.txt.
Verificá en concreto: que amount sea un string decimal en unidades mayores,
que la clave secreta no aparezca en ningún archivo que llegue al navegador,
que dueDate se calcule en America/La_Paz, que los reintentos repitan la misma
reference, y que se estreche result.kind antes de leer result.charge.
Mostrame cada hallazgo con archivo y línea.Lo que va a inventar si usted no se lo dice
Un modelo completa los huecos con lo que es habitual en otras pasarelas. Estas tres no existen en Ayni, y el archivo las declara ausentes por eso mismo:
- Un webhook hacia su servidor. No hay. Ayni recibe uno del banco, pero no le envía ninguno a usted: su app se entera leyendo el estado con el token público. Si el asistente le propone registrar una URL de callback, se la inventó.
- Un paquete para su lenguaje. Solo existen los dos de npm. Desde Python, Java, C#, PHP o Go se llama la API por HTTP. No hay
pip installque valga. - Una referencia de API o un Swagger. No están publicados. Si le aparece una URL de documentación que no sea esta página, el archivo de texto o npm, no existe.
Siguiente paso
La versión para leer con ojos humanos es la página de integración; la versión para el modelo es el archivo.
¿Su asistente le devolvió algo que no cierra? Escríbanos por WhatsApp y lo miramos con usted.