SDK PHP
PHP 7.4+Tambahkan pembayaran kripto ke aplikasi PHP-mu dengan Composer.
composer require whollycrypto/php-sdkMULAI
Instal, terima pembayaran, dan rawat servermu.
Gunakan VPS Linux baru dengan akses root, bukan server situs web/database yang sudah ada. Tidak memerlukan Docker, compiler, atau node blockchain.
| VPS | Minimum Penggunaan ringan | Direkomendasikan |
|---|---|---|
| CPU | 1 vCPU | 2 vCPU |
| RAM | 2 GB | 4 GB |
| SSD | 20 GB | 60 GB |
Spesifikasi minimum adalah titik awal penggunaan ringan untuk image Ubuntu/Debian minimal, bukan jaminan performa. Kapasitas disk mencakup Linux; sisakan setidaknya 3 GiB sebelum penyiapan, ditambah ruang untuk pembaruan, riwayat, dan cadangan.
Penginstal native memerlukan x86-64, systemd 247+, dan Python 3.9+. ARM64 dan Alpine/OpenRC tidak termasuk.
Pilih rilis yang masih dipelihara vendornya. Persyaratan OS yang lebih tinggi harus diutamakan: openSUSE Leap 16 memerlukan ruang disk lebih dari 40 GB.
Lebih banyak blockchain dan faktur bersamaan mungkin memerlukan lebih banyak CPU dan RAM. VPS yang lebih besar tidak menghapus kuota RPC. Alur penyiapan memiliki pengujian otomatis; pengujian lengkap pada VPS baru belum selesai untuk setiap distribusi.
Arahkan nama host bawaan berikut ke VPS-mu, atau pilih nama sendiri:
merchant.example.com: konsolpay.example.com: checkoutapi.example.com: APIGunakan catatan DNS-only selama penyiapan. Buka TCP 80/443 di kedua firewall dan pastikan SSH tetap bisa diakses. Jangan pernah membuka PostgreSQL atau aplikasi ke publik melalui port 5432/8080.
bash <(curl -fsSL https://releases.whollycrypto.com/setup_wholly.sh)Penyiapan memverifikasi unduhan serta mengonfigurasi PostgreSQL, Nginx, HTTPS, dan layanan. Lebih suka container? Lihat instalasi Docker opsional.
Perlu rilis tertentu? Pada VPS baru, tambahkan --version 7.8.1 untuk menginstal versi bertanda tangan tersebut secara persis. Tanpanya, penyiapan menggunakan rilis stabil terbaru.
Pelanjutan mempertahankan rilis yang dipilih dan langkah yang sudah selesai, termasuk saat memakai cadangan GitHub. Pelanjutan tidak pernah menurunkan versi instalasi yang sudah ada.
Periksa penginstal. Tambahkan --check ke perintah untuk memeriksa kompatibilitas tanpa menginstal, atau --help untuk melihat opsi.
Lanjutkan progres tersimpan tanpa mengganti kunci atau pengaturan:
bash <(curl -fsSL https://releases.whollycrypto.com/setup_wholly.sh) --resumeDomain dasar tambahan bisa menggunakan nama layanan yang sama. Semua catatan IPv6 juga harus mengarah ke VPS ini. Aktifkan proxy Cloudflare hanya setelah validasi domain.
Kode QR meminta seluruh jumlah yang belum dibayar. Toleransi hanya menerima kekurangan pembayaran; persyaratan konfirmasi tetap berlaku.
Kuotasi stablecoin baru yang dikenali dibulatkan ke atas: 1.321 USDC → 1.33 USDC, bahkan dengan toleransi nol. Minimum: 0.01 token.
Faktur, saldo, dan sisa pembayaran parsial yang sudah ada tetap presisi. Token lain/kustom mempertahankan presisi normal.
Pendaftaran admin otomatis mendaftarkan akun kreditmu menggunakan emailmu, dengan kredit selamat datang satu kali senilai 10 USD yang setara. Tidak memerlukan kode aktivasi.
Buat faktur. Aktivasi yang tertunda dicoba lagi secara otomatis; penyambungan ulang tidak pernah memberikan kredit lagi.
Login Basic Auth-mu disimpan di /root/whollycrypto/config/setup-credentials.txt. Login ini terpisah dari email/kata sandi konsol.
Proyek baru mewarisi mata uang dan zona waktu bawaan sistem; toko menggunakan mata uang proyek. Zona waktu akun yang sudah ada dikelola secara terpisah di Pengaturan → Akun.
whollycrypto welcome menampilkan URL konsolmu.
Instalasi baru mulai 7.0.0 memilih mode saat menyiapkan admin pertama. Pilihan ini tidak bisa dibatalkan; mengganti mode memerlukan instalasi baru. Instalasi sebelum versi 7 tetap dalam mode merchant, bahkan tanpa administrator.
Merchant: jalankan proyek dan tokomu sendiri. Operator: hosting bisnis merchant terpisah dalam satu instalasi dan kenakan biaya pemrosesan prabayarmu sendiri. Bisnismu sendiri termasuk tanpa biaya operator internal.
Penyiapan operator meminta alamat keempat, seperti operator.example.com, serta nama pengguna dan kata sandi Basic Auth-nya sendiri. Pilih labelmu, arahkan DNS ke VPS, periksa DNS, dan aktifkan HTTPS. Panel langsung terbuka di alamat tersebut. Alamat merchant, checkout, dan API-mu tetap terpisah.
Gunakan login Basic Auth operator yang baru, lalu email/kata sandi administratormu. Basic Auth merchant tetap sama. Penyiapan bisa dilanjutkan setelah kesalahan DNS atau sertifikat. Operator yang memperbarui dari 7.0.0 juga menyelesaikan langkah ini; alamat aktif yang sudah ada tetap tersedia.
Dengan tarif 3%, faktur 100 EUR memakai kredit merchant 3 EUR. Jika mata uang kreditnya berbeda, kurs fiat saat pembuatan disimpan bersama biaya.
Operator membayar biaya instalasi Wholly Crypto normal secara terpisah. Dana pelanggan tidak dibagi on-chain. Pembelian kredit tidak dikenai biaya lagi.
Hanya penyelesaian yang diverifikasi otomatis yang mengkreditkan isi ulang. Membuka checkout atau menerima faktur secara manual tidak mengkreditkannya. Pembatalan membuat entri buku besar; isi ulang yang dibatalkan lalu kembali memerlukan tinjauan operator.
Kredit merchant yang dihosting yang menipis menjeda IPN, webhook, sweep, serta pembuatan proyek/toko baru. Faktur pelanggan yang sudah ada dan penerimaan pembayaran tetap berjalan. Kredit instalasi yang menipis dapat menjeda otomatisasi di seluruh bisnis yang dihosting. Menonaktifkan merchant juga memblokir login dan faktur baru, sementara pembayaran lama tetap dipantau.
Ini adalah isolasi pada tingkat aplikasi, bukan VPS terpisah untuk setiap merchant. Merchant tidak bisa mengakses proyek, dompet, kredensial API, bursa, atau kredit satu sama lain. Administrator server bisa mengakses kunci hot wallet yang dihosting. Beri tahu merchant sebelum mendaftar; gunakan hosting tepercaya, cadangan independen, dan kapasitas yang sesuai untuk beban kerja bersama.
Tersedia dalam mode Operator mulai 7.1.0.
Mulai 7.2.0, Dompet mengelola saldo penerimaan, alamat, dan cadangan; Sweep menangani pengiriman dan aturan otomatis. Sisakan ETH untuk biaya token. Isi ulang merchant melacak pembelian mereka. Kredit di header membayar biaya instalasi secara terpisah. Bisnis saya membuka konsolmu sendiri di tab baru.
Buka Keuangan untuk biaya yang diperoleh, biaya instalasi terverifikasi, perkiraan margin, dan kredit merchant saat ini. Filter berdasarkan tanggal, merchant, atau mata uang pelaporan; ekspor CSV.
Laporan mengelompokkan faktur berdasarkan penyelesaian pertama dan mencerminkan pembatalan biaya terbarunya. Saldo prabayar bukan pendapatan. Biaya bisnis sendiri tetap terpisah. Biaya tertunda atau kurs yang tidak tersedia membuat margin terkait tidak tersedia. Jumlah yang dikonversi menggunakan kurs fiat terkini dalam cache; biaya gas dan operasional tidak termasuk.
Tambahkan merchant membuat undangan. Mulai 7.3.0, pilih kredit awal gratis dalam mata uang kredit merchant; nol diperbolehkan. Ini tidak mengisi ulang saldo operatormu. Kirim undangan melalui email dicentang secara bawaan.
Konfigurasikan penyedia SMTP-mu di Pengaturan → Email undangan terlebih dahulu, menggunakan TLS atau STARTTLS. Uji koneksi tidak mengirim email. Sebagai alternatif, hapus centang email dan bagikan tautannya secara pribadi. Kegagalan email tidak menghapus akun atau kredit; jangan membuat merchant yang sama lagi.
Untuk tautan lain atau reset kata sandi, buka Merchant → Kelola → Akun pengguna. Penerimaan oleh SMTP tidak menjamin email sampai ke kotak masuk. Bagikan Basic Auth merchant secara terpisah, jangan pernah kredensial operator.
Undangan berlaku 48 jam; reset berlaku satu jam. Masing-masing hanya bisa digunakan sekali. Ganti atau cabut tautan dari layar yang sama. Reset mengakhiri sesi yang ada tetapi tetap mengaktifkan 2FA. Basic Auth merchant tetap diperlukan.
Otomatiskan merchant yang dihosting dengan SDK 2.6.0 dan Wholly Crypto 7.4.0+. Aktifkan Operator → Pengaturan → API Operator, lalu buat kunci sisi server dengan cakupan izin yang dibatasi.
Buat akun langsung dengan kata sandi atau kirim undangan. Kelola pengguna, proyek, toko, biaya, dan kredit prabayar lokal; baca laporan dan berlangganan peristiwa siklus hidup bertanda tangan. Persetujuan kustodi saat login pertama, 2FA, dan isolasi tenant tetap berlaku.
Setiap penulisan memerlukan kunci idempotensi yang disimpan. Pemberian kredit adalah penyesuaian akun lokal, bukan isi ulang instalasi. Rahasia dompet, pengiriman dana, dan konfigurasi server tidak termasuk dalam API ini.
Gunakan api.your-domain.com/v1/operator. Simpan kunci Operator di backend-mu, jangan pernah di browser atau bersama merchant yang dihosting.
Pengaturan → Token memuat 250 token terlebih dahulu, lalu sisa katalog.
Proyek → Dompet → Cadangkan semua mengekspor TXT atau HTML offline yang dapat dicari dengan kode QR. Keduanya menampilkan kunci dan frasa pemulihan. Simpan salinan pribadi di luar server; jangan pernah membagikan atau mengunggahnya.
Root bisa mengakses kunci. Panduan pemulihan dompet menjelaskan alamat faktur, gas native, serta cadangan Monero/Lightning eksternal.
Pengaturan → Buku alamat: simpan blockchain/alamat. Koin native dan token CoinGecko yang cocok muncul otomatis. Hanya baca, dikelola admin; penerimaan di checkout tetap sama.
Pembaca token mencakup 22 blockchain. Saldo privat dan lapisan Bitcoin/CashTokens/Kaspa memerlukan akses atau pengindeks terpisah. Pembacaan yang gagal menampilkan kesalahan, bukan nol.
Kumpulkan saldo faktur ke dompet lain dengan pengiriman manual atau sweep otomatis. Transfer token juga memerlukan koin native blockchain tersebut untuk biaya.
Harga tidak tersedia berkaitan dengan kurs, bukan saldo.
Jaringan/desimal diperiksa. Harga yang berlaku untuk seluruh proyek tidak mengubah kuotasi yang sudah ada. Kecocokan katalog saja tidak mengaktifkan checkout.
DEX Screener memerlukan pool dengan kontrak yang sama persis, likuiditas $10,000, dan transaksi perdagangan dalam satu jam terakhir. Kurs diperbarui setiap menit; kurs yang gagal diperoleh atau berusia lima menit memblokir kuotasi baru.
Harga DEX bisa dimanipulasi; pemeriksaan bukan audit. Gunakan token ERC-20 standar atau SPL klasik yang tepercaya. Token-2022/ekstensi tidak didukung. Tanpa pool yang sesuai, gunakan harga tetap.
Pengaturan → Sistem → Pengaturan regional bawaan menetapkan mata uang/zona waktu proyek baru dan zona waktu akun baru. Pengaturan serta kredit yang sudah ada tetap sama; mata uang dasbor tetap bisa diganti.
Zona waktu pribadi: Pengaturan → Akun → Edit pengguna.
Gunakan Metode pembayaran → Pilih untuk faktur ini untuk membatasi blockchain/token yang diterima. Semua metode pembayaran toko mempertahankan pilihan bawaan.
Uji pembayaran kecil pada setiap metode sebelum mulai digunakan secara langsung. Periksa faktur sebelum memenuhi pesanan: URL kembali bukan bukti pembayaran.
Untuk integrasi, verifikasi IPN/webhook bertanda tangan dan konfirmasikan status melalui API faktur. Perlakukan peristiwa duplikat sebagai peristiwa yang sama.
API: filter payment_methods berdasarkan chain_slug dan asset_tickers. Pilihan nonaktif diabaikan; jika tidak ada kecocokan, pengaturan bawaan toko digunakan. Pilihan blockchain saja mencakup semua aset aktif. Ticker yang sama memerlukan ID aset. Dompet dan kurs tetap diperlukan.
Pemindai offline? Faktur mempertahankan metode yang dikonfigurasi sambil menunggu deteksi. Periksa API yang didukung di Koneksi blockchain; status sehat tidak berarti kompatibel dengan pemindai. Bawaan: dua penyedia independen.
Dompet/kurs tetap diperlukan. Layanan Monero/Lightning harus menerbitkan permintaan pembayaran.
Kesalahan API/MCP mencakup error.details.payment_methods. SDK 2.4.0 menambahkan penjelasan aman: PHP getPaymentMethodIssues(), Python payment_method_issues, Node paymentMethodIssues. Referensi kesalahan →
Kuotasi kripto dibulatkan ke atas dan menyertakan spread toko. Faktur berharga fiat tidak mengonversi kripto yang diterima menjadi saldo bank.
Nol konfirmasi menyelesaikan faktur saat terdeteksi, tanpa perlindungan konfirmasi jaringan. Pembayaran native EVM dideteksi sebagai transfer langsung. Tinjau pembayaran yang tidak biasa atau tidak pasti di Perlu perhatian.
Periksa Koneksi blockchain untuk API yang kompatibel, riwayat lengkap, dan penyedia independen. Mengejar ketertinggalan melalui node mentah memerlukan waktu. Semua API penerimaan →
Pembayaran, saldo, dan pemeliharaan berbagi anggaran penyedia. Pemeriksaan saat tidak ada aktivitas melambat. Faktur lama tetap dipantau untuk pembayaran terlambat/reorg, hingga setiap jam setelah pemindai mengejar ketertinggalan. Sinyal WSS yang tersedia melengkapi pemindaian HTTP. Menutup checkout tidak pernah menghentikan deteksi. Node publik tetap memiliki batas; Wholly Crypto tidak menjalankan node.
Diblokir secara bawaan. Aktifkan Toko → Faktur → Izinkan faktur bernilai nol untuk mengizinkan total nol secara manual/melalui API. Faktur ini langsung selesai tanpa pembayaran, alamat penerimaan, transaksi, atau biaya pemrosesan.
Toko → Checkout: warna, logo, metode, tautan, ukuran font Intro/Outro, dan visibilitas nama proyek/toko. Toko baru mewarisi desain toko bawaan. Perubahan disimpan otomatis.
Pratinjau tidak bisa menerima pembayaran. Tidak mendukung HTML/CSS/JavaScript kustom.
IPN mengirim setiap peristiwa faktur ke URL toko atau faktur ipn_url. Webhook mengirim peristiwa yang dipilih. Keduanya mengirim snapshot JSON yang sama melalui POST.
Kapan aku harus memenuhi pesanan? Untuk penanganan berbasis peristiwa, gunakan event_type = invoice.settled dengan status = settled. Verifikasi faktur terkini dan pesananmu, lalu penuhi satu kali saja. payment.received saja tidak cukup.
status adalah status faktur saat peristiwa dibuat; event_type menjelaskan apa yang terjadi.
payment.received + processing, lalu invoice.settled + settled.payment.received dan invoice.settled keduanya memuat settled.Kedua alur bisa terjadi di blockchain lain. Ini adalah peristiwa yang berbeda, belum tentu dua pembayaran. Keduanya bisa memiliki sequence yang sama tetapi nilai event_id yang berbeda. Urutan pengiriman tidak dijamin; jangan mensyaratkan processing terlebih dahulu.
| Status faktur | Arti |
|---|---|
new | Menunggu pembayaran |
processing | Pembayaran parsial atau menunggu finalitas |
settled | Diterima berdasarkan aturan faktur, atau secara manual |
expired | Tenggat berlalu; pemantauan pembayaran terlambat bisa berlanjut |
invalid | Pembayaran perlu ditinjau atau ditolak |
cancelled | Dibatalkan, bukan dikembalikan dananya |
Peristiwa: invoice.created, payment.received, invoice.processing, invoice.settled, invoice.expired, invoice.invalid, invoice.cancelled. Tabel peristiwa lengkap dan aturan pengecualian →
amount_status: none, partial, paid, overpaid. paid mencakup toleransi, bukan finalitas. timing_status: on_time atau late. resolution: automatic, manually_settled atau manually_invalidated. Terapkan kebijakan pengecualianmu saat requires_review bernilai true.
invoice_id sesuai dengan respons API. amount, currency dan order_id menjelaskan pesanan awalmu. payment_info menambahkan transfer, jumlah kripto presisi, kuotasi/spread/toleransi terkunci, dan kurs sebagai referensi. Data pelanggan dan metadata bersifat pribadi.
paid_chain, paid_asset, paid_payment_method_id, paid_asset_amount, paid_asset_amount_received dan settlement_exchange_rate merangkum penyelesaian. Nilainya tetap dibekukan; bukti/riwayat yang tidak tersedia tetap null. Untuk penerimaan selanjutnya, gunakan payment_info atau API pembayaran.
Gunakan string desimal. Jangan pernah menggabungkan aset atau menganggap dana yang belum dikonfirmasi sebagai dana yang hilang. Tangani pengecualian secara eksplisit; peringatan saja tidak pernah mengizinkan pemenuhan pesanan atau pengembalian dana. Isi ulang gas internal yang terverifikasi bukan pembayaran pelanggan dan tidak memicu payment.received.
Rahasia penandatanganan terpisah: Toko → IPN menandatangani pengiriman IPN, termasuk ipn_urlkustom faktur. Setiap endpoint di Toko → Webhook memiliki rahasianya sendiri, yang ditampilkan saat dibuat atau dirotasi.
Keduanya menggunakan Wholly-Signature dan verifier SDK yang sama, tetapi membutuhkan rahasia yang sesuai, bukan kunci API. Merotasi rahasia IPN tidak mengubah rahasia webhook.
Verifikasi body mentah, stempel waktu, dan cakupan proyek/toko. Simpan secara persisten, lalu kembalikan HTTP 2xx. Worker memeriksa faktur terkini melalui host API yang kamu konfigurasi dan memenuhi pesanan sekali dalam transaksi database. Header tidak ditandatangani; gunakan identitas body bertanda tangan versi 2.
Berbasis peristiwa: deduplikasi event_idbertanda tangan, lalu filter invoice.settled. SDK berbasis status: gabungkan proyek + invoice_id + sequence, lalu periksa status terlepas dari jenis peristiwanya. Jangan menambahkan filter peristiwa setelah penggabungan ini. Keduanya memerlukan perlindungan duplikasi terpisah pada tingkat pesanan.
Percobaan ulang mempertahankan body dan ID peristiwa asli. Revisi lama tidak boleh menimpa yang lebih baru. IPN mencoba hingga delapan kali; percobaan ulang webhook bersifat opsional. Kredit yang menipis menjeda pengiriman notifikasi, bukan pembayaran.
Toko → IPN / Webhook → Riwayat → Detail menampilkan body dan hasil yang disimpan. Payload kedaluwarsa setelah 90 hari. Pengiriman ulang bukan bukti penyelesaian.
Kirim aset yang didukung ke Kraken, Binance, atau Coinbase. Simpan koinnya atau konversikan deposit yang telah dikreditkan. Fiat tetap berada di bursa.
Minimum deposit berlaku per transaksi, bukan per sweep. Deposit di bawah minimum menghentikan rencana. Gabungkan saldo kecil ke dompetmu sendiri terlebih dahulu; biaya jaringan tambahan berlaku.
Pasar diperbarui setiap dua menit. Hanya deposit yang cocok dan telah dikreditkan yang bisa dikonversi; data pasar usang menghentikan order baru. Cadangan 1% dari aset sumber tetap berada di bursa untuk biaya/pembulatan, terpisah dari kredit pemrosesan.
Jumlah minimum yang disimpan menyisakan koin/token di seluruh proyek setelah sweep otomatis. Terpisah dari pemicu; nol berarti tidak menyisakan apa pun. Biaya menggunakan kelebihannya. Pengiriman manual tetap sama.
Lanjutkan transfer yang belum pasti; jangan pernah menggantinya. Dompet tetap dicadangkan sampai konfirmasi atau kuotasi yang tidak digunakan kedaluwarsa. Sweep besar perlu dibagi dalam batch.
Kustodi bursa, KYC, batasan wilayah, dan biaya berlaku. Tanpa pencairan ke bank atau leverage. Kredit yang menipis menjeda konversi baru; order yang sudah diajukan tetap direkonsiliasi.
Kamu tetap menerima pembayaran saat kredit habis. Toko yang sudah ada tetap bisa menggunakan faktur, checkout, dan pemantauan pembayaran. Koneksi penagihan terverifikasi yang tidak tersedia atau penangguhan akun adalah hal berbeda dan bisa memblokir faktur baru.
| Tetap tersedia | Dijeda tanpa kredit yang bisa digunakan |
|---|---|
| Faktur, checkout, dan konfirmasi | IPN/webhook, termasuk percobaan ulang |
| Dompet, saldo, dan cadangan | Sweep: pengiriman, gas, pengembalian dana, dan konversi bursa baru |
| Laporan, API baca, dan pengaturan yang sudah ada | Pembuatan proyek dan toko |
| Pemeriksaan pembaruan dan pemulihan pembaruan yang terputus | Instalasi versi baru |
Isi ulang melalui ikon kredit. Setelah pemulihan terverifikasi, otomatisasi yang diaktifkan dilanjutkan, termasuk aturan sweep yang mengirim dana. Nonaktifkan aturan yang tidak ingin kamu lanjutkan.
Buka Isi ulang otomatis setelah Permintaan. Pilih dompet penerimaan yang sudah dicadangkan, ambang batas, jumlah pembelian, batas harian, dan batas biaya jaringan. Otorisasi dan simpan. Fitur ini awalnya nonaktif.
Gunakan BTC, ETH, atau USDC/USDT Ethereum saat tersedia. Alamat pengirim token memerlukan ETH; aturan ini tidak mendanai gas yang kurang. Operator menggunakan dompet penerimaan khusus; merchant yang dihosting membayar Operator mereka.
Isi ulang yang disetujui bisa berjalan saat kredit rendah menjeda Sweep. Hanya layanan penerima yang mengonfirmasi kredit. Satu pembelian otomatis berjalan dalam satu waktu. Menonaktifkannya menghentikan pekerjaan yang belum dikirim, bukan transaksi yang sudah diajukan.
Di Isi ulang otomatis, gunakan Periksa pembayaran. Lanjutkan pembayaran valid yang sama, atau tutup transfer Ethereum yang telah dipastikan gagal dan jeda aturannya. Pembayaran tertunda atau belum pasti tetap ditahan untuk mencegah pengiriman ganda. Kuotasi yang kedaluwarsa bukan bukti kegagalan.
Biaya bawaan 1% menggunakan nilai fiat awal faktur yang telah diselesaikan. Pembayaran kripto pelanggan tidak dibagi.
Biaya terus terakumulasi hingga saldo negatif. Lunasi jumlah negatif dan pulihkan kredit yang bisa digunakan di atas ambang toleransi akunmu. Perubahan saldo biasanya muncul dalam 10–15 detik pada koneksi yang sehat.
Menginstal pembaruan memerlukan kredit terverifikasi di atas nol, bahkan dengan kelonggaran toleransi otomatisasi. Isi ulang tidak pernah menginstal pembaruan secara otomatis.
Notifikasi yang dijeda tidak mengurangi jumlah percobaan. Pengiriman yang tersimpan dilanjutkan; masa kedaluwarsa normal tetap berlaku. Rekonsiliasikan peristiwa yang terlewat melalui API faktur.
Jika operator menonaktifkan biaya pemrosesan, tidak ada biaya pemrosesan baru atau pembatasan kredit. Biaya sebelumnya tetap ada dalam riwayat. Instalasi yang belum dipasangkan bisa mengonfigurasi proyek/toko, tetapi memerlukan penagihan terverifikasi untuk menerbitkan faktur. Faktur yang sudah diterbitkan tetap dipantau.
Grafik pendapatan dan filter tetap berada di atas tab: Proyek & toko, Faktur, Dompet dan Sweep. Cari di bawah. Proyek & toko mencakup ekspor CSV. Tanggal kustom mencakup hingga 366 hari. Dompet menggunakan saldo dalam cache.
Akses opsional dengan cakupan proyek di api.example.com/mcp. Baca pembayaran atau setujui pembuatan faktur. Penyiapan & izin MCP →
Gunakan SDK resmi kami untuk membuat faktur, memeriksa pembayaran, dan memverifikasi IPN/webhook.
Tambahkan pembayaran kripto ke aplikasi PHP-mu dengan Composer.
composer require whollycrypto/php-sdkHubungkan aplikasi atau backend Python-mu tanpa dependensi runtime.
python -m pip install whollycryptoJavaScript atau TypeScript, satu paket npm dengan tipe bawaan.
npm install whollycryptoTambahkan branch main di Xcode. Penyiapan Swift dan keamanan aplikasi →
https://github.com/whollycrypto-com/whollycrypto-swift-sdk.gitGunakan domain API instalasimu dan simpan kunci API di sisi server. Semua SDK berlisensi MIT.
Buka Proyek → Alat pembayaran dan pilih toko. Bagikan tautan pembayaran yang bisa dipakai ulang, terima pembayaran di kasir, atau jadwalkan permintaan pembayaran melalui email.
Tampilan toko, konfirmasi, dan callback tetap berlaku. Menjeda alat menghentikan permintaan baru, bukan pembayaran yang sudah ada. Riwayat menautkan setiap faktur. Periode yang terlewat tidak menimbulkan lonjakan email; pengiriman ulang memakai faktur yang sama selama belum dibayar dan belum kedaluwarsa.
Checkout pelanggan, tautan pembayaran, dan email terjadwal mendukung bahasa Inggris, Jerman, Spanyol, Portugis Brasil, Italia, Rusia, Mandarin Sederhana, Prancis, Korea, dan Jepang.
Toko → Faktur → Bahasa checkout menetapkan bahasa bawaan. Ganti untuk setiap faktur atau alat pembayaran. Email dan pengiriman ulang mempertahankan bahasa faktur. Teksmu tetap sama; konsol Merchant dan Operator tetap berbahasa Inggris.
Di Pengaturan → Sistem, di bawah Pembatasan IP sumber, aktifkan SMTP dengan nama host publik penyedia, login, pengirim, dan alamat balasan opsional. Gunakan TLS pada port 465 atau STARTTLS pada 587.
Simpan, uji koneksi, lalu kirim email uji ke dirimu sendiri. Siapkan SPF/DKIM dengan penyediamu. Penerimaan SMTP tidak menjamin email sampai ke kotak masuk.
Permintaan terjadwal menggunakan SMTP sistem. Saluran notifikasi juga bisa memilihnya; pengaturan saluran dan undangan Operator yang ada tetap sama. Hanya administrator instalasi yang mengelola kredensial terenkripsi ini. Kegagalan pengiriman email memerlukan pengiriman ulang secara eksplisit.
Ikon lonceng membuka kotak masuk notifikasimu. Pilihan tema ada di menu pengaturan.
Masalah berulang dikelompokkan. Riwayat disimpan 30 hari; izin proyek tetap berlaku. Membaca peringatan tidak menyelesaikan masalah. Peringatan untuk manusia tidak menggantikan IPN atau webhook toko.
Aktifkan Proyek → Marketplace, pilih toko, dan daftarkan vendor dengan tujuan pembayaran yang diverifikasi secara independen. Buat satu faktur dengan bagian vendor yang presisi; setujui pembayaran secara manual atau tetapkan kebijakan otomatis yang dibatasi.
Hanya mainnet Bitcoin serta koin EVM/ERC-20 yang didukung. Pelanggan membayar ke dompet yang dikendalikan proyek terlebih dahulu, bukan langsung ke vendor. Sisakan koin native yang bebas digunakan untuk biaya. Sweep biasa mengecualikan alamat penerimaan yang dilindungi.
Biaya pemrosesan berlaku sekali untuk faktur asli, terpisah dari komisimu. Kekurangan pembayaran dan penerimaan yang belum pasti perlu ditinjau. Pengembalian dana setelah pembayaran ke vendor memerlukan dana terpisah, bukan penarikan kembali otomatis.
Buka Pengaturan → Akuntansi untuk Laporan, Transaksi, Ekspor, dan Pemeriksaan. Dasbor tetap terpisah.
Penerimaan terkonfirmasi, pengembalian dana, dan biaya yang tercatat terpisah dari transfer dompet serta pembelian kredit prabayar. Total faktur dihitung satu kali, bahkan dengan beberapa pembayaran.
Nilai historis menggunakan bukti yang tersimpan, bukan harga hari ini. Kurs lama dan biaya sebenarnya mungkin tidak tersedia; biaya yang tidak diketahui tidak pernah dianggap nol. Bukti yang tidak lengkap membuat total bersih tidak tersedia.
Ini mencakup catatan yang dilacak Wholly Crypto, bukan setiap transaksi dompet eksternal atau bursa. Ini alat bantu pembukuan, bukan laporan pajak atau laporan laba. Bagikan ekspor dengan aman: isinya bisa mencakup email pelanggan.
Pindahkan dana yang diterima ke tujuan pilihanmu. Kelola aturan dan riwayat di Proyek → Sweep.
Kirim koin native di 29 blockchain; Monero tetap hanya lihat. Token: ERC-20 terverifikasi dan SPL klasik. Pengiriman manual dan sweep otomatis menggunakan perlindungan yang sama.
BTC, EVM, SOL, dan TRX dilengkapi 18 adapter native. Gunakan penyedia yang mampu mengirim transaksi. ZEC hanya mendukung alamat transparan; ADA mempertahankan output token; DOT menggunakan Asset Hub; HBAR memerlukan relay. Tujuan dengan memo/tag/komentar keluar memerlukan dompet eksternal.
Pendanaan gas, konfirmasi, dan pengiriman token berlanjut di latar belakang setelah persetujuan. Pantau Aktivitas transfer, bahkan setelah menutup jendela. Penyiaran bukan konfirmasi.
ETH yang disimpan di dompet proyek: 0 tidak menambahkan cadangan; ini tidak menghabiskan semua ETH-mu. 0.005 menyimpan setidaknya 0.005 ETH untuk nanti, sehingga kamu memerlukan dana tambahan untuk alur ini. Aturan otomatis yang tersimpan tetap sama.
Batas harian membatasi gas native yang dialokasikan per aturan token dalam periode berjalan 24 jam. €1 bisa menjadi batas awal untuk penggunaan ringan, bukan jaminan biaya atau tagihan harian. Transaksi pendanaan juga memiliki biaya. Biaya jaringan maksimum % bisa membatasi gabungan biaya pendanaan/transfer.
Pemeriksaan berjalan otomatis. Hanya alamat pemegang token yang memenuhi syarat yang menerima gas; alamat kosong tidak menerima. Alamat yang kekurangan dana dan berada di bawah minimum sweep akan menunggu. Penjelasan batas gas →
Pengiriman dinonaktifkan? Periksa whollycrypto transfers status. Tinjau setiap aturan aktif sebelum whollycrypto transfers enable: ini berlaku di seluruh server dan bisa langsung menjalankan aturan tersimpan. Menghentikan langkah mendatang tidak bisa membatalkan transaksi yang telah disiarkan.
Pengaturan → Sistem: pilih Kelola atau Tambahkan domain. Simpan, tinjau DNS, publikasikan. Host yang tidak berubah melewati pemeriksaan DNS/SSL.
Toko → Dasar: pilih host merchant/pay/API aktif. Tautan mengutamakan toko → toko bawaan → sistem; nama yang dihentikan beralih ke cadangan. Konfigurasikan host SDK secara terpisah. Percobaan ulang bertanda tangan mempertahankan tautan aslinya.
HTTPS berjalan otomatis. Ubah status Cloudflare setelah penyiapan; Let's Encrypt tetap aktif.
/.well-known/acme-challenge/ pada port 80 tanpa pengalihan/tantangan untuk perpanjangan.Pemeriksaan meminta DNS otoritatif dan memverifikasi origin: Langsung atau Cloudflare. Pengunjung mungkin menyimpan DNS lama dalam cache.
Penyimpanan/penghapusan konsol menggunakan POST sejak 5.6.2; pengecualian “Not GET or POST” tidak diperlukan. Login dan CSRF tetap aktif. Pada api.*, izinkan metode yang didokumentasikan untuk API publik.
Siapkan 2FA di Pengaturan → Akun. Pengguna khusus proyek menggunakan Keamanan saya di footer. Konfirmasikan kata sandi, pindai QR/kunci TOTP, dan masukkan kode enam digit.
Coba Verifyr Authenticator untuk iOS atau Android, atau aplikasi TOTP standar lainnya. Simpan kode pemulihan sekali pakai secara terpisah dari kata sandi. Biarkan perlindungan HTTP Basic tetap aktif.
Mengganti kode atau menonaktifkan 2FA memerlukan kata sandimu dan autentikator atau kode pemulihan yang belum digunakan. Sesi lain diakhiri. Sinkronkan jam ponsel/server; 2FA tidak mengamankan server yang telah disusupi.
Ikon tema beralih antara Terang → Redup → Gelap dan mengingat pilihan browser ini. Tema checkout toko terpisah.
merchant.* atau api.* yang aktif. IP konsol saat ini harus tetap diizinkan.pay.* terbuka: pelanggan perlu membayar dari mana saja.Jika mau, tambahkan aturan akses Cloudflare. Kecualikan tantangan perpanjangan HTTPS; hindari tantangan login interaktif pada API dan checkout. Mode proxy saja bukan pembatasan IP.
Akses terkunci? Jalankan whollycrypto access-reset --domain merchant.example.com melalui SSH. Hanya nama host tersebut yang dibuka kembali, dalam lima detik; autentikasi akun tetap aktif.
whollycrypto ssl
whollycrypto ssl --fixPerintah pertama memeriksa sertifikat aktif. --fix memperbaiki file pendukung TLS dan memperpanjang sertifikat yang hilang/akan kedaluwarsa. Nginx harus berjalan; biarkan port 80/443 terbuka.
Jalankan whollycrypto ssl --domain merchant.example.com --reissue untuk penggantian paksa. Batas penerbitan berlaku. Jika Cloudflare memblokir tantangan HTTP, gunakan DNS-only sementara. Dompet, autentikasi, dan domain tetap sama.
Keputusan memerlukan alasan. Pengembalian dana memerlukan transfer terpisah yang terkonfirmasi; perubahan status faktur tidak pernah mengirim uang.
Baca catatan rilis, lalu gunakan Pengaturan → Sistem → Pembaruan perangkat lunak atau CLI. Pembaruan memverifikasi tanda tangan, membuat cadangan, dan memeriksa kesehatan. Checkout dijeda selama instalasi.
whollycrypto update --check
whollycrypto updatePembaruan menunggu pekerjaan latar belakang hingga dua menit; checkout tetap online. Batas waktu memulihkan timer.
Updater lama terblokir? Jalankan ini sekali. Kunci yang terinstal memverifikasi helper.
bash <(curl -fsSL https://releases.whollycrypto.com/update_wholly.sh)Simpan cadangan di luar server yang telah diuji untuk PostgreSQL, konfigurasi, kunci enkripsi dompet, dan ekspor dompet. Arsip pemulihan lokal tidak terenkripsi.
Pulihkan cadangan database/konfigurasi yang cocok secara bersamaan. Jangan pernah mengganggu migrasi atau menjalankan binary lama pada database yang lebih baru. Aturan kredit tetap berlaku.
Penyiapan dan pembaruan otomatis mencoba mirror GitHub resmi. Pemeriksaan tanda tangan, checksum, dan kredit tetap diperlukan.
Perintah root melalui SSH.
whollycrypto status
whollycrypto doctor
whollycrypto backup| Perintah | Tujuan |
|---|---|
whollycrypto version | Versi terinstal. |
whollycrypto status | Kesehatan aplikasi dan database. |
whollycrypto logs | 80 baris log aplikasi terakhir. |
whollycrypto restart | Mulai ulang dan periksa kesehatan. |
whollycrypto doctor | Pemeriksaan instalasi hanya baca. |
whollycrypto doctor --fix | Perbaiki izin yang dikelola dan tautan CLI yang hilang. |
whollycrypto htaccess | Reset login Basic Auth. |
whollycrypto admin-reset | Reset kata sandi administrator. |
whollycrypto 2fa-reset | Reset autentikator satu akun tanpa mengubah kata sandinya. |
whollycrypto transfers statuswhollycrypto transfers enablewhollycrypto transfers disable | Periksa, aktifkan, atau jeda pengiriman untuk semua proyek. Pengaktifan memulai ulang aplikasi dan bisa langsung menjalankan aturan tersimpan; konfirmasi diperlukan. Pembaruan mempertahankan jeda. |
whollycrypto ssl | Periksa HTTPS; tambahkan --fix untuk memperbaiki. |
whollycrypto access-reset --domain HOST | Hapus pembatasan IP satu nama host. |
whollycrypto update --check | Periksa pembaruan bertanda tangan. |
whollycrypto update | Cadangkan, perbarui, dan mulai ulang. |
whollycrypto backup | Arsip khusus root di /root/whollycrypto/backups/releases/. |
whollycrypto recover | Pulihkan pemeliharaan atau pembaruan yang terputus dengan skema yang tidak berubah. Tidak pernah memulihkan database secara otomatis. |
whollycrypto reset | Pilih satu proyek, semua proyek bisnis, atau hanya perbaikan. |
whollycrypto uninstall --checkwhollycrypto uninstall | Pratinjau, lalu hapus runtime native. Database, kunci, dan cadangan tetap tersimpan. |
whollycrypto welcome | URL konsol dan tautan. |
whollycrypto --help | Perintah; tambahkan --help setelah salah satu perintah untuk melihat opsinya. |
Pemeriksaan hanya baca, dengan kode keluar bukan nol jika perlu perhatian. --fix hanya memperbaiki izin yang dikelola dan tautan CLI yang hilang. Tidak pernah mengubah penagihan, menghapus data, atau memulai ulang layanan.
whollycrypto reset
# Preview without changing anything:
whollycrypto reset --scope business --check
whollycrypto reset --scope project --project YOUR_PROJECT_IDENTIFIER --checkPilih satu proyek, semua proyek bisnis, atau hanya perbaikan. Reset proyek menghapus secara permanen proyek yang dipilih, toko, catatan dompet, dan riwayat pembayaran. Hanya perbaikan memeriksa dan memperbaiki izin yang dikelola serta tautan CLI.
Nonaktifkan proyek yang dipilih, selesaikan pembayaran/transfer terbuka, dan pindahkan saldo dompet yang diketahui terlebih dahulu. Akun, domain, node, kredit, identitas penagihan, dan mode instalasi tetap ada. Dompet penerimaan operator dan catatan kredit merchant yang dihosting dilindungi. Ini tidak membuka ulang wizard penyiapan.
Reset destruktif memerlukan konfirmasi yang diketik dan membuat cadangan pemulihan terverifikasi sebelum penghapusan. Simpan juga cadangan dompet di luar server: alamat lama masih bisa menerima dana, tetapi proyek yang dihapus berhenti melacaknya. Saldo dalam cache tidak membuktikan dompet kosong.
whollycrypto uninstall --check
whollycrypto uninstallMenghentikan checkout, API, dan worker; menghapus file runtime dan integrasi server yang dikelola setelah pencadangan serta konfirmasi yang diketik. Pembayaran atau transfer tertunda memblokir penghapusan. File dipindahkan ke cadangan pemulihan, bukan dimusnahkan.
Database, konfigurasi, kunci, dan cadangan tetap ada. Paket Nginx/PostgreSQL bersama dan sertifikat TLS tidak disentuh. Perintah menampilkan perintah pemulihan offline; jangan menjalankan penyiapan baru di atas data yang dipertahankan.
Perintah reset/penghapusan ditujukan untuk instalasi VPS native, bukan Docker atau Umbrel. Untuk container, gunakan perintah pencadangan dan penghentian integrasimu; pertahankan volumenya. Kedua perintah destruktif tidak menerima --yes.
whollycrypto htaccessPilih pengguna, tentukan nama/kata sandi, dan konfirmasikan. Ini mereset prompt login pertama browser, bukan akun konsolmu. Pengguna lain dan kredensial API tetap sama.
whollycrypto admin-resetPilih admin berdasarkan email dan konfirmasikan kata sandi baru. Sesi dan kunci login akun dihapus; pembatasan IP tetap berlaku.
Reset biasa mempertahankan 2FA. Jika autentikator dan kode pemulihan sama-sama hilang, jalankan secara eksplisit whollycrypto admin-reset --email admin@example.com --reset-2fa. Siapkan 2FA kembali setelah login.
Memerlukan database, bukan aplikasi atau kata sandi lama. Akun lain, dompet, dan izin tetap sama; akun yang dinonaktifkan tetap nonaktif.
Autentikator dan kode pemulihan sama-sama hilang? Pilih akun sebagai root.
whollycrypto 2fa-reset
# Or select the account directly:
whollycrypto 2fa-reset --email user@example.comMenghapus sesi, autentikator, dan kode pemulihan. Login dengan kata sandi yang ada dan konfigurasikan 2FA kembali. Izin, dompet, dan Basic Auth tetap sama; akun yang dinonaktifkan tetap nonaktif.
Memerlukan database, bukan aplikasi atau kredit. Noninteraktif: --email dan --yes.
Enter menghasilkan kata sandi di /root/whollycrypto/config/credential-resets/: pribadi, tidak terenkripsi, dapat digunakan setelah berhasil. Kata sandi yang dimasukkan manual tidak disimpan.
whollycrypto htaccess --user admin --new-user operator
whollycrypto admin-reset --email admin@example.comTanpa terminal, tentukan akun yang sudah ada beserta --generate atau --password-file /root/private-password.txt, dan --yes. File kata sandi harus dimiliki root, dengan mode 600. Jangan pernah memasukkan kata sandi dalam perintah atau variabel lingkungan.
--yes hanya melewati konfirmasi. Selesaikan pemulihan pembaruan terputus terlebih dahulu; perubahan akun bersamaan menghentikan reset.