Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.killb.com/llms.txt

Use this file to discover all available pages before exploring further.

Visión General

Ejemplos del mundo real demostrando patrones de integración comunes con el SDK JavaScript de KillB.

Ejemplo Completo de On-Ramp

Implementación completa de un flujo de on-ramp:
import { KillB } from '@killb/sdk';

async function completeOnRampFlow() {
  // Inicializar SDK
  const killb = new KillB({
    email: process.env.KILLB_EMAIL!,
    password: process.env.KILLB_PASSWORD!,
    environment: 'sandbox'
  });

  await killb.initialize();

  try {
    // Paso 1: Crear u obtener usuario
    const user = await killb.users.create({
      type: 'PERSON',
      externalId: `user-${Date.now()}`,
      data: {
        firstName: 'María',
        lastName: 'López',
        email: '[email protected]',
        phone: '+525512345678',
        dateOfBirth: '1990-01-01',
        // ... otros campos requeridos
      }
    });

    console.log('✅ Usuario creado:', user.id);

    // Paso 2: Crear cuenta de billetera
    const wallet = await killb.accounts.create({
      type: 'WALLET',
      userId: user.id,
      data: {
        currency: 'USDC',
        network: 'POLYGON',
        address: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb',
        // ... otros campos
      }
    });

    console.log('✅ Billetera creada:', wallet.id);

    // Paso 3: Obtener cotización
    const quote = await killb.quotations.create({
      fromCurrency: 'MXN',
      toCurrency: 'USDC',
      amount: 1000,
      amountIsToCurrency: false,
      cashInMethod: 'SPEI',
      cashOutMethod: 'POLYGON'
    });

    console.log('✅ Cotización creada:', quote.id);
    console.log('   Tasa:', quote.rate);
    console.log('   Recibirás:', quote.toAmount, 'USDC');

    // Paso 4: Crear ramp
    const ramp = await killb.ramps.create({
      quotationId: quote.id,
      userId: user.id,
      accountId: wallet.id,
      externalId: `onramp-${Date.now()}`
    });

    console.log('✅ Ramp creado:', ramp.id);
    console.log('   URL de Pago:', ramp.paymentInfo[0].url);

    // Paso 5: En sandbox, simular pago
    if (killb.environment === 'sandbox') {
      await killb.faker.cashIn(ramp.id);
      console.log('✅ Pago simulado');
    }

    // Paso 6: Esperar finalización
    const completedRamp = await ramp.waitForCompletion({
      pollInterval: 5000,
      timeout: 300000
    });

    console.log('✅ Ramp completado!');
    console.log('   Prueba de transferencia:', completedRamp.transferProof);
    
    return completedRamp;

  } catch (error) {
    console.error('❌ Error:', error);
    throw error;
  }
}

// Ejecutar el ejemplo
completeOnRampFlow()
  .then(() => console.log('\n🎉 ¡Todo listo!'))
  .catch(console.error);

Integración Express.js

Servidor Express.js completo con SDK KillB:
import express from 'express';
import { KillB, WebhookHandler } from '@killb/sdk';

const app = express();
app.use(express.json());

// Inicializar SDK KillB
const killb = new KillB({
  email: process.env.KILLB_EMAIL!,
  password: process.env.KILLB_PASSWORD!,
  environment: process.env.NODE_ENV === 'production' ? 'production' : 'sandbox'
});

killb.initialize().then(() => {
  console.log('✅ SDK KillB inicializado');
});

// Endpoint para crear on-ramp
app.post('/api/onramp/create', async (req, res) => {
  try {
    const { userId, walletAddress, amount } = req.body;

    // Crear cotización
    const quote = await killb.quotations.create({
      fromCurrency: 'COP',
      toCurrency: 'USDC',
      amount,
      amountIsToCurrency: false,
      cashInMethod: 'PSE',
      cashOutMethod: 'POLYGON'
    });

    // Crear ramp
    const ramp = await killb.ramps.create({
      quotationId: quote.id,
      userId,
      accountId: walletAddress,
      externalId: `order-${req.body.orderId}`
    });

    res.json({
      success: true,
      rampId: ramp.id,
      paymentUrl: ramp.paymentInfo[0].url,
      expectedAmount: quote.toAmount
    });

  } catch (error) {
    console.error('Error en creación de on-ramp:', error);
    res.status(500).json({
      success: false,
      error: error.message
    });
  }
});

app.listen(3000);

Próximos Pasos

SDK JavaScript

Documentación completa del SDK

Apps Demo

Más ejemplos completos

Referencia API

Documentación de REST API

Mejores Prácticas

Directrices de producción