Référence des smart contracts
Cette référence regroupe les adresses des contrats, les informations sur les jetons et les définitions des fonctions des paiements non dépositaires de Volet.com sur Ethereum, BNB Smart Chain et TRON.
Pour des instructions pas à pas, consultez Intégration Ethereum et BNB Smart Chain ou Intégration TRON.
Adresses des processeurs de paiement
Chaque actif pris en charge utilise un smart contract processeur de paiement.
| Réseau | Actif | Contrat processeur |
|---|---|---|
Ethereum Mainnet (1) | ETH | 0x2fceE245109Cf3c535489a6F52fe11b3BBd644FF |
Ethereum Mainnet (1) | USDT ERC-20 | 0xe4083ED0A1101615b9092E8cD2164e2f42B4571E |
BNB Smart Chain (56) | BNB | 0x2fceE245109Cf3c535489a6F52fe11b3BBd644FF |
BNB Smart Chain (56) | USDT BEP-20 | 0xe4083ED0A1101615b9092E8cD2164e2f42B4571E |
| TRON Mainnet | TRX | TSK9sgBTjvZa6x2yW1bXNWqvQ57WsVUQ3W |
| TRON Mainnet | USDT TRC-20 | TDuE6VueULx5oivQd4MsYr9DEhNMgXNfTm |
Avant de traiter des paiements, confirmez auprès de Volet.com les adresses des contrats déployés et l’ABI. Les contrats d’autres réseaux, actifs ou parcours de paiement personnalisés peuvent utiliser des adresses et des interfaces différentes.
Adresses et décimales des jetons
| Réseau | Actif | Contrat du jeton | Décimales |
|---|---|---|---|
| Ethereum | ETH (natif) | N/A | 18 |
| Ethereum | USDT ERC-20 | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 6 |
| BNB Smart Chain | BNB (natif) | N/A | 18 |
| BNB Smart Chain | USDT BEP-20 | 0x55d398326f99059fF775485246999027B3197955 | 18 |
| TRON | TRX (natif) | N/A | 6 (SUN) |
| TRON | USDT TRC-20 | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | 6 |
Tous les montants transmis au smart contract doivent être exprimés dans les plus petites unités de l’actif.
- ETH et BNB : utilisez
ethers.parseEther()pour convertir les montants en wei. - USDT sur EVM : utilisez
ethers.parseUnits(amount, tokenDecimals)avec la précision du jeton concerné. - TRX : utilisez le SUN, où 1 TRX = 1 000 000 SUN.
- USDT sur TRON : utilisez des unités de base entières du jeton, où 1 USDT = 1 000 000 unités.
N’utilisez pas l’arithmétique à virgule flottante pour calculer les montants des paiements.
Interface du contrat de paiement
Le processeur de paiement standard expose deux fonctions principales : previewPayment() et transfer().
interface IVoletPaymentProcessor {
function previewPayment(
uint256 amount,
bool buyerPaysCommission
) external view returns (
uint256 commission,
uint256 totalPay
);
function transfer(
address seller,
uint256 amount,
bool buyerPaysCommission,
address optionalCommissionWallet
) external payable;
}
Cette interface décrit les fonctions de paiement utilisées dans les guides d’intégration. Utilisez l’ABI vérifiée complète du contrat déployé pour décoder les événements ou gérer les erreurs propres au contrat.
previewPayment()
Calcule les frais de traitement et le montant total que le client doit payer.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
amount | uint256 | Montant de paiement demandé dans les plus petites unités de l’actif |
buyerPaysCommission | bool | Détermine si les frais de traitement s’ajoutent au paiement du client ou sont déduits des recettes du marchand |
Valeurs renvoyées
| Paramètre | Type | Description |
|---|---|---|
commission | uint256 | Frais de traitement dans les plus petites unités de l’actif |
totalPay | uint256 | Montant total que le client doit payer, dans les plus petites unités de l’actif |
Pour les paiements en actif natif, transmettez totalPay comme value de la transaction sur EVM ou comme callValue sur TRON.
Pour les paiements en USDT, le solde de jetons du client et l’autorisation de dépense (allowance) accordée au processeur doivent être au moins égaux à totalPay.
Utilisez toujours les valeurs renvoyées par previewPayment(). Ne calculez pas les frais de traitement manuellement.
transfer()
Exécute le paiement et répartit les fonds selon le paramétrage des frais du contrat.
Paramètres
| Paramètre | Type | Description |
|---|---|---|
seller | address | Portefeuille de réception du marchand |
amount | uint256 | Montant de paiement demandé dans les plus petites unités de l’actif |
buyerPaysCommission | bool | Détermine qui prend en charge les frais de traitement |
optionalCommissionWallet | address | Portefeuille de commission du partenaire, ou l’adresse zéro du réseau s’il n’y en a pas |
Adresses zéro
| Réseau | Adresse zéro |
|---|---|
| Ethereum / BNB Smart Chain | 0x0000000000000000000000000000000000000000 |
| TRON (Base58) | T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb |
La fonction transfer() n’accepte pas de paramètre orderId. Votre backend doit associer le hash de chaque transaction de paiement (txid) à la commande correspondante.
Consultez Vérification des paiements et suivi des commandes pour le rapprochement des transactions et la prévention des paiements en double.
Événement de paiement
Les processeurs de paiement émettent un événement PaymentProcessed après avoir versé le paiement au marchand.
event PaymentProcessed(
address indexed buyer,
address indexed seller,
uint256 commission,
uint256 totalPay
);
| Paramètre | Type | Description |
|---|---|---|
buyer | address | Portefeuille à l’origine du paiement |
seller | address | Portefeuille de réception du marchand |
commission | uint256 | Frais de traitement dans les plus petites unités de l’actif |
totalPay | uint256 | Montant total payé par l’acheteur dans les plus petites unités de l’actif |
Le montant reçu par le marchand est :
receivedAmount = totalPay - commission
Cette formule s’applique quelle que soit la valeur de buyerPaysCommission.
Pour les paiements en ETH, BNB et TRX natifs, une transaction réussie et finalisée accompagnée d’un événement PaymentProcessed authentique et concordant confirme le paiement au marchand dans le cadre de l’implémentation documentée du processeur.
Pour les paiements en USDT, vérifiez en plus l’événement Transfer du jeton, du processeur de paiement vers le marchand, pour le montant attendu.
Vérifiez toujours que l’adresse du contrat qui émet l’événement correspond à l’adresse approuvée du processeur.
Consultez Vérification des paiements et suivi des commandes pour des exemples d’implémentation.
Frais de traitement
Le paramètre buyerPaysCommission détermine la façon dont les frais de traitement s’appliquent.
| Valeur | Le client paie | Le marchand reçoit |
|---|---|---|
true | Montant demandé + frais de traitement | Montant demandé |
false | Montant demandé | Montant demandé − frais de traitement |
Les frais de traitement réels et le montant total du paiement sont calculés par previewPayment() selon le contrat déployé.
Les frais de réseau de la blockchain s’ajoutent séparément aux frais de traitement :
- Ethereum / BNB Smart Chain : frais de gas payés en ETH ou en BNB.
- TRON : coûts d’Energy et de Bandwidth, éventuellement payés en TRX.
Règlement
Avec les paiements non dépositaires, le smart contract transfère les fonds directement vers le portefeuille de réception du marchand.
Les fonds ne sont pas crédités sur un compte Volet.com, et la conversion automatique en fiat ne fait pas partie de ce parcours de paiement.
Erreurs du contrat
Le processeur de paiement peut renvoyer les erreurs suivantes :
| Erreur | Description |
|---|---|
SellerZeroAddress | L’adresse de réception du marchand est nulle |
SellerIsBuyer | Les adresses du portefeuille de l’acheteur et du marchand sont identiques |
AmountIsZero | Le montant du paiement est nul |
InvalidTotalAmountValidation | La value ou la callValue de l’actif natif ne correspond pas au total attendu |
CommissionExceedsAmount | Les frais de traitement dépassent le montant dont ils peuvent être déduits |
SellerNotWhitelisted | Le contrat déployé n’autorise peut-être pas le portefeuille du marchand |
EnforcedPause | Le traitement des paiements a été suspendu |
Les erreurs disponibles et leur comportement exact dépendent du contrat déployé. Utilisez son ABI vérifiée pour décoder les erreurs personnalisées.
Pour les causes et les actions recommandées, consultez Dépannage des paiements par smart contract.
Guides associés
- Intégration des smart contracts — présentation de l’intégration 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.
- Vérification des paiements et suivi des commandes — vérifiez les transactions et rapprochez les paiements des commandes.
- Dépannage — résolvez les erreurs courantes de portefeuilles et de paiements.