Saltar al contenido principal

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