SonarTrade Embed — Guía de integración

SonarTrade Embed — Guía de integración para ERPs

Embebe el snapshot de un importador chileno dentro de tu ERP de aduanas. Setup en 3 pasos.

1. Solicita tu partner secret

Escríbenos a contacto para registrar tu ERP como partner. Recibirás un slug y un secret (≥32 chars random). Tu sistema firma URLs con el secret; nosotros validamos server-side.

2. Genera el token (server-side)

Formato: base64url(payload).base64url(HMAC-SHA256(secret, payload))

// Node.js
const crypto = require('crypto');
function makeToken(rut, partnerSlug, secret) {
  const payload = JSON.stringify({
    partner: partnerSlug,
    rut: rut,
    exp: Math.floor(Date.now() / 1000) + 3600,  // 1h validity
    nonce: crypto.randomBytes(8).toString('hex')
  });
  const b64 = (s) => Buffer.from(s).toString('base64')
    .replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'');
  const payloadB64 = b64(payload);
  const sig = crypto.createHmac('sha256', secret)
    .update(payloadB64)
    .digest('base64')
    .replace(/\+/g,'-').replace(/\//g,'_').replace(/=+$/,'');
  return `${payloadB64}.${sig}`;
}
// PHP
function sonartrade_token($rut, $slug, $secret) {
  $payload = json_encode([
    'partner' => $slug,
    'rut' => $rut,
    'exp' => time() + 3600,
    'nonce' => bin2hex(random_bytes(8))
  ]);
  $b64 = fn($s) => rtrim(strtr(base64_encode($s), '+/', '-_'), '=');
  $payloadB64 = $b64($payload);
  $sig = $b64(hash_hmac('sha256', $payloadB64, $secret, true));
  return "{$payloadB64}.{$sig}";
}

3. Embebe el iframe

<iframe
  src="https://sonartrade.app/embed/importer/76109357-6?token=eyJ..."
  width="100%" height="320"
  frameborder="0"
  loading="lazy">
</iframe>

Endpoints REST disponibles

Endpoint Descripción
/api/embed/importer/{rut}/snapshotKPIs 12m: CIF, ops, productos, orígenes, growth YoY
/api/embed/importer/{rut}/recent?limit=20Últimas operaciones (5-50)

Términos del pilot

  • Free durante el pilot (3 meses), luego USD 15/agente-usuario/mes
  • Quota default: 1.000 lookups/día por partner
  • Cliente final debe consentir compartir su RUT con SonarTrade vía tu UI
  • Datos cacheados 1h server-side