تسوية غير احتجازية
تصل USDT / USDC مباشرة إلى محفظة التاجر ولا يحتفظ BoltUtil بالأموال أو المفاتيح الخاصة.
دليل التكامل
يحتاج الخروج من USDT / USDC للإنتاج إلى أكثر من عنوان المحفظة. أنشئ طلبًا من Node.js، وأعد بيانات الدفع إلى المتصفح، ثم قم بتنفيذه فقط بعد التحقق من خطاف الدفع على الشبكة.
الخطوات
كيفية قبول مدفوعات USDT / USDC على موقع ويب باستخدام Node.js
أنشئ طلب الدفع من الخادم وحدد المبلغ والشبكة ومعرّف الطلب الخارجي.
اعرض رابط الدفع والشبكة وعنوان الاستلام ورمز QR ومبلغ USDT / USDC الدقيق.
يتحقق BoltUtil من الشبكة وعقد الرمز والعنوان والمبلغ ومدة الطلب والتأكيدات.
بعد التأكيد، تحقق من توقيع Webhook ونفّذ الطلب بطريقة تمنع التكرار.
يتحقق BoltUtil من الدفع ويرسل إشعارات موقعة. يتحقق خادمك من التوقيع وحالة الطلب ويمنع التكرار قبل التسليم أو تفعيل الخدمة أو إضافة الرصيد.
ملاحظات التكامل
تصل USDT / USDC مباشرة إلى محفظة التاجر ولا يحتفظ BoltUtil بالأموال أو المفاتيح الخاصة.
TRON وEthereum وBNB Smart Chain وPolygon وSolana وBase. تدعم TRON عملة USDT / USDC فقط؛ تتطلب مسارات USDT / USDC الأخرى تفعيل الأصل وإعداد محفظة استلام صالحة.
تساعد توقيعات HMAC والطابع الزمني وسجلات إعادة الإرسال على أتمتة التنفيذ بأمان.
import crypto from 'node:crypto'
// Node.js 20+ server module. Call only after authenticating the buyer.
// order must come from your database, with ownership and price checked.
// Never pass req.body directly; persist externalOrderId before calling.
export async function createStablecoinCheckout(order) {
const key = process.env.BOLTUTIL_API_KEY
const secret = process.env.BOLTUTIL_API_SECRET
if (!key || !secret) throw new Error('Missing server credentials')
const payload = JSON.stringify({
externalOrderId: order.externalOrderId,
amount: order.amount,
currency: 'USDC',
network: 'BASE',
notifyUrl: 'https://merchant.com/webhooks/boltutil',
returnUrl: 'https://merchant.com/orders/complete'
})
const timestamp = Date.now().toString()
const signature = crypto.createHmac('sha256', secret)
.update(`${timestamp}.${payload}`).digest('hex')
// A timeout does not prove creation failed. Query order/status using
// the SAME externalOrderId before deciding whether to retry.
const response = await fetch('https://api.boltutil.com/api/v1/order/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-Bolt-Key': key,
'X-Bolt-Timestamp': timestamp,
'X-Bolt-Signature': signature
},
body: payload,
signal: AbortSignal.timeout(10000)
})
const result = await response.json()
if (!response.ok || result.code !== 200 || !result.data?.checkoutUrl) {
throw new Error('Create order failed; reconcile the saved order')
}
// Save result.data on the server. Return only checkout data to the buyer.
return result.data
}أمثلة للتكامل واستكشاف الأخطاء فقط. لا تُرسل طلبات. راجع بيانات الطلب وإعدادات الشبكة ووثائق API.
اقرأ مستندات APIلا تكشف مفتاح API في المتصفح واحفظ معرّف الطلب قبل عرض صفحة الدفع.
يجب توضيح TRC20 وERC20 وBEP20 وPolygon أو Solana إلى جانب العنوان.
رابط العودة ليس دليلاً على الدفع؛ استخدم Webhook موقعاً أو استعلام الحالة من الخادم.
دليل التكامل
لا. تصل الأموال مباشرة إلى محفظة التاجر، بينما يراقب BoltUtil التحويلات ويرسل الإشعارات.
يتحقق النظام من الشبكة والرمز والعنوان والمبلغ الدقيق وحالة الطلب ومدة صلاحيته.
تدعم TRON عملة USDT فقط. تستخدم Ethereum وBNB Smart Chain وPolygon وSolana وBase نسخ USDT / USDC المحددة. يعتمد التوافر على القنوات المفعلة ومحافظ التاجر.
يمكنك إنشاء الطلبات ومراقبة عمليات النقل وإخطار الواجهة الخلفية لديك دون مطالبة العملاء بإرسال لقطات شاشة.