Akıllı sözleşme referansı
Bu referans, Ethereum, BNB Smart Chain ve TRON'daki Volet.com emanetçi olmayan ödemeleri için sözleşme adreslerini, token bilgilerini ve fonksiyon tanımlarını içerir.
Adım adım talimatlar için Ethereum ve BNB Smart Chain entegrasyonu veya TRON entegrasyonu sayfasına bakın.
Ödeme işlemcisi adresleri
Desteklenen her varlık, bir ödeme işlemcisi akıllı sözleşmesi kullanır.
| Ağ | Varlık | İşlemci sözleşmesi |
|---|---|---|
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 |
Ödeme işlemeden önce dağıtılmış sözleşme adreslerini ve ABI'yi Volet.com ile teyit edin. Diğer ağlar, varlıklar veya özel ödeme akışları için sözleşmeler farklı adresler ve arayüzler kullanabilir.
Token adresleri ve ondalık basamakları
| Ağ | Varlık | Token sözleşmesi | Ondalık basamak |
|---|---|---|---|
| Ethereum | ETH (yerel) | Yok | 18 |
| Ethereum | USDT ERC-20 | 0xdAC17F958D2ee523a2206206994597C13D831ec7 | 6 |
| BNB Smart Chain | BNB (yerel) | Yok | 18 |
| BNB Smart Chain | USDT BEP-20 | 0x55d398326f99059fF775485246999027B3197955 | 18 |
| TRON | TRX (yerel) | Yok | 6 (SUN) |
| TRON | USDT TRC-20 | TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t | 6 |
Akıllı sözleşmeye iletilen tüm tutarlar varlığın en küçük birimleriyle ifade edilmelidir.
- ETH ve BNB: Tutarları wei'ye dönüştürmek için
ethers.parseEther()kullanın. - EVM'de USDT: İlgili token'ın hassasiyetiyle
ethers.parseUnits(amount, tokenDecimals)kullanın. - TRX: SUN kullanın; 1 TRX = 1.000.000 SUN.
- TRON'da USDT: Token'ın tam sayı temel birimlerini kullanın; 1 USDT = 1.000.000 birim.
Ödeme tutarlarını hesaplarken kayan noktalı aritmetik kullanmayın.
Ödeme sözleşmesi arayüzü
Standart ödeme işlemcisi iki ana fonksiyon sunar: previewPayment() ve 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;
}
Bu arayüz, entegrasyon kılavuzlarında kullanılan ödeme fonksiyonlarını tanımlar. Olayları çözümlerken veya sözleşmeye özgü hataları işlerken dağıtılmış sözleşmenin doğrulanmış eksiksiz ABI'sini kullanın.
previewPayment()
İşlem komisyonunu ve müşterinin ödemesi gereken toplam tutarı hesaplar.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
amount | uint256 | Varlığın en küçük birimleriyle talep edilen ödeme tutarı |
buyerPaysCommission | bool | İşlem komisyonunun müşterinin ödemesine eklenip eklenmeyeceğini veya üye işyerinin gelirinden düşülüp düşülmeyeceğini belirler |
Dönüş değerleri
| Parametre | Tür | Açıklama |
|---|---|---|
commission | uint256 | Varlığın en küçük birimleriyle işlem komisyonu |
totalPay | uint256 | Müşterinin ödemesi gereken toplam tutar, varlığın en küçük birimleriyle |
Yerel varlıkla yapılan ödemelerde totalPay değerini EVM'de işlemin value alanı, TRON'da ise callValue olarak iletin.
USDT ödemelerinde müşterinin token bakiyesi ve işlemciye verilen harcama izni (allowance) en az totalPay kadar olmalıdır.
Her zaman previewPayment() tarafından döndürülen değerleri kullanın. İşlem komisyonunu elle hesaplamayın.
transfer()
Ödemeyi gerçekleştirir ve fonları sözleşmenin komisyon ayarlarına göre dağıtır.
Parametreler
| Parametre | Tür | Açıklama |
|---|---|---|
seller | address | Üye işyerinin alıcı cüzdanı |
amount | uint256 | Varlığın en küçük birimleriyle talep edilen ödeme tutarı |
buyerPaysCommission | bool | İşlem komisyonunu kimin karşılayacağını belirler |
optionalCommissionWallet | address | İş ortağının komisyon cüzdanı veya geçerli değilse ağın sıfır adresi |
Sıfır adresler
| Ağ | Sıfır adres |
|---|---|
| Ethereum / BNB Smart Chain | 0x0000000000000000000000000000000000000000 |
| TRON (Base58) | T9yD14Nj9j7xAB4dbGeiX9h8unkKHxuWwb |
transfer() fonksiyonu orderId parametresi kabul etmez. Her ödeme işleminin hash'ini (txid) ilgili siparişle arka ucunuz ilişkilendirmelidir.
İşlem eşleştirme ve mükerrer ödemeyi önleme için Ödeme doğrulama ve sipariş takibi sayfasına bakın.
Ödeme olayı
Ödeme işlemcileri, ödemeyi üye işyerine dağıttıktan sonra PaymentProcessed olayını yayınlar.
event PaymentProcessed(
address indexed buyer,
address indexed seller,
uint256 commission,
uint256 totalPay
);
| Parametre | Tür | Açıklama |
|---|---|---|
buyer | address | Ödemeyi başlatan cüzdan |
seller | address | Üye işyerinin alıcı cüzdanı |
commission | uint256 | Varlığın en küçük birimleriyle işlem komisyonu |
totalPay | uint256 | Alıcının ödediği toplam tutar, varlığın en küçük birimleriyle |
Üye işyerinin aldığı tutar:
receivedAmount = totalPay - commission
Bu formül, buyerPaysCommission ayarından bağımsız olarak geçerlidir.
Yerel ETH, BNB ve TRX ödemelerinde, gerçek ve eşleşen bir PaymentProcessed olayı içeren başarılı ve kesinleşmiş bir işlem, belgelenmiş işlemci uygulamasına göre üye işyerine yapılan ödemeyi doğrular.
USDT ödemelerinde ayrıca token'ın, ödeme işlemcisinden üye işyerine beklenen tutardaki Transfer olayını doğrulayın.
Olayı yayınlayan sözleşme adresini her zaman onaylı işlemci adresiyle karşılaştırın.
Uygulama örnekleri için Ödeme doğrulama ve sipariş takibi sayfasına bakın.
İşlem komisyonları
buyerPaysCommission parametresi, işlem komisyonunun nasıl uygulanacağını belirler.
| Ayar | Müşterinin ödediği | Üye işyerinin aldığı |
|---|---|---|
true | Talep edilen tutar + işlem komisyonu | Talep edilen tutar |
false | Talep edilen tutar | Talep edilen tutar − işlem komisyonu |
Gerçek işlem komisyonu ve toplam ödeme tutarı, dağıtılmış sözleşmeye göre previewPayment() tarafından hesaplanır.
Blokzincir ağ ücretleri işlem komisyonundan ayrıdır:
- Ethereum / BNB Smart Chain: ETH veya BNB ile ödenen gas ücretleri.
- TRON: TRX ile ödenebilen Energy ve Bandwidth maliyetleri.
Hesaba aktarım
Emanetçi olmayan ödemelerde akıllı sözleşme fonları doğrudan üye işyerinin alıcı cüzdanına aktarır.
Fonlar bir Volet.com hesabına yatırılmaz ve otomatik fiat dönüştürme bu ödeme akışının parçası değildir.
Sözleşme hataları
Ödeme işlemcisi aşağıdaki hataları döndürebilir:
| Hata | Açıklama |
|---|---|
SellerZeroAddress | Üye işyerinin alıcı adresi sıfır |
SellerIsBuyer | Alıcının ve üye işyerinin cüzdan adresleri aynı |
AmountIsZero | Ödeme tutarı sıfır |
InvalidTotalAmountValidation | Yerel varlığın value veya callValue değeri beklenen toplamla eşleşmiyor |
CommissionExceedsAmount | İşlem komisyonu, düşülebilecek tutarı aşıyor |
SellerNotWhitelisted | Üye işyeri cüzdanı dağıtılmış sözleşme tarafından yetkilendirilmemiş olabilir |
EnforcedPause | Ödeme işleme duraklatıldı |
Kullanılabilir hatalar ve tam davranışları dağıtılmış sözleşmeye bağlıdır. Özel hataları çözümlemek için sözleşmenin doğrulanmış ABI'sini kullanın.
Nedenler ve önerilen işlemler için Akıllı sözleşme ödemelerinde sorun giderme sayfasına bakın.
İlgili kılavuzlar
- Akıllı sözleşme entegrasyonu — emanetçi olmayan ödeme entegrasyonuna genel bakış.
- Ethereum ve BNB Smart Chain entegrasyonu — ETH, BNB ve USDT kabul edin.
- TRON entegrasyonu — TRX ve USDT TRC-20 kabul edin.
- Ödeme doğrulama ve sipariş takibi — işlemleri doğrulayın ve ödemeleri siparişlerle eşleştirin.
- Sorun giderme — sık karşılaşılan cüzdan ve ödeme hatalarını çözün.