Desarrolladores
Tu catálogo en tu código. Itaja cobra.
Un SDK para Node, Python o Laravel, un comando para enviar lo que vendes, una ruta para recibir los webhooks firmados. La referencia completa se abre a los comerciantes de la beta.
- Node.js
- Python
- Laravel
import { itaja } from "@/itaja.config"; const { checkoutUrl } = await itaja.checkout.create({ homeUrl: "https://shop.example/cart", currency: "XOF", lineItems: [ { name: "Shirt", quantity: 2, unitPrice: 5000 }, ], }); return Response.redirect(checkoutUrl);En marcha en cinco pasos
01Instala el SDK
npm i @itaja/node# pnpm add @itaja/node# bun add @itaja/node02Pon tus claves en .env
.env # itjs_: sandbox · itjp_: producciónITAJA_API_KEY=itjs_…ITAJA_WEBHOOK_SECRET=whsec_…03Declara lo que vendes
itaja.config.ts import { createItaja, plan } from "@itaja/node"; const pro = plan({ name: "Pro", group: "My App", price: { amount: 5000, currency: "XOF", interval: "month", },}); export const itaja = createItaja({ catalog: [pro],});04Envía tu catálogo
npx itaja push# npx itaja status# npx itaja push --yes (CI)05Monta la ruta de los webhooks
app/itaja/webhook/route.ts import { itaja } from "@/itaja.config"; export const POST = itaja.handler;
Solo en el servidor: el SDK lleva tu clave secreta. Nunca en un navegador ni en una aplicación móvil.
Un plan, una licencia, créditos, un checkout.
Declaras lo que vendes en tu código. Un comando lo envía a Itaja.
- 01Un plan de suscripción5 000 XOF al mes.
- 02Una licenciaUna clave válida un año, activable en tres dispositivos.
- 03Un pack de créditos100 créditos por 1 000 XOF, consumidos con el uso.
- 04Un checkout directoUn carrito de e-commerce, sin declarar nada: dos camisetas a 5 000 XOF.
import { createItaja, creditPack, credits, license, plan,} from "@itaja/node";// Un plan de suscripciónconst pro = plan({ name: "Pro", group: "My App", price: { amount: 5000, currency: "XOF", interval: "month" },});// Una licenciaconst desktop = license({ name: "Desktop app", devices: 3, duration: "days-365", price: { amount: 25000, currency: "XOF" },});// Un pack de créditosconst small = creditPack({ name: "100 tokens", of: credits({ name: "AI tokens" }), credits: 100, price: { amount: 1000, currency: "XOF" },});export const itaja = createItaja({ catalog: [pro, desktop, small],});// Un checkout directo · src/cart.tsconst { checkoutUrl } = await itaja.checkout.create({ homeUrl: "https://shop.example/cart", currency: "XOF", lineItems: [{ name: "Shirt", quantity: 2, unitPrice: 5000 }],});npx itaja push# envía el catálogo
from itaja import ( create_itaja, credit_pack, credits, license, plan,)# Un plan de suscripciónpro = plan("Pro", "My App", price={ "amount": 5000, "currency": "XOF", "interval": "month"})# Una licenciadesktop = license("Desktop app", devices=3, duration="days-365", price={"amount": 25000, "currency": "XOF"})# Un pack de créditossmall = credit_pack("100 tokens", credits("AI tokens"), 100, {"amount": 1000, "currency": "XOF"})itaja = create_itaja(catalog=[pro, desktop, small])# Un checkout directo · cart.pyshirt = {"name": "Shirt", "quantity": 2, "unitPrice": 5000}checkout = itaja.checkout.create( homeUrl="https://shop.example/cart", currency="XOF", lineItems=[shirt])itaja push# envía el catálogo
<?phpuse Itaja\Laravel\Catalog\{CreditPack, Credits, License, Plan};return [ // Un plan de suscripción Plan::make('Pro', 'My App', price: ['amount' => 5000, 'currency' => 'XOF', 'interval' => 'month']), // Una licencia License::make('Desktop app', price: ['amount' => 25000, 'currency' => 'XOF'], devices: 3, duration: 'days-365'), // Un pack de créditos CreditPack::make('100 tokens', Credits::make('AI tokens'), 100, ['amount' => 1000, 'currency' => 'XOF']),];// Un checkout directo · CartController.php$checkout = Itaja::checkout()->create([ 'homeUrl' => url('/cart'), 'currency' => 'XOF', 'lineItems' => [['name' => 'Shirt', 'quantity' => 2, 'unitPrice' => 5000]],]);php artisan itaja:push# envía el catálogo
Importes indicativos. El SDK se ejecuta en tu servidor: guarda tu clave secreta.
Un evento, una función.
La ruta verifica la firma, ignora una entrega ya procesada y responde 500 si tu código falla: Itaja vuelve a entregar. Cada evento llega tipado.
Los eventos
- checkout.paid
- invoice.paid
- invoice.payment_failed
- subscription.past_due
- subscription.canceled
export const itaja = createItaja({ catalog: [pro], on: { "checkout.paid": ({ data }) => fulfil(data.checkoutId), "subscription.past_due": ({ data }) => warnCustomer(data), "subscription.canceled": ({ data }) => downgrade(data), },});# Prueba un handler en local, con un ejemplo firmadonpx itaja trigger checkout.paid \ --url localhost:3000/itaja/webhookLo que hay detrás
Primeros pasos
Tres paquetes publicados: @itaja/node (npm), itaja (PyPI) e itaja/itaja-laravel (Composer). Declaras tu catálogo en tu lenguaje, lo envías y una sola ruta recibe los webhooks.
npx itaja pushReferencia de la API
Productos, clientes, cobros, suscripciones, créditos y license keys detrás de una sola API, descrita por una especificación OpenAPI que tu agente de código lee directamente.
OpenAPIWebhooks
Eventos firmados: pago confirmado, créditos otorgados o consumidos, license key emitida o revocada. El SDK verifica la firma y nunca ejecuta dos veces la misma entrega.
itaja.handlerAgentes de codificación
Nueve skills públicos (itaja/skills) para el agente que ya usas: lee la API y escribe la integración por ti.
npx skills add itaja/skills
Itaja está en beta privada: la referencia completa está disponible para los comercios de la beta. Hablar con ventas
Integración
Un comando. Tu agente hace el resto.
SDK de Node, Python y Laravel, una API legible y skills listos para el agente de código que ya usas.
Para tu agente de código
npx skills add itaja/skills
Los SDK, con tu gestor de paquetes
- npm install @itaja/node
- pnpm add @itaja/node
- bun add @itaja/node
- yarn add @itaja/node
- pip install itaja
- composer require itaja/itaja-laravel
Skills, SDKs y paquetes
- TypeScript
- Node.js
- Python
- Dart (Pronto)
- Laravel
Los SDK de Node, Python y Laravel están publicados; Dart está anunciado. Guardan tu clave secreta: se ejecutan en tu servidor, nunca en un navegador ni en una app móvil. El primer comando instala los skills en tu agente, los siguientes añaden el SDK de tu lenguaje.