Neler alabilirsin
Ethereum ana ağını kullan. USDC ve USDT gibi doğrulanmış ERC-20 token'larını daha sonra taşırken her gönderim adresinde ETH gerekir. Kurtarma ifadesini MetaMask'e aktarmak yalnızca ilk hesabı gösterebilir.
Mağazanı kur
- Wholly Crypto'yu kur, proje ve mağaza oluştur, özel cüzdan yedeğini sakla.
- Tarayıcıyla uyumlu bağlantıları kontrol et; Mağaza → Ödeme yöntemleri'nde zinciri ve istediğin varlıkları etkinleştir.
- Onayları ve sona erme süresini ayarla. Küçük bir faturayı test et ve siparişleri karşılamadan önce ödemenin tamamlandığını doğrula.
Ödemelerin nereye gelir
Her fatura yeni ödeme alma adresi alır. Yedeğin türetilmiş anahtarları kapsar ancak kurtarma kelimelerini MetaMask'e aktarmak yalnızca ilk hesabı gösterebilir. Adres ve türetme ayrıntılarını da tut.
Cüzdan kurulum kılavuzuHazır olduğunda fonlarını taşı
Alınan ödemeleri tek hedefte toplamak için otomatik bakiye aktarımları kullan. Token tutan her adresin göndermek için ETH'ye ihtiyacı vardır. Proje tarafından fonlanan gas, sınırların dahilinde uygun adresleri destekleyebilir; boş, ödenmemiş fatura adresleri fonlanmaz.
Otomatik bakiye aktarımı eğitimiAynı adreste USDT ve USDC alabilir miyim?
Cüzdan ikisini de tutabilir ama her faturanın kendi ödeme yöntemleri ve tutarı vardır. Mağazada tam Ethereum sözleşmelerini etkinleştir. Yerine başka ağdaki aynı sembollü token'ı kullanma.
Ödeme sorunlarını giderme
Önce bu ağı kontrol et
Ethereum ana ağını ve tam token sözleşmesini kontrol et. Token bakiyesi kendi gas'ını ödeyemez: her gönderim adresinde Ethereum üzerinde ETH gerekir.
Ödeme eksik veya gecikmiş
Ağı, adresi, varlığı ve gereken referansı faturayla eşleştir. Tarayıcının hazır olup olmadığını ve onay ilerlemesini kontrol et. İlk işlemi kontrol etmeden ikinci ödeme isteme.
Ödeme alma kılavuzuCüzdanları geri yükle veya birleştir
Özel yedeğini ve türetme ayrıntılarını sakla. Farklı bir cüzdan uygulaması tüm ödeme alma adreslerini göstermeyebilir. Gönderim ve kurtarma zincire ve cüzdan biçimine bağlıdır; yalnızca kurtarma kelimelerini içe aktarmak ikisini de garanti etmez.
Yedekleme ve geri yüklemeÜcretler ve doğrulama
Varsayılan işlem ücreti, ayrı kredilerden ödenen fatura itibari para değerinin %1'idir. Sana atanan oran geçerlidir. Ağ ücretleri ve sunucu maliyetleri ayrıdır.
Herkese açık sağlayıcılarda kesinti veya hız sınırı olabilir. Gönderilmiş işlem veya dönüş yönlendirmesi ödeme kanıtı değildir. Doğrulanmış fatura durumunu ve imzalı bildirimleri kullan.
İşlem kredileri API, IPN ve webhook'larKur hesaplayıcı
Tutar dönüştür
Tahmindir, ödeme teklifi değildir. Ağ ücretleri, borsa ücretleri ve satıcı fiyat marjları dahil değildir.
Kurlar nereden geliyor?
Kripto tahminleri, önbelleğe alınmış herkese açık Kraken fiyatlarını ve mevcut olduğunda Binance'i kullanır. Bazı Binance fiyatları USD referansı olarak USDT kullanır. İtibari para kurları Frankfurter'dan gelir ve günlük referans kurlarıdır; canlı işlem teklifleri değildir.
Anlık görüntü otomatik yenilenir. Sonucun altındaki kaynak tarihlerini kontrol et. Girdiğin tutar tarayıcında kalır. Bir varlığın listelenmesi ödeme desteğini garanti etmez.
Kraken · Binance · Frankfurter · Varlık adları ve simgeleri: CoinGecko
API ile fatura oluştur
Bu örnekleri sunucunda çalıştır. API ana makinesini, proje kimliğini ve mağaza kimliğini değiştir; kimlik bilgisini gizli tut. Tutarlar ondalık dizelerdir.
Önce yöntemi mağazada etkinleştir. Seçim, etkin yöntemleri daraltır; varlık eklemez. Hiçbir şey eşleşmezse mağaza varsayılanları uygulanır. Ödeme sayfasını sunmadan önce dönen yöntemleri kontrol et.
: "${WHOLLY_TOKEN:?Set WHOLLY_TOKEN to your server-side API token}"
# Keep this key and the exact body for retries; use a new key for each new invoice.
curl --fail-with-body --max-time 30 \
--request POST \
--url "https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices" \
--header "Authorization: Bearer $WHOLLY_TOKEN" \
--header 'Idempotency-Key: order-1042-attempt-1' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "ethereum",
"asset_tickers": [
"ETH"
]
}
]
}'// Node.js 18+ · run on your server, never in browser code.
const token = process.env.WHOLLY_TOKEN;
if (!token) throw new Error("Set WHOLLY_TOKEN");
// Keep this key and the exact body for retries; use a new key for each new invoice.
const body = `{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "ethereum",
"asset_tickers": [
"ETH"
]
}
]
}`;
const response = await fetch("https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices", {
method: "POST",
headers: {
"Authorization": `Bearer ${token}`,
"Idempotency-Key": "order-1042-attempt-1",
"Content-Type": "application/json"
},
body,
redirect: "error",
signal: AbortSignal.timeout(30000)
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
console.log(await response.json());<?php
// PHP 8+ with the cURL extension; run on your server.
$token = getenv('WHOLLY_TOKEN');
if (!$token) { throw new RuntimeException('Set WHOLLY_TOKEN'); }
// Keep this key and the exact body for retries; use a new key for each new invoice.
$body = <<<'JSON'
{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "ethereum",
"asset_tickers": [
"ETH"
]
}
]
}
JSON;
$ch = curl_init("https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices");
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . $token, "Idempotency-Key: order-1042-attempt-1", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => $body,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) { throw new RuntimeException(curl_error($ch)); }
curl_close($ch);
if ($status < 200 || $status >= 300) { throw new RuntimeException("HTTP $status: $response"); }
print_r(json_decode($response, true, 512, JSON_THROW_ON_ERROR));# Python 3 · standard library; run on your server.
import json
import os
from urllib.request import Request, build_opener, HTTPRedirectHandler
class NoRedirect(HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, headers, newurl):
return None
# Keep this key and the exact body for retries; use a new key for each new invoice.
headers = {
"Idempotency-Key": "order-1042-attempt-1",
"Content-Type": "application/json"
}
headers["Authorization"] = "Bearer " + os.environ["WHOLLY_TOKEN"]
body = """{
"amount": "25.00",
"currency": "EUR",
"order_id": "order-1042",
"payment_methods": [
{
"chain_slug": "ethereum",
"asset_tickers": [
"ETH"
]
}
]
}""".encode("utf-8")
request = Request("https://api.example.com/v1/projects/YOUR_PROJECT_ID/stores/YOUR_STORE_ID/invoices",
method="POST", headers=headers, data=body)
# Non-2xx responses raise HTTPError. Do not retry writes with a new key.
with build_opener(NoRedirect()).open(request, timeout=30) as response:
print(json.load(response))