Ana içeriğe geç

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)ETH0x2fceE245109Cf3c535489a6F52fe11b3BBd644FF
Ethereum Mainnet (1)USDT ERC-200xe4083ED0A1101615b9092E8cD2164e2f42B4571E
BNB Smart Chain (56)BNB0x2fceE245109Cf3c535489a6F52fe11b3BBd644FF
BNB Smart Chain (56)USDT BEP-200xe4083ED0A1101615b9092E8cD2164e2f42B4571E
TRON MainnetTRXTSK9sgBTjvZa6x2yW1bXNWqvQ57WsVUQ3W
TRON MainnetUSDT TRC-20TDuE6VueULx5oivQd4MsYr9DEhNMgXNfTm

Ö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ıkToken sözleşmesiOndalık basamak
EthereumETH (yerel)Yok18
EthereumUSDT ERC-200xdAC17F958D2ee523a2206206994597C13D831ec76
BNB Smart ChainBNB (yerel)Yok18
BNB Smart ChainUSDT BEP-200x55d398326f99059fF775485246999027B319795518
TRONTRX (yerel)Yok6 (SUN)
TRONUSDT TRC-20TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t6

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

ParametreTürAçıklama
amountuint256Varlığın en küçük birimleriyle talep edilen ödeme tutarı
buyerPaysCommissionboolİşlem komisyonunun müşterinin ödemesine eklenip eklenmeyeceğini veya üye işyerinin gelirinden düşülüp düşülmeyeceğini belirler

Dönüş değerleri

ParametreTürAçıklama
commissionuint256Varlığın en küçük birimleriyle işlem komisyonu
totalPayuint256Müş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

ParametreTürAçıklama
selleraddressÜye işyerinin alıcı cüzdanı
amountuint256Varlığın en küçük birimleriyle talep edilen ödeme tutarı
buyerPaysCommissionboolİşlem komisyonunu kimin karşılayacağını belirler
optionalCommissionWalletaddressİş 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 Chain0x0000000000000000000000000000000000000000
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
);
ParametreTürAçıklama
buyeraddressÖdemeyi başlatan cüzdan
selleraddressÜye işyerinin alıcı cüzdanı
commissionuint256Varlığın en küçük birimleriyle işlem komisyonu
totalPayuint256Alı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.

AyarMüşterinin ödediğiÜye işyerinin aldığı
trueTalep edilen tutar + işlem komisyonuTalep edilen tutar
falseTalep edilen tutarTalep 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:

HataAçıklama
SellerZeroAddressÜye işyerinin alıcı adresi sıfır
SellerIsBuyerAlıcının ve üye işyerinin cüzdan adresleri aynı
AmountIsZeroÖdeme tutarı sıfır
InvalidTotalAmountValidationYerel 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.