Documentation développeur

Guide d’intégration des paiements USDT

Recevez des USDT sur six réseaux. Vérifiez les versions, contrats ou Mint et décimales pris en charge avant de créer des commandes signées et gérer les confirmations.

Identités des tokens du réseau principal

Les contrats et Mint sont des valeurs préconfigurées, pas un état en temps réel. La création exige un réseau et un actif activés et un portefeuille valide. Payez toujours à payment.address renvoyé par l’API, jamais au contrat ou au Mint.

Identités des tokens du réseau principal
RéseauDeviseContrat / MintDécimales du token
TRC20 network logoTRC20USDTTR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t6
ERC20 network logoERC20USDT0xdAC17F958D2ee523a2206206994597C13D831ec76
BEP20 network logoBEP20USDT0x55d398326f99059fF775485246999027B319795518
POLYGON network logoPOLYGONUSDT0xc2132D05D31c914a87C6611C10748AEb04B58e8F6
SOLANA network logoSOLANAUSDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB6
BASE network logoBASEUSDT0xfde4c96c8593536e31f229ea8f37b2ada2699bb26

Configuration du marchand

  1. Configurez un portefeuille de réception pour le réseau et un Webhook activé avec URL et clé. Conservez API Key et clé HMAC uniquement sur le serveur.
  2. Vérifiez la disponibilité de network / currency. Les administrateurs gèrent RPC, réseaux et actifs ; le marchand ne déploie pas de scanner.
  3. Affichez payment.amount, payment.address, currency, network et expiration de la réponse. Les données QR ne sont pas une image.
  4. Vérifiez la signature, dédupliquez et enregistrez durablement l’événement avant de répondre HTTP 2xx. Exécutez la livraison de façon idempotente.

Notes sur les réseaux et actifs

USDT est pris en charge sur six réseaux. Le token configuré sur BNB Smart Chain utilise 18 décimales ; les cinq autres réseaux en utilisent 6. Cela diffère de la précision du montant de la commande. Base utilise la version configurée de USDT bridgé ; BoltUtil ne transfère pas de fonds entre réseaux. Choisissez le réseau de la commande et la version exacte indiquée : un symbole ou une adresse identique ne rend pas les réseaux ou tokens interchangeables.

  • TRC20 est le code API de TRON et ne prend en charge que USDT, pas currency=USDC. USDT a 6 décimales de token ; conservez le montant renvoyé par l’API. La confirmation suit configuration et scan, sans durée garantie.

Exemples de requête signée et de réponse

25.00 est un montant d’exemple. Utilisez le montant réel et respectez le minimum de l’actif. Adresses, commandes et hashes sont fictifs. Le cURL ou programme Java copié envoie une requête : configurez vos propres clés avant exécution.

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":"TRC20","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"

Les adresses, les hachages de transactions et les commandes en sont des exemples. Remplacez-les par votre propre test data.

Base URL

PROD
https://api.boltutil.com
Paramètres complets de la commande →

Confirmation et notifications

Détection ne signifie pas confirmation. Utilisez le statut et les callbacks vérifiés : PAID attend confirmation. CONFIRMED / COMPLETED peuvent aussi suivre une acceptation manuelle ; vérifiez paidAmount, shortfallAmount et settlementType. COMPLETED ne prouve pas la livraison.

Questions d’intégration

Une devise prise en charge est-elle disponible maintenant ?

Pas nécessairement. Le réseau et l’actif doivent être activés avec un portefeuille et un Webhook valides. La table statique ne donne pas la disponibilité en temps réel.

Le client peut-il arrondir le montant ?

Payez payment.amount en entier. Le système peut arrondir vers le haut et ajouter un petit ajustement pour distinguer les commandes du même portefeuille. Ne tronquez ni n’arrondissez vous-même.

Puis-je livrer dès que le solde augmente ?

Vérifiez le résultat confirmé et l’authenticité de la notification. Réseaux, versions ou montants erronés et doublons doivent être traités. Le solde seul ne remplace pas le résultat du paiement.