Dépannage des paiements par smart contract
Ce guide vous aide à résoudre les problèmes courants lorsque vous acceptez des paiements non dépositaires via les smart contracts de Volet.com sur Ethereum, BNB Smart Chain et TRON.
Repérez votre problème ci-dessous et suivez les étapes recommandées. Les adresses des contrats, les paramètres et les définitions des erreurs figurent dans la Référence des smart contracts.
Problèmes de portefeuille et de réseau
| Problème | Cause possible | Solution |
|---|---|---|
| Connexion du portefeuille refusée | Le client a refusé la demande ou le portefeuille est verrouillé | Demandez au client de déverrouiller son portefeuille et de se reconnecter |
| MetaMask non détecté | Aucun portefeuille de navigateur compatible n’est installé ou disponible | Installez MetaMask ou connectez-vous avec un portefeuille compatible WalletConnect |
| Mauvais réseau EVM | Le portefeuille est connecté à un autre réseau que celui choisi lors du paiement | Demandez un changement de réseau et vérifiez le chain ID |
| Échec de la connexion WalletConnect | Project ID invalide, configuration incorrecte, ou portefeuille ou réseau non pris en charge | Vérifiez la configuration du projet Reown et les réseaux pris en charge |
| TronLink non détecté | L’extension n’est pas installée, activée ou déverrouillée | Installez ou déverrouillez TronLink, puis actualisez la page |
| Mauvais réseau TRON | Le portefeuille est connecté à un réseau de test ou à un réseau inattendu | Passez sur TRON Mainnet et vérifiez le réseau actif |
Vérifiez toujours à nouveau l’adresse du portefeuille et le réseau choisi avant de lancer un paiement, surtout après une connexion de portefeuille ou un changement de réseau.
Problèmes d’approbation USDT
Les paiements en USDT peuvent nécessiter une transaction d’approbation avant que le contrat processeur puisse transférer les jetons.
| Problème | Cause possible | Solution |
|---|---|---|
| Transaction d’approbation refusée | Le client a refusé la demande dans son portefeuille | Laissez le client relancer l’approbation |
| Autorisation de dépense (allowance) insuffisante | Le processeur n’est pas autorisé à dépenser le montant requis | Vérifiez allowance() et demandez l’approbation du montant requis |
| Échec de l’approbation USDT sur Ethereum | Une autorisation non nulle ne peut pas être modifiée directement en un autre montant non nul | Approuvez 0, attendez la confirmation, puis approuvez le montant requis |
| Solde USDT insuffisant | Le client ne dispose pas d’assez de jetons pour le total du paiement | Comparez balanceOf() à previewPayment().totalPay |
| Approbation réussie mais paiement en attente | L’approbation est terminée, mais la transaction de paiement n’a pas été envoyée ou vérifiée | Vérifiez l’autorisation actuelle, puis lancez ou vérifiez la transaction de paiement distincte |
Important : une transaction approve() réussie n’est pas un paiement effectué. Seule la transaction transfer() du contrat processeur permet de vérifier le paiement de la commande.
Erreurs de transaction et de contrat
| Erreur ou problème | Cause possible | Solution |
|---|---|---|
InvalidTotalAmountValidation | La value ou la callValue native ne correspond pas au total attendu du paiement | Appelez de nouveau previewPayment() et envoyez le totalPay renvoyé |
SellerIsBuyer | Les adresses du portefeuille de l’acheteur et du marchand sont identiques | Vérifiez que le portefeuille de réception du marchand diffère du portefeuille connecté de l’acheteur |
SellerZeroAddress | L’adresse de réception du marchand est l’adresse zéro | Configurez un portefeuille marchand valide |
AmountIsZero | Le montant du paiement est nul | Validez le montant de la commande avant d’envoyer la transaction |
CommissionExceedsAmount | Les frais de traitement ne peuvent pas être déduits du montant demandé | Vérifiez le montant de la commande et le paramétrage des frais |
SellerNotWhitelisted | Le processeur n’autorise pas le portefeuille de réception du marchand | Contactez Volet.com pour vérifier l’autorisation du portefeuille |
EnforcedPause | Le traitement des paiements est suspendu dans le contrat | Cessez d’envoyer des paiements via ce processeur et contactez Volet.com |
| Échec du transfert de jetons | Solde de jetons ou autorisation insuffisants, ou restrictions propres au jeton | Vérifiez le contrat du jeton, le solde, l’autorisation et le réseau choisi |
| Gas insuffisant | Le client n’a pas assez d’ETH ou de BNB pour les frais de réseau | Demandez au client de conserver un solde suffisant de la cryptomonnaie native |
| Ressources TRON insuffisantes | Le client manque d’Energy, de Bandwidth ou de TRX disponibles | Vérifiez les ressources nécessaires et les TRX disponibles |
TRON OUT_OF_ENERGY | L’exécution du contrat a épuisé l’Energy disponible ou la limite de frais configurée | Estimez la consommation de ressources et vérifiez le feeLimit de la transaction |
TronGrid HTTP 429 | La limite de requêtes de l’API est dépassée | Utilisez une clé d’API côté serveur et relancez les requêtes avec un délai croissant |
Les erreurs de contrat dépendent du processeur déployé. Consultez la Référence des smart contracts pour les définitions des erreurs.
Le paiement reste en attente
Une commande peut rester en attente même après l’envoi d’une transaction par le client.
| Situation | Points à vérifier | Action recommandée |
|---|---|---|
| Hash de transaction renvoyé, mais aucun reçu | La transaction n’est peut-être pas encore incluse dans un bloc | Continuez à vérifier le même txid |
| Transaction exécutée mais non finalisée | La finalité requise du réseau n’est pas encore atteinte | Attendez la finalité avant de finaliser la commande |
| Approbation USDT confirmée, mais aucun paiement | Seule la transaction d’approbation a été envoyée | Vérifiez si une transaction de paiement distincte existe |
| Transaction réussie, mais commande toujours en attente | Les détails du paiement ne correspondent peut-être pas à la commande, ou la vérification côté backend n’est pas terminée | Comparez à la commande le processeur, l’actif, le destinataire, le montant et l’appel au contrat |
| Transaction TRON visible mais non solidifiée | La transaction n’apparaît pas encore dans les données du SolidityNode | Continuez à vérifier le reçu solidifié de la transaction |
| La requête RPC échoue ou expire | Le fournisseur est temporairement indisponible | Relancez la vérification sans marquer la transaction comme échouée |
| Le client a fermé ou actualisé la page de paiement | La session du navigateur s’est terminée avant la confirmation du paiement | Poursuivez la vérification via le processus de rapprochement du backend |
| Le paiement a expiré avant sa confirmation | La transaction peut être confirmée après la fermeture de la fenêtre de paiement | Continuez à suivre les tentatives de paiement envoyées et rapprochez les paiements tardifs |
Transaction réussie, mais commande non marquée comme payée
Une transaction blockchain réussie ne signifie pas forcément que la bonne commande a été payée.
Votre backend doit confirmer que :
- La transaction a utilisé le contrat processeur attendu.
- L’actif et le portefeuille de réception du marchand correspondent à la commande.
- Le montant du paiement et le paramétrage des frais sont corrects.
- Le marchand a reçu les fonds attendus.
- La transaction a atteint la finalité requise sur la blockchain.
- Le hash de transaction n’a pas déjà été utilisé pour une autre commande.
Si un détail requis ne correspond pas, ne marquez pas la commande comme payée automatiquement. Laissez le paiement en examen pour enquête.
Le processus de vérification complet est décrit dans Vérification des paiements et suivi des commandes.
Contacter le support
Si le problème persiste, contactez Volet.com en indiquant :
- Le réseau blockchain et l’actif.
- Le hash de la transaction de paiement (
txid), s’il est disponible. - La date et l’heure approximatives de la transaction.
- L’identifiant de commande du marchand.
- L’adresse du contrat processeur.
- Le message d’erreur ou une description du problème.
Vous pouvez joindre notre équipe via le support Volet.com.
Sécurité : ne communiquez jamais de phrases de récupération de portefeuille, de clés privées ni d’identifiants d’API secrets.
Voir aussi
- Intégration des smart contracts — présentation des paiements non dépositaires.
- Intégration Ethereum et BNB Smart Chain — acceptez ETH, BNB et USDT.
- Intégration TRON — acceptez TRX et USDT TRC-20.
- Référence des smart contracts — adresses des contrats, paramètres et erreurs.
- Vérification des paiements et suivi des commandes — vérifiez les transactions et rapprochez les commandes.