Smart-Contract-Referenz
Diese Referenz enthält Contract-Adressen, Token-Informationen und Funktionsdefinitionen für Non-Custodial-Zahlungen von Volet.com auf Ethereum, BNB Smart Chain und TRON.
Schritt-für-Schritt-Anleitungen finden Sie unter Ethereum- und BNB-Smart-Chain-Integration und TRON-Integration.
Adressen der Zahlungsprozessoren
Jedes unterstützte Asset nutzt einen eigenen Smart Contract als Zahlungsprozessor.
| Netzwerk | Asset | Prozessor-Contract |
|---|---|---|
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 |
Bestätigen Sie die Adressen der bereitgestellten Contracts und die ABI mit Volet.com, bevor Sie Zahlungen abwickeln. Contracts für andere Netzwerke, Assets oder individuelle Zahlungsabläufe können andere Adressen und Schnittstellen verwenden.
Token-Adressen und Decimals
| Netzwerk | Asset | Token-Contract | Decimals |
|---|---|---|---|
| Ethereum | ETH (nativ) | – | 18 |
| Ethereum | USDT ERC-20 | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 6 |
| BNB Smart Chain | BNB (nativ) | – | 18 |
| BNB Smart Chain | USDT BEP-20 | 0x55d398326f99059fF775485246999027B3197955 | 18 |
| TRON | TRX (nativ) | – | 6 (SUN) |
| TRON | USDT TRC-20 | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | 6 |
Alle Beträge für den Smart Contract müssen in den kleinsten Einheiten des Assets angegeben werden.
- ETH und BNB: Rechnen Sie Beträge mit
ethers.parseEther()in Wei um. - USDT auf EVM: Verwenden Sie
ethers.parseUnits(amount, tokenDecimals)mit der Genauigkeit des jeweiligen Tokens. - TRX: Verwenden Sie SUN, wobei 1 TRX = 1.000.000 SUN.
- USDT auf TRON: Verwenden Sie ganzzahlige Basiseinheiten des Tokens, wobei 1 USDT = 1.000.000 Einheiten.
Berechnen Sie Zahlungsbeträge nicht mit Gleitkommaarithmetik.
Schnittstelle des Zahlungs-Contracts
Der Standard-Zahlungsprozessor bietet zwei Hauptfunktionen: previewPayment() und 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;
}
Diese Schnittstelle beschreibt die Zahlungsfunktionen, die in den Integrationsanleitungen verwendet werden. Verwenden Sie zum Dekodieren von Events oder zur Behandlung Contract-spezifischer Fehler die vollständige verifizierte ABI des bereitgestellten Contracts.
previewPayment()
Berechnet die Bearbeitungsgebühr und den Gesamtbetrag, den der Kunde zahlen muss.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
amount | uint256 | Angeforderter Zahlungsbetrag in den kleinsten Einheiten des Assets |
buyerPaysCommission | bool | Legt fest, ob die Bearbeitungsgebühr zur Zahlung des Kunden addiert oder vom Erlös des Händlers abgezogen wird |
Rückgabewerte
| Parameter | Typ | Beschreibung |
|---|---|---|
commission | uint256 | Bearbeitungsgebühr in den kleinsten Einheiten des Assets |
totalPay | uint256 | Gesamtbetrag, den der Kunde zahlen muss, in den kleinsten Einheiten des Assets |
Übergeben Sie bei Zahlungen im nativen Asset totalPay als value der Transaktion auf EVM bzw. als callValue auf TRON.
Bei USDT-Zahlungen müssen das Token-Guthaben des Kunden und die Allowance für den Prozessor mindestens totalPay betragen.
Verwenden Sie immer die von previewPayment() zurückgegebenen Werte. Berechnen Sie die Bearbeitungsgebühr nicht selbst.
transfer()
Führt die Zahlung aus und verteilt die Gelder gemäß den Gebühreneinstellungen des Contracts.
Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
seller | address | Empfangs-Wallet des Händlers |
amount | uint256 | Angeforderter Zahlungsbetrag in den kleinsten Einheiten des Assets |
buyerPaysCommission | bool | Legt fest, wer die Bearbeitungsgebühr trägt |
optionalCommissionWallet | address | Provisions-Wallet eines Partners oder die Nulladresse des Netzwerks, falls nicht zutreffend |
Nulladressen
| Netzwerk | Nulladresse |
|---|---|
| Ethereum / BNB Smart Chain | 0x0000000000000000000000000000000000000000 |
| TRON (Base58) | T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb |
Die Funktion transfer() akzeptiert keinen Parameter orderId. Ihr Backend muss den Hash jeder Zahlungstransaktion (txid) der zugehörigen Bestellung zuordnen.
Zur Zuordnung von Transaktionen und zur Vermeidung doppelter Zahlungen siehe Zahlungsprüfung und Bestellverfolgung.
Zahlungs-Event
Die Zahlungsprozessoren lösen das Event PaymentProcessed aus, nachdem die Zahlung an den Händler verteilt wurde.
event PaymentProcessed(
address indexed buyer,
address indexed seller,
uint256 commission,
uint256 totalPay
);
| Parameter | Typ | Beschreibung |
|---|---|---|
buyer | address | Wallet, das die Zahlung ausgelöst hat |
seller | address | Empfangs-Wallet des Händlers |
commission | uint256 | Bearbeitungsgebühr in den kleinsten Einheiten des Assets |
totalPay | uint256 | Vom Käufer gezahlter Gesamtbetrag in den kleinsten Einheiten des Assets |
Der vom Händler erhaltene Betrag ist:
receivedAmount = totalPay - commission
Diese Formel gilt unabhängig von der Einstellung buyerPaysCommission.
Bei Zahlungen in nativem ETH, BNB und TRX bestätigt eine erfolgreiche, finalisierte Transaktion mit einem echten, übereinstimmenden PaymentProcessed-Event die Zahlung an den Händler gemäß der dokumentierten Prozessor-Implementierung.
Prüfen Sie bei USDT-Zahlungen zusätzlich das Transfer-Event des Tokens vom Zahlungsprozessor an den Händler über den erwarteten Betrag.
Gleichen Sie die Adresse des Contracts, der das Event ausgelöst hat, immer mit der freigegebenen Prozessor-Adresse ab.
Implementierungsbeispiele finden Sie unter Zahlungsprüfung und Bestellverfolgung.
Bearbeitungsgebühren
Der Parameter buyerPaysCommission legt fest, wie die Bearbeitungsgebühr angewendet wird.
| Einstellung | Kunde zahlt | Händler erhält |
|---|---|---|
true | Angeforderter Betrag + Bearbeitungsgebühr | Angeforderter Betrag |
false | Angeforderter Betrag | Angeforderter Betrag − Bearbeitungsgebühr |
Die tatsächliche Bearbeitungsgebühr und den Gesamtbetrag der Zahlung berechnet previewPayment() gemäß dem bereitgestellten Contract.
Netzwerkgebühren der Blockchain fallen zusätzlich zur Bearbeitungsgebühr an:
- Ethereum / BNB Smart Chain: Gas-Gebühren in ETH oder BNB.
- TRON: Energy- und Bandwidth-Kosten, die gegebenenfalls in TRX bezahlt werden.
Abrechnung
Bei Non-Custodial-Zahlungen überweist der Smart Contract die Gelder direkt auf das Empfangs-Wallet des Händlers.
Die Gelder werden keinem Volet.com-Konto gutgeschrieben, und eine automatische Umrechnung in Fiat ist nicht Teil dieses Zahlungsablaufs.
Contract-Fehler
Der Zahlungsprozessor kann folgende Fehler zurückgeben:
| Fehler | Beschreibung |
|---|---|
SellerZeroAddress | Die Empfangsadresse des Händlers ist die Nulladresse |
SellerIsBuyer | Wallet-Adressen von Käufer und Händler sind identisch |
AmountIsZero | Der Zahlungsbetrag ist null |
InvalidTotalAmountValidation | value oder callValue des nativen Assets entspricht nicht dem erwarteten Gesamtbetrag |
CommissionExceedsAmount | Die Bearbeitungsgebühr übersteigt den Betrag, von dem sie abgezogen werden kann |
SellerNotWhitelisted | Der bereitgestellte Contract hat das Händler-Wallet möglicherweise nicht freigeschaltet |
EnforcedPause | Die Zahlungsabwicklung wurde pausiert |
Welche Fehler verfügbar sind und wie sie sich genau verhalten, hängt vom bereitgestellten Contract ab. Dekodieren Sie benutzerdefinierte Fehler mit seiner verifizierten ABI.
Ursachen und empfohlene Maßnahmen finden Sie unter Fehlerbehebung bei Smart-Contract-Zahlungen.
Weitere Anleitungen
- Smart-Contract-Integration – Überblick über die Non-Custodial-Zahlungsintegration.
- Ethereum- und BNB-Smart-Chain-Integration – ETH, BNB und USDT annehmen.
- TRON-Integration – TRX und USDT TRC-20 annehmen.
- Zahlungsprüfung und Bestellverfolgung – Transaktionen prüfen und Zahlungen Bestellungen zuordnen.
- Fehlerbehebung – häufige Wallet- und Zahlungsfehler beheben.