Mula percuma
Bahasa Melayu

Pembangun

API pembayaran kripto yang dibina untuk penyelesaian terus

Cipta invois dengan satu permintaan yang disahkan dan Unheld memulangkan alamat untuk dibayar, jumlah tepatnya, dan kedalaman pengesahan yang akan ditunggunya. Bayaran masuk terus ke dompet yang anda kawal — API ini tidak pernah memegang apa yang dilaporkannya.

Cipta invois

Satu POST. Jumlahnya ditulis sebagaimana seseorang menulisnya dan diskalakan di pelayan mengikut perpuluhan aset itu sendiri, jadi anda tidak pernah menukar ke unit asas secara manual.

curl -X POST https://api.unheld.io/api/v1/invoices \
  -H "Authorization: Bearer $UNHELD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "chainId": "11155111",
    "assetType": "native",
    "amountDecimal": "0.05",
    "expiresInSeconds": 900,
    "metadata": { "orderId": "A-1043" }
  }'

Respons

{
  "id": "e2b0…",
  "status": "CREATED",
  "receiveAddress": "0x…",
  "expectedAmount": "50000000000000000",
  "minConfirmations": 3,
  "expiresAt": "2026-08-10T14:15:00.000Z",
  "instructions": {
    "chainId": "11155111",
    "to": "0x…",
    "amount": "50000000000000000",
    "assetType": "native"
  }
}

receiveAddress diterbitkan daripada dompet anda dan dikunci pada invois ini. expectedAmount dalam unit asas. minConfirmations ialah ambang rangkaian itu sendiri, bukan tetapan yang kami reka.

Pengesahan dan skop

Kunci ialah token bearer, dicipta dalam papan pemuka dan dipaparkan sekali sahaja. Setiap kunci membawa senarai skop yang jelas dan permintaan ditolak jika kunci itu tiada skop bagi laluan tersebut.

Skop yang ada

  • invoices:write
  • invoices:read
  • webhooks:write
  • webhooks:read
  • balances:read
  • customers:write
  • customers:read
  • subscriptions:write
  • subscriptions:read

Berikan set paling sempit yang berfungsi. Kunci yang hanya mencipta invois tidak boleh membaca pelanggan anda, dan kunci baca yang bocor tidak boleh menggerakkan apa-apa — kerana tiada apa dalam API ini yang boleh.

Webhook yang boleh anda sahkan

Setiap penghantaran ditandatangani. Tandatangannya ialah HMAC-SHA256 bagi cap masa dan badan mentah yang dicantum dengan noktah, menggunakan rahsia webhook anda, dihantar sebagai digest heksadesimal.

Mengesahkan penghantaran

const signature = crypto
  .createHmac("sha256", webhookSecret)
  .update(`${req.headers["x-timestamp"]}.${rawBody}`)
  .digest("hex");

crypto.timingSafeEqual(
  Buffer.from(signature),
  Buffer.from(req.headers["x-signature"])
);

Bandingkan digest dalam masa malar, tolak cap masa di luar tetingkap toleransi anda, dan anggap X-Request-Id sebagai kunci idempotensi: cubaan semula menggunakan semula nilai yang sama, jadi peristiwa sama tiba dua kali adalah normal dan tidak boleh diproses dua kali.

Peristiwa invois

Bayaran bergerak melalui keadaan, bukan sekadar bertukar daripada belum dibayar kepada dibayar, dan setiap peralihan ialah webhook. Kurang bayar dan lebih bayar ialah peristiwa tersendiri, bukan ralat.

PeristiwaApa yang berlaku
invoice.createdInvois wujud dan alamat penerimaan sedang diperhatikan.
invoice.receivingTransaksi bayaran dilihat pada rangkaian tetapi belum disahkan.
invoice.confirmingBayaran sedang disahkan dan belum mencapai ambang rangkaian.
invoice.paidDisahkan sepenuhnya pada kedalaman yang dikehendaki rangkaian. Selamat untuk dipenuhi.
invoice.underpaidKurang daripada yang dijangka telah tiba. Bayaran separa terkumpul, jadi pindahan kedua boleh melengkapkannya.
invoice.overpaidLebih daripada yang dijangka telah tiba, direkod dengan tepat dan bukan dibundarkan.
invoice.expiredTetingkap ditutup tanpa bayaran penuh.

Uji keseluruhan aliran secara percuma

Uji penciptaan invois, pengesanan, pengesahan dan webhook tanpa menggunakan dana pengeluaran. Token testnet tiada nilai wang. Aktiviti testnet bukan bayaran sebenar.

Skop

  • Ia tidak pernah memegang dana. Tiada endpoint baki untuk dikeluarkan, kerana bayaran mendarat pada alamat anda dan kekal di situ.
  • Ia tidak menukar atau menyelesaikan dalam mata wang fiat. Bayaran tiba dalam aset dan pada rangkaian yang digunakan semasa dihantar.
  • Belum ada SDK rasmi. Semuanya di sini HTTP biasa, dan kami menerbitkan contoh dan bukan pakej yang akan kami selenggara dengan buruk.

Soalan pembangun

Adakah terdapat persekitaran ujian?

Uji penciptaan invois, pengesanan, pengesahan dan webhook tanpa menggunakan dana pengeluaran. Token testnet tiada nilai wang. Aktiviti testnet bukan bayaran sebenar.

Bagaimana saya elak memproses webhook sama dua kali?

Gunakan X-Request-Id sebagai kunci idempotensi. Cubaan semula menggunakan semula nilai yang sama, jadi rekodkannya dan abaikan pengulangan. Cubaan semula memang dijangka: penghantaran yang gagal dicuba semula mengikut jadual dan bukan dibuang.

Perlukah saya menukar jumlah ke unit asas sendiri?

Tidak. Hantar amountDecimal sebagaimana seseorang menulisnya dan API menskalakannya mengikut perpuluhan aset. Responsnya memulangkan expectedAmount dalam unit asas, jadi kedua-dua perwakilan adalah jelas dan tidak boleh menyimpang.

Contoh disahkan terhadap API langsung pada .

Bina pada testnet dahulu

Cipta kunci, halakan ke rangkaian testnet, dan jalankan keseluruhan aliran sebelum apa-apa yang sebenar bergerak.

Mula percuma

Harga · Apa yang anda boleh terima hari ini. · Wang anda tidak melalui kami.