Yang dapat kamu terima
Gunakan Polygon PoS dan POL untuk biaya. Ethereum dan Polygon zkEVM tidak dapat dipertukarkan dengan jaringan ini. Periksa kontrak token yang tepat, bukan hanya ticker-nya.
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 penyiapan dompetPindahkan dana saat kamu siap
Pengiriman manual dan sweep otomatis mendukung koin native serta token ERC-20 terverifikasi. Setiap sumber token membutuhkan koin native jaringan ini untuk gas. Gas yang didanai proyek dapat menanggung sumber yang memenuhi syarat dalam batasmu.
Tutorial sweep otomatisPemecahan masalah pembayaran
Periksa jaringan ini terlebih dahulu
Pilih Polygon PoS, bukan Polygon zkEVM. Biaya keluar memakai POL di PoS. Kontrak token Ethereum tidak otomatis merupakan aset yang sama di sini.
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": "polygon",
"asset_tickers": [
"POL"
]
}
]
}'// 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": "polygon",
"asset_tickers": [
"POL"
]
}
]
}`;
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": "polygon",
"asset_tickers": [
"POL"
]
}
]
}
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": "polygon",
"asset_tickers": [
"POL"
]
}
]
}""".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))