Yang dapat kamu terima
Hubungkan RPC dompet eksternal khusus lihat yang khusus untuk proyek, serta daemon. Setiap invoice mendapat subalamat. Daemon publik saja tidak dapat melihat pembayaranmu. Simpan dompet pembelanjaan di tempat lain; Wholly Crypto tidak dapat melakukan sweep XMR.
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
Setiap invoice mendapat subalamat dari dompet khusus lihat yang terhubung. Kamu membutuhkan koneksi RPC dompet dan bukti daemon. Daemon Monero publik saja tidak dapat menemukan pembayaran ke dompetmu.
Panduan penyiapan dompetPindahkan dana saat kamu siap
Kelola penarikan di dompet pembelanjaan Monero eksternalmu. Wholly Crypto tidak dapat mengirim atau melakukan sweep XMR otomatis. Cadangkan dompet itu secara terpisah dan jangan pernah menempelkan kunci pembelanjaan ke koneksi node publik.
Panduan dompet MoneroBisakah saya memakai penyiapan yang sama dengan Bitcoin atau Ethereum?
Tidak. Hubungkan dompet eksternal khusus lihat untuk proyek terlebih dahulu, lalu aktifkan XMR di toko. Lindungi akses ke RPC dompet: khusus lihat bukan berarti informasi transaksinya boleh menjadi publik.
Pemecahan masalah pembayaran
Periksa jaringan ini terlebih dahulu
Periksa koneksi dompet khusus lihat proyek dan progres sinkronisasinya serta daemon. Daemon publik yang sehat saja tidak dapat mengidentifikasi XMR masukmu.
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": "monero",
"asset_tickers": [
"XMR"
]
}
]
}'// 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": "monero",
"asset_tickers": [
"XMR"
]
}
]
}`;
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": "monero",
"asset_tickers": [
"XMR"
]
}
]
}
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": "monero",
"asset_tickers": [
"XMR"
]
}
]
}""".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))