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:Copiar
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:Copiar
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);