Yang dapat kamu terima
Hanya NEAR native. Deteksi memeriksa receipt yang berhasil, bukan sekadar transaksi yang diajukan. Simpan detail akun dan derivasi dalam cadangan dompetmu. Token NEP tidak diterima.
Siapkan tokomu
- Pasang Wholly Crypto, buat proyek dan toko, lalu simpan cadangan dompet secara privat.
- Periksa koneksi yang kompatibel dengan pemindai dan aktifkan chain serta aset yang dimaksud di Toko → Metode pembayaran.
- Atur konfirmasi dan masa berlaku. Uji invoice kecil dan verifikasi penyelesaian sebelum memenuhi pesanan.
Tempat pembayaranmu diterima
Invoice memakai alamat penerima terpisah. Simpan cadangan lengkap, daftar alamat, dan detail derivasi; dompet yang diimpor mungkin tidak langsung menemukan setiap alamat invoice.
Panduan penerimaanPindahkan dana saat kamu siap
Pengiriman manual dan sweep otomatis mendukung koin native. Sediakan dana yang cukup untuk biaya serta persyaratan cadangan jaringan atau penyimpanan. Dukungan penerimaan saja tidak membuktikan bahwa penyedia dapat mengajukan transfer.
Tutorial sweep otomatisPemecahan masalah pembayaran
Periksa jaringan ini terlebih dahulu
Hanya receipt transfer native yang berhasil yang dihitung. Transaksi yang diajukan, receipt gagal, atau panggilan kontrak token bukan bukti invoice NEAR telah dibayar.
Pembayaran tidak ditemukan atau tertunda
Cocokkan jaringan, alamat, aset, dan referensi yang diwajibkan dengan invoice. Periksa kesiapan pemindai dan progres konfirmasi. Jangan meminta pembayaran kedua sebelum memeriksa transaksi pertama.
Panduan penerimaanPulihkan atau gabungkan dompet
Simpan cadangan privat dan detail derivasimu. Aplikasi dompet lain mungkin tidak menampilkan setiap alamat penerima. Pengiriman dan pemulihan bergantung pada chain serta format dompet; keduanya tidak dijamin hanya dengan mengimpor kata pemulihan.
Pencadangan & pemulihanBiaya dan verifikasi
Biaya pemrosesan bawaan adalah 1% dari nilai fiat invoice, dibayar dari kredit terpisah. Tarif yang ditetapkan untukmu berlaku. Biaya jaringan dan server terpisah.
Penyedia publik dapat mengalami gangguan atau batas laju. Transaksi yang diajukan atau pengalihan kembali bukan bukti pembayaran. Gunakan status invoice terverifikasi dan notifikasi bertanda tangan.
Kredit pemrosesan API, IPN & webhookKalkulator kurs
Konversikan jumlah
Perkiraan, bukan kuotasi pembayaran. Biaya jaringan, biaya bursa, dan spread merchant tidak termasuk.
Dari mana kurs berasal?
Perkiraan kripto menggunakan harga publik Kraken dalam cache, dengan Binance jika tersedia. Beberapa harga Binance menggunakan USDT sebagai acuan USD. Kurs fiat berasal dari Frankfurter dan merupakan kurs referensi harian, bukan kuotasi perdagangan langsung.
Snapshot diperbarui otomatis. Periksa tanggal sumber di bawah hasilmu. Jumlah yang kamu masukkan tetap di browsermu. Pencantuman aset tidak menjamin dukungan pembayaran.
Kraken · Binance · Frankfurter · Nama & ikon aset: CoinGecko
Buat invoice dengan API
Jalankan contoh ini di servermu. Ganti host API, ID proyek, dan ID toko, serta jaga kerahasiaan kredensial. Jumlah berupa string desimal.
Aktifkan metode di toko terlebih dahulu. Pemilihan mempersempit metode yang diaktifkan; bukan menambahkan aset. Jika tidak ada yang cocok, pengaturan bawaan toko berlaku. Periksa metode yang dikembalikan sebelum menampilkan checkout.
: "${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": "near",
"asset_tickers": [
"NEAR"
]
}
]
}'// 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": "near",
"asset_tickers": [
"NEAR"
]
}
]
}`;
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": "near",
"asset_tickers": [
"NEAR"
]
}
]
}
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": "near",
"asset_tickers": [
"NEAR"
]
}
]
}""".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))