// dokumentasi

Dokumentasi pengembang

Integrasikan NextCryptoPay dalam beberapa menit. Berikut gambaran integrasi pada umumnya.

Mengembangkan proyek dengan AI agent?

Jika Anda memakai Claude Code, Codex, Cursor, atau AI agent lainnya untuk membangun proyek, unduh docs-agent.md dan berikan ke agent Anda — berisi semua yang dibutuhkan untuk mengintegrasikan NextCryptoPay secara otomatis.

Unduh docs-agent.md

1. Buat API key

Buat kunci di Dashboard → API keys. Simpan secret di server Anda, jangan pernah di browser.

2. Buat invoice

POST jumlah, mata uang, dan chain ke endpoint invoices, lalu alihkan pelanggan ke URL checkout yang dikembalikan.

3. Terima webhook

Kami mengirim webhook bertanda tangan saat invoice dibayar, dikonfirmasi, atau kedaluwarsa. Verifikasi tanda tangan dengan webhook secret Anda.

Autentikasi

Autentikasi setiap permintaan dengan secret key Anda di header Authorization. Buat kunci per toko di Dashboard → API keys (kunci lengkap ditampilkan sekali).

Buat invoice

Kirim jumlah pesanan, chain, dan aset. Anda mendapatkan payAddress dan checkoutUrl yang di-hosting — alihkan pelanggan Anda ke sana.

Permintaan

curl -X POST https://nextcryptopay.com/api/v1/invoices \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "orderId": "ORDER-1001",
    "amount": 99.50,
    "currency": "USD",
    "chain": "tron",
    "asset": "USDT",
    "webhookUrl": "https://yourstore.com/webhooks/cryptopay"
  }'

Respons

{
  "id": "inv_abc123",
  "orderId": "ORDER-1001",
  "payAddress": "TJ9xH4n2k8sQw7Lm3vR5pZ1aB6cD8eF2g",
  "cryptoAmount": "99.50",
  "asset": "USDT",
  "chain": "tron",
  "status": "PENDING",
  "expiresAt": "2026-06-17T10:00:00.000Z",
  "checkoutUrl": "https://nextcryptopay.com/pay/inv_abc123"
}

Lacak status pembayaran

Poll invoice, atau berlangganan pembaruan langsung via Server-Sent Events. Status: PENDING → CONFIRMING → PAID (atau EXPIRED / PARTIALLY_PAID).

# Poll the invoice
curl https://nextcryptopay.com/api/v1/invoices/inv_abc123

# Or subscribe to live updates (Server-Sent Events)
GET https://nextcryptopay.com/api/v1/invoices/inv_abc123/stream

Verifikasi webhook

Pada setiap perubahan status, kami POST event bertanda tangan ke URL webhook Anda. Verifikasi header x-cryptopay-signature (HMAC-SHA256 dari raw body menggunakan webhook secret toko Anda) sebelum memercayainya. Kembalikan 2xx dalam 5 dtk — jika tidak, kami mencoba ulang dengan backoff.

import crypto from "node:crypto";

app.post("/webhooks/cryptopay", (req, res) => {
  const signature = req.headers["x-cryptopay-signature"];
  const timestamp = req.headers["x-cryptopay-timestamp"];

  // Reject stale deliveries (replay protection): within 5 minutes
  if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) {
    return res.status(401).end();
  }

  // Signature is HMAC of "timestamp.rawBody"
  const expected = crypto
    .createHmac("sha256", process.env.CRYPTOPAY_WEBHOOK_SECRET)
    .update(timestamp + "." + req.rawBody) // raw JSON body
    .digest("hex");

  if (
    signature.length !== expected.length ||
    !crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))
  ) {
    return res.status(401).end();
  }

  // Dedupe by delivery id (same event may be retried)
  const deliveryId = req.headers["x-cryptopay-delivery"];
  if (alreadyProcessed(deliveryId)) return res.status(200).end();

  const { event, invoice } = req.body;
  if (event === "invoice.paid") fulfillOrder(invoice.orderId);

  res.status(200).end(); // reply 2xx within 15s, else we retry (6 attempts, backoff)
});

Chain yang didukung

Tron (USDT/USDC · TRC20), Ethereum (USDT/USDC · ERC20), BSC (USDT · BEP20), Bitcoin (BTC). Biaya 0,1% per pembayaran yang berhasil, dipotong dari saldo USDT prabayar Anda (atau ditanggung kuota paket Anda).