API de revendedor eSIMDual

Utilice la API de revendedor de eSIMDual en su propio sitio web o aplicación.

Esta documentación abarca las API de producción y pruebas: autenticación, paquetes públicos, compras, entrega de eSIM, consumo, recargas compatibles, cancelación de eSIM sin usar, reembolsos, datos del monedero y webhooks firmados.

Inicio rápido
  • 1Empieza de forma segura con POST /sandbox/login
  • 2Enviar tokens de portador en todos los puntos finales protegidos.
  • 3Utiliza Idempotency-Key en cada compra, recarga y cancelación
  • 4Pasa a producción solo después de la aprobación del revendedor
URL base https://esimdual.com/api/reseller/v1
URL del entorno de pruebas https://esimdual.com/api/reseller/v1/sandbox
Autenticación Authorization: Bearer <token>
Idempotencia Idempotency-Key: unique-order-key
Seguridad del entorno de pruebas

Los pedidos de prueba utilizan un saldo ficticio y eSIM simuladas. Nunca llaman a un proveedor externo ni cargan el monedero de producción. Usa el endpoint de simulación para probar los estados instalada, activa y consumida, y luego comprueba los flujos de reembolso aceptado, rechazado y sometido a revisión manual.

curl --request POST 'https://esimdual.com/api/reseller/v1/sandbox/login' \
  --header 'Content-Type: application/json' \
  --data '{"email":"partner@example.com","password":"YOUR_PASSWORD","device_name":"sandbox-ci"}'
Ejemplo de solicitud de inicio de sesión
curl --request POST 'https://esimdual.com/api/reseller/v1/login' \
  --header 'Content-Type: application/json' \
  --data '{
    "email": "partner@example.com",
    "password": "StrongPassword123!",
    "device_name": "production-server",
    "expires_in_days": 90
  }'
Solicitud de pedido de muestra
curl --request POST 'https://esimdual.com/api/reseller/v1/orders' \
  --header 'Authorization: Bearer YOUR_TOKEN' \
  --header 'Idempotency-Key: ORDER-2026-0001' \
  --header 'Content-Type: application/json' \
  --data '{
    "package_id": 1120,
    "external_order_id": "NOANET-2026-0001",
    "device_imei": "356938035643809"
  }'
Flujo de recarga compatible
GET /esims/{id}/topup-options

POST /topups
Idempotency-Key: TOPUP-2026-0001
{
  "esim_id": "{id}",
  "package_id": 456
}
Cancelación de eSIM sin usar
POST /esims/{id}/cancel
Idempotency-Key: CANCEL-2026-0001

Automatic refund only when the supplier confirms:
- zero usage
- never installed
- never activated
- no completed recharge exists
- original wallet debit is verified

Eventos de webhook

eSIMDual firma timestamp.raw_payload con HMAC SHA-256. eSIMDual genera el secreto y solo lo muestra después de crearlo o rotarlo. Rechaza marcas de tiempo con más de cinco minutos y elimina duplicados mediante X-eSIMDual-Delivery.

ping order.completed order.processing order.failed topup.completed topup.processing topup.failed esim.cancelled refund.completed refund.failed
X-eSIMDual-Event
X-eSIMDual-Delivery
X-eSIMDual-Timestamp
X-eSIMDual-Signature: v1=…
Verificación de firma PHP
$rawBody = file_get_contents('php://input');
$timestamp = $_SERVER['HTTP_X_ESIMDUAL_TIMESTAMP'] ?? '';
$received = $_SERVER['HTTP_X_ESIMDUAL_SIGNATURE'] ?? '';
$fresh = ctype_digit($timestamp) && abs(time() - (int) $timestamp) <= 300;
$expected = 'v1=' . hash_hmac('sha256', $timestamp . '.' . $rawBody, $webhookSecret);

if (!$fresh || !hash_equals($expected, $received)) {
    http_response_code(401);
    exit('Invalid or stale signature');
}

Guarda cada valor X-eSIMDual-Delivery y rechaza las entregas duplicadas. Devuelve una respuesta HTTP 2xx solo después de aceptar el evento.

Podemos utilizar cookies o cualquier otra tecnología de seguimiento cuando visite nuestro sitio web, así como cualquier otro medio, sitio web móvil o aplicación móvil relacionada o conectada, con el fin de personalizar el Sitio y mejorar su experiencia. Aprende más

Permitir