Neler alabilirsin
İkisi de ETH ve benzer adresler kullansa bile Ethereum ana ağını değil, Base'i kullan. Tam token sözleşmesini seç; köprülenmiş ve yerel sürümler farklı varlıklardır.
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
Base ve Ethereum benzer adresler kullanır ama ayrı ağlardır. Her faturanın seçilen zincirde ödeme alma adresi vardır. Yerel USDC ve köprülenmiş varyantlar farklı varlıklar olarak değerlendirilmelidir.
Cüzdan kurulum kılavuzuHazır olduğunda fonlarını taşı
Giden ücretler için Base'de ETH tut. Base yatırmalarını kabul eden hedefe aktarım ayarla ve asgarilerini incele. Yalnızca Ethereum yatırma yoluna göndermek fonları ağlar arasında taşımaz.
Otomatik bakiye aktarımı eğitimiBase entegrasyonu fonları Ethereum'a köprüler mi?
Hayır. Ödeme alma ve bakiye aktarımı Base'de kalır. Borsa dönüşümü isteğe bağlıdır; desteklenen Base yatırma yolu ve işlem piyasası gerektirir. İtibari para gelirleri otomatik bankaya değil, borsa hesabına gider.
Ödeme sorunlarını giderme
Önce bu ağı kontrol et
Ethereum'daki ETH Base ücretlerini ödeyemez. Yatırma ağı olarak Base'i kontrol et ve yerel USDC'yi köprülenmiş USDC varyantlarından ayır.
Ö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": "base",
"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": "base",
"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": "base",
"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": "base",
"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))