Documentación para desarrolladores

Integración de pagos con stablecoins en Solana

Revisa la identidad del token, los parámetros y la confirmación para Solana. Paga el importe completo devuelto por la API.

Identidades de tokens de la red principal

Los contratos y Mint son valores preconfigurados, no el estado actual del servicio. Crear pedidos requiere una red y un activo habilitados y una cartera válida. Envía siempre a payment.address devuelto por la API, nunca al contrato o Mint.

Identidades de tokens de la red principal
RedMonedaContrato / MintDecimales del token
SOLANA network logoSOLANAUSDT6
SOLANA network logoSOLANAUSDC6

Configuración del comerciante

  1. Configura una cartera receptora para la red y un Webhook habilitado con URL y clave. Guarda la API Key y la clave HMAC solo en el servidor.
  2. Comprueba la disponibilidad de network / currency. El administrador gestiona RPC, redes y activos; el comerciante no necesita desplegar escáneres.
  3. Muestra payment.amount, payment.address, currency, network y vencimiento de la respuesta. Los datos QR no son una imagen.
  4. Verifica la firma, elimina duplicados y guarda el evento de forma duradera antes de responder HTTP 2xx. Entrega el pedido de forma idempotente.

Notas sobre redes y activos

  • Los Mint de USDT / USDC identifican tokens; paga a la cartera devuelta por la API. El escáner usa slots finalized; detectar una transacción no completa inmediatamente el pedido. Mint distingue mayúsculas; no uses contratos EVM ni tokens de prueba.

Ejemplos de solicitud firmada y respuesta

25.00 es un importe de ejemplo. Usa el importe real del pedido y respeta el mínimo del activo. Direcciones, pedidos y hashes son ficticios. El cURL o programa Java copiado envía una solicitud: configura tus propias claves antes de ejecutarlo.

create / cURL
# Run against your account only when ready; this sends an API request.
: "${BOLTUTIL_API_KEY:?Set your complete API Key}"
: "${BOLTUTIL_WEBHOOK_SECRET:?Set your Webhook secret}"
timestamp=$(python3 -c 'import time; print(int(time.time()*1000))')
body='{"amount":"25.00","currency":"USDT","network":"SOLANA","externalOrderId":"INV-20260209-99281"}'
signature=$(printf '%s.%s' "$timestamp" "$body" | openssl dgst -sha256 -hmac "$BOLTUTIL_WEBHOOK_SECRET" | awk '{print $NF}')

curl --request POST "https://api.boltutil.com/api/v1/order/create" \
  --header 'Content-Type: application/json' \
  --header "X-Bolt-Key: $BOLTUTIL_API_KEY" \
  --header "X-Bolt-Timestamp: $timestamp" \
  --header "X-Bolt-Signature: $signature" \
  --data-binary "$body"

Direcciones, hashes de transacciones y pedidos son ejemplos. Reemplácelos con su propia prueba data.

Base URL

PROD
https://api.boltutil.com
Parámetros completos del pedido →

Confirmación y notificaciones

Detectar no es confirmar. Usa el estado y los callbacks verificados: PAID espera confirmación. CONFIRMED / COMPLETED también pueden resultar de aceptación manual; revisa paidAmount, shortfallAmount y settlementType. COMPLETED no demuestra la entrega del pedido.

Preguntas de integración

¿Una moneda admitida está disponible ahora?

No necesariamente. Deben estar habilitados la red y el activo, con cartera y Webhook válidos. La tabla estática no muestra disponibilidad actual.

¿Puede el cliente redondear el importe?

Paga payment.amount completo. El sistema puede redondear hacia arriba y añadir un pequeño ajuste para distinguir pedidos de la misma cartera. No trunques ni redondees por tu cuenta.

¿Puedo entregar al aumentar el saldo?

Verifica el resultado confirmado y la autenticidad de la notificación. Redes, versiones o importes incorrectos y eventos duplicados requieren tratamiento. El saldo no sustituye al resultado del pedido.