Intégrer les paiements USDT : commandes, signatures et notifications
Une intégration USDT doit relier une commande à un paiement vérifiable. UUGate prend en charge TRC20-USDT et BEP20-USDT. Création, instructions et consultation doivent désigner la même commande et le même réseau. Cet exemple utilise TRC20 à montant fixe.
Préparer les accès et le callback
Préparez Merchant UID, API Key et votre URL HTTPS publique. Conservez la clé côté serveur, jamais dans le navigateur ou un répertoire public. Vérifiez le marchand, le compte de frais et les limites du forfait. Consultez la signature des requêtes.
Créer et enregistrer la commande
Envoyez ce corps à POST /openapi/payin/orders depuis le serveur. Ce n'est pas une requête authentifiée complète : utilisez un SDK ou ajoutez les cinq en-têtes documentés.
{
"chainCode": "TRON",
"tokenSymbol": "USDT",
"merchantOrderNo": "EXAMPLE-20260928-001",
"amount": "10.00",
"notifyUrl": "https://merchant.example.com/payments/uugate"
}
Les montants sont des chaînes. Enregistrez orderNo, merchantOrderNo, cashierUrl et expireAt avant de présenter le paiement. waiting_payment confirme la création, pas la réception des fonds. Voir les paramètres et réponses.
Vérifier avant de livrer
Vérifiez timestamp, nonce et corps brut avec l'API Key utilisée pour la commande. Ne sérialisez pas à nouveau le JSON. Contrôlez marchand, commande, réseau, actif et montant reçu. Utilisez une contrainte unique sur le numéro de plateforme et une transaction pour enregistrer paiement et état métier avant de répondre 2xx. Un doublon doit confirmer le résultat existant sans crédit ni livraison supplémentaire. Voir les callbacks.
Résoudre un résultat incertain
Le retour du navigateur ne prouve pas le paiement. Avec le numéro de plateforme, consultez la commande et exigez status=completed pour le succès final. Si la création expire sans numéro, vérifiez le résultat dans la console avant de réessayer. Le numéro marchand ne garantit pas une création idempotente.
Vérifications avant lancement
- Testez paiement normal, signature invalide, callback en double et indisponibilité temporaire du récepteur.
- Les paiements expirés, insuffisants ou sur le mauvais réseau ne doivent pas déclencher de livraison automatique.
- Conservez numéros, hashes et résultats sans journaliser les API Keys.
- Utilisez le SDK Node.js ou PHP / Laravel; vérifiez les réseaux USDT et les tarifs.