สิ่งที่รับได้
เชื่อม wallet RPC ภายนอกแบบดูอย่างเดียวเฉพาะโปรเจกต์ พร้อม daemon แต่ละใบแจ้งหนี้ได้ที่อยู่ย่อย daemon สาธารณะอย่างเดียวมองเห็นการชำระคุณไม่ได้ เก็บกระเป๋าใช้จ่ายที่อื่น Wholly Crypto รวบรวม XMR ไม่ได้
ตั้งค่าร้านของคุณ
- ติดตั้ง Wholly Crypto สร้างโปรเจกต์และร้าน และเก็บไฟล์สำรองกระเป๋าเป็นส่วนตัว
- ตรวจการเชื่อมต่อที่ใช้กับตัวสแกนได้ และเปิดเชนกับสินทรัพย์ที่ต้องการใน ร้าน → วิธีชำระ
- ตั้งจำนวนการยืนยันและวันหมดอายุ ทดสอบใบแจ้งหนี้ยอดเล็กและตรวจว่าชำระเสร็จก่อนดำเนินการตามคำสั่งซื้อ
เงินที่รับจะไปที่ใด
แต่ละใบแจ้งหนี้ได้ที่อยู่ย่อยจากกระเป๋า view-only ที่เชื่อมต่อ ต้องมีทั้งการเชื่อมต่อ wallet RPC และหลักฐานจาก daemon daemon Monero สาธารณะเพียงอย่างเดียวตรวจพบเงินเข้ากระเป๋าของคุณไม่ได้
คู่มือตั้งค่ากระเป๋าย้ายเงินเมื่อคุณพร้อม
จัดการถอนในกระเป๋า Monero ภายนอกที่ใช้จ่ายได้ Wholly Crypto ส่งหรือ sweep XMR อัตโนมัติไม่ได้ สำรองกระเป๋านั้นแยกต่างหาก และอย่าวาง spending key ในการเชื่อมต่อโหนดสาธารณะ
คู่มือกระเป๋า Moneroตั้งค่าแบบเดียวกับ Bitcoin หรือ Ethereum ได้ไหม?
ไม่ได้ ต้องเชื่อมกระเป๋า view-only ภายนอกสำหรับโปรเจกต์ก่อน แล้วค่อยเปิด XMR ในร้าน ป้องกันการเข้าถึง wallet RPC ด้วย ดูได้อย่างเดียวไม่ได้แปลว่าควรเปิดข้อมูลธุรกรรมให้สาธารณะ
แก้ปัญหาการชำระเงิน
ตรวจเครือข่ายนี้ก่อน
ตรวจการเชื่อมต่อกระเป๋า view-only ของโปรเจกต์และความคืบหน้าการซิงก์พร้อมกับ daemon daemon สาธารณะที่ปกติอย่างเดียวระบุ XMR ขาเข้าของคุณไม่ได้
การชำระหายไปหรือล่าช้า
เทียบเครือข่าย ที่อยู่ สินทรัพย์ และข้อมูลอ้างอิงที่จำเป็นให้ตรงใบแจ้งหนี้ ตรวจความพร้อมตัวสแกนและความคืบหน้าการยืนยัน อย่าขอให้จ่ายครั้งที่สองจนกว่าจะตรวจธุรกรรมแรกแล้ว
คู่มือรับเงินกู้คืนหรือรวมกระเป๋า
เก็บไฟล์สำรองส่วนตัวและรายละเอียดการสร้างที่อยู่ แอปกระเป๋าอื่นอาจไม่แสดงทุกที่อยู่รับเงิน การส่งและกู้คืนขึ้นกับเชนและรูปแบบกระเป๋า การนำเข้าคำกู้คืนอย่างเดียวไม่รับประกันทั้งสองอย่าง
สำรองและกู้คืนค่าธรรมเนียมและการตรวจสอบ
ค่าธรรมเนียมประมวลผลเริ่มต้นคือ 1% ของมูลค่าใบแจ้งหนี้ในเงินตราทั่วไป จ่ายจากเครดิตแยก ใช้อัตราที่กำหนดให้คุณ ค่าธรรมเนียมเครือข่ายและค่าเซิร์ฟเวอร์แยกต่างหาก
ผู้ให้บริการสาธารณะอาจหยุดทำงานหรือจำกัดอัตรา ธุรกรรมที่ส่งแล้วหรือการเปลี่ยนเส้นทางกลับไม่ใช่หลักฐานชำระ ใช้สถานะใบแจ้งหนี้ที่ตรวจสอบแล้วและการแจ้งเตือนที่ลงนาม
เครดิตประมวลผล API, IPN และ webhookเครื่องคำนวณอัตราแลกเปลี่ยน
แปลงจำนวนเงิน
เป็นค่าประมาณ ไม่ใช่ราคาเสนอชำระเงิน ไม่รวมค่าธรรมเนียมเครือข่าย ค่าธรรมเนียมศูนย์ซื้อขาย และส่วนต่างผู้ค้า
อัตรามาจากไหน?
ค่าประมาณคริปโตใช้ราคาสาธารณะ Kraken ในแคช และ Binance เมื่อมี บางราคา Binance ใช้ USDT อ้างอิง USD อัตราเงินตราทั่วไปมาจาก Frankfurter เป็นอัตราอ้างอิงรายวัน ไม่ใช่ราคาเสนอซื้อขายสด
สแนปช็อตรีเฟรชอัตโนมัติ ตรวจวันที่แหล่งข้อมูลใต้ผลลัพธ์ จำนวนที่กรอกอยู่ในเบราว์เซอร์ของคุณ การมีชื่อสินทรัพย์ไม่รับประกันว่ารองรับการชำระเงิน
Kraken · Binance · Frankfurter · ชื่อและไอคอนสินทรัพย์: CoinGecko
สร้างใบแจ้งหนี้ด้วย API
รันตัวอย่างเหล่านี้บนเซิร์ฟเวอร์คุณ แทนที่โฮสต์ API รหัสโปรเจกต์ และรหัสร้าน และเก็บข้อมูลรับรองเป็นส่วนตัว ยอดใช้สตริงทศนิยม
เปิดวิธีชำระในร้านก่อน การเลือกจำกัดวิธีที่เปิดใช้อยู่ ไม่ได้เพิ่มสินทรัพย์ หากไม่ตรงกับรายการใดจะใช้ค่าเริ่มต้นร้าน ตรวจวิธีชำระในคำตอบก่อนแสดงหน้าชำระเงิน
: "${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))