// dokümantasyon
Geliştirici dokümantasyonu
NextCryptoPay'i birkaç dakikada entegre edin. Tipik bir entegrasyonun ana hatları burada.
Bir yapay zeka ajanıyla mı geliştiriyorsunuz?
Projenizi Claude Code, Codex, Cursor veya herhangi bir yapay zeka ajanıyla geliştiriyorsanız, docs-agent.md dosyasını indirip ajanınıza verin — NextCryptoPay'i otomatik entegre etmek için gereken her şeyi içerir.
1. Bir API anahtarı oluşturun
Panel → API anahtarları bölümünde bir anahtar oluşturun. Sırrı sunucunuzda tutun, asla tarayıcıda değil.
2. Bir fatura oluşturun
Tutarı, para birimini ve zinciri fatura uç noktasına POST edin, ardından müşteriyi dönen ödeme URL'sine yönlendirin.
3. Webhook'ları alın
Bir fatura ödendiğinde, onaylanırken veya süresi dolduğunda imzalı bir webhook göndeririz. İmzayı webhook sırrınızla doğrulayın.
Kimlik doğrulama
Her isteği Authorization başlığındaki gizli anahtarınızla doğrulayın. Panel → API anahtarları bölümünde mağaza başına anahtar oluşturun (tam anahtar bir kez gösterilir).
Bir fatura oluşturun
Sipariş tutarını ve varlığı gönderin; chain isteğe bağlıdır. Barındırılan bir checkoutUrl alırsınız — müşterinizi oraya yönlendirin. Chain verilmezse müşteri ağı ödeme sayfasında seçer.
İstek
curl -X POST https://nextcryptopay.com/api/v1/invoices \
-H "Authorization: Bearer ncp_live_..." \
-H "Content-Type: application/json" \
-d '{
"orderId": "ORDER-1001",
"amount": 99.50,
"currency": "USD",
"chain": "tron",
"asset": "USDT",
"webhookUrl": "https://yourstore.com/webhooks/nextcryptopay",
"redirectUrl": "https://yourstore.com/thank-you"
}'Yanıt
{
"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"
}redirectUrl, müşterinin ödemeden birkaç saniye sonra gönderileceği adrestir. Boş bırakırsanız mağazanın dönüş adresi (Dashboard → Webhooks) kullanılır. İkisinden birini mutlaka ayarlayın — hiçbiri yoksa müşteri ödeme sayfasında kalakalır. Yalnızca biri o adrese girdi diye siparişi teslim etmeyin: ödemeyi ancak imzası doğrulanmış invoice.paid webhook'u kanıtlar.
Ödeme durumunu takip edin
Faturayı yoklayın veya Server-Sent Events aracılığıyla canlı güncellemelere abone olun. Durumlar: PENDING → CONFIRMING → PAID (veya 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/streamWebhook'ları doğrulayın
Her durum değişikliğinde webhook URL'nize imzalı bir olay POST ederiz. Güvenmeden önce x-nextcryptopay-signature başlığını (mağazanızın webhook sırrını kullanarak ham gövdenin HMAC-SHA256'sı) doğrulayın. 15 saniye içinde 2xx döndürün — aksi takdirde geri çekilerek yeniden deneriz. Eski x-cryptopay-* başlıkları 31.03.2027 tarihine kadar aynı değerlerle birlikte gönderilmeye devam eder; yeni kodda x-nextcryptopay-* adlarını tercih edin.
import crypto from "node:crypto";
// Legacy x-cryptopay-* headers carry identical values and are still sent in
// parallel until 2027-03-31 — prefer x-nextcryptopay-* in new code.
app.post("/webhooks/nextcryptopay", (req, res) => {
const signature = req.headers["x-nextcryptopay-signature"];
const timestamp = req.headers["x-nextcryptopay-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.NEXTCRYPTOPAY_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-nextcryptopay-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)
});Desteklenen zincirler
Tron (USDT/USDC · TRC20), Ethereum (USDT/USDC · ERC20), BSC (USDT · BEP20), TON (USDT · jetton), Bitcoin (BTC). Her başarılı ödeme için işlem başına üst sınırı olan bir platform ücreti alınır; bu ücret ön ödemeli USDT bakiyenizden düşülür (veya plan kotanızdan karşılanır). Güncel oranlar için Fiyatlandırma sayfasına bakın.