Cara kerjanya
Dari kunci API ke pembukuan terekonsiliasi dalam lima langkah.
WalletD adalah REST API di depan sebuah ledger of record. Berikut jalur yang ditempuh satu pembayaran, dari onboarding pengguna hingga sebuah pergerakan yang bisa dihitung ulang oleh auditor Anda.
Cara kerjanya
Bentuk sebuah integrasi
1. Cerminkan pengguna Anda
Buat pengguna dompet dengan external id Anda sendiri. WalletD membuka akun per tujuan (tunai, poin) saat pertama kali masing-masing digunakan, sehingga tidak ada yang perlu disiapkan di awal.
2. Isi dompetnya
Mulai top-up melalui Stripe. Saldo dikreditkan hanya ketika gateway mengonfirmasi dengan webhook bertanda tangan atau kueri rekonsiliasi, tidak pernah pada callback klien.
3. Gerakkan uangnya
Kirim peer-to-peer, terima pembayaran dengan hold, atau bagi penjualan marketplace. Setiap panggilan membawa kunci idempoten dan memposting leg berimbang ke ledger dalam satu transaksi.
4. Reward dan settlement mengikuti
Cashback dan poin diberikan pada saat capture; biaya dan komisi dibagi; payout menghasilkan laporan settlement. Semuanya memposting ke pembukuan yang sama.
5. Baca dan verifikasi
Baca saldo dan riwayat lewat API, terima webhook bertanda tangan untuk setiap peristiwa, dan biarkan verifier bawaan memeriksa ulang invarian ledger secara terjadwal.
Isi sebuah dompet, lalu kirim uang
Isi sebuah dompet, lalu kirim uang
Permintaan yang sama dalam enam bahasa. Jumlah dalam satuan minor bilangan bulat; ledger melakukan sisanya.
# Fund a wallet, then send money. Balances only move on the ledger.
curl -sS -X POST "$WALLETD_API/v1/users" \
-H "Authorization: Bearer $WALLETD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: usr-42-create" \
-d '{"external_id":"user-42","kind":"consumer","display_name":"Ada Lovelace","handle":"ada"}'
curl -sS -X POST "$WALLETD_API/v1/transfers" \
-H "Authorization: Bearer $WALLETD_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: xfer-ada-grace-001" \
-d '{"from":"user-42","to":"@grace","amount":2500,"currency":"USD"}'client := walletd.New(os.Getenv("WALLETD_API"), os.Getenv("WALLETD_API_KEY"))
var transfer walletd.Transfer
err := client.Do(ctx, http.MethodPost, "/v1/transfers", map[string]any{
"from": "user-42",
"to": "@grace",
"amount": 2500, // minor units, $25.00, never a float
"currency": "USD",
}, &transfer, "xfer-ada-grace-001") // idempotency key
if err != nil {
return fmt.Errorf("transfer: %w", err)
}client = WalletD() # reads WALLETD_API / WALLETD_API_KEY
transfer = client.request(
"POST",
"/v1/transfers",
{
"from": "user-42",
"to": "@grace",
"amount": 2500, # minor units, $25.00
"currency": "USD",
},
idempotency_key="xfer-ada-grace-001",
)
print(transfer["status"]) # "settled"const res = await fetch(`${API}/v1/transfers`, {
method: "POST",
headers: {
Authorization: `Bearer ${API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "xfer-ada-grace-001",
},
body: JSON.stringify({
from: "user-42",
to: "@grace",
amount: 2500, // minor units, $25.00
currency: "USD",
}),
});
const transfer = await res.json();$transfer = $walletd->request('POST', '/v1/transfers', [
'from' => 'user-42',
'to' => '@grace',
'amount' => 2500, // minor units, $25.00
'currency' => 'USD',
], idempotencyKey: 'xfer-ada-grace-001');
echo $transfer['status']; // "settled"var body = Map.of(
"from", "user-42",
"to", "@grace",
"amount", 2500, // minor units, $25.00
"currency", "USD");
Transfer transfer = client.post(
"/v1/transfers", body, "xfer-ada-grace-001", Transfer.class);Prinsip yang berlaku di setiap langkah
Idempoten secara bawaan
Setiap panggilan penggerak uang mengambil sebuah kunci idempoten. Percobaan ulang aman; ledger memutar ulang hasil tersimpan byte demi byte.
Berimbang dalam satu transaksi
Biaya, hold, batas, dan clawback diterapkan di dalam posting yang sama, sehingga pembukuan tidak pernah sesaat pun salah.
Dikonfirmasi, bukan diasumsikan
Uang bergerak pada konfirmasi gateway yang terverifikasi dan settle di ledger, bukan pada respons klien yang optimistis.
Diverifikasi terus-menerus
Verifier terjadwal menghitung ulang konservasi, saldo, dan floor, serta gagal secara nyaring begitu ada yang menyimpang.
Akses awal
Jadilah mitra desain.
Kami bekerja dengan sejumlah kecil tim yang membangun produk dompet dan uang di atas WalletD. Jika itu Anda, mari bicara. Anda akan mendapat akses langsung ke orang-orang yang membangunnya.