امنیت API

احراز هویت

crptoX برای احراز هویت درخواست‌های API از API Key مرچنت استفاده می‌کند. هر API Key فقط متعلق به یکی از دو محیط Sandbox یا Live است.

احراز هویت Bearer

API Secret خود را با استفاده از روش Bearer در هدر Authorization ارسال کنید.

Authorization TEXT
Authorization: Bearer YOUR_API_SECRET
نمونه BASH
curl https://crptox.com/api/v1/invoices/INVOICE_UUID \
  -H "Authorization: Bearer YOUR_API_SECRET" \
  -H "Accept: application/json"

محیط API Key

اطلاعات احراز هویت Sandbox و Live از یکدیگر جدا هستند. پیشوند API Key مشخص می‌کند درخواست در کدام محیط پردازش خواهد شد.

crx_test_...
Sandbox

برای درخواست‌های Sandbox و شبکه‌های تست بلاکچین پشتیبانی‌شده استفاده می‌شود.

crx_live_...
Live

برای درخواست‌های واقعی و شبکه‌های اصلی بلاکچین پشتیبانی‌شده استفاده می‌شود.

جداسازی Sandbox و Live

اطلاعات Sandbox و Live کاملاً از یکدیگر جدا هستند. فاکتورها، کیف پول‌ها، تراکنش‌های بلاکچین و سایر اطلاعات پرداخت ایجادشده در یک محیط، در محیط دیگر در دسترس نیستند.

محیط را نمی‌توان از طریق بدنه درخواست انتخاب یا تغییر داد. crptoX همیشه محیط را از API Key احراز هویت‌شده تعیین می‌کند.

بدنه درخواست JSON
{
  "network": "bsc",
  "asset": "usdt",
  "amount": "10.000000"
}

برای مثال، یک مقدار network یکسان در صورت استفاده از کلید crx_test_ به شبکه تست و در صورت استفاده از کلید crx_live_ به شبکه اصلی همان بلاکچین اشاره می‌کند.

شبکه‌های Sandbox

در Sandbox می‌توانید چرخه کامل پرداخت را با استفاده از شبکه‌ها و توکن‌های آزمایشی پشتیبانی‌شده تست کنید.

TRON
Shasta

پرداخت‌های آزمایشی TRON روی شبکه Shasta پردازش می‌شوند.

BSC
BSC Testnet

پرداخت‌های آزمایشی BSC روی شبکه BSC Testnet پردازش می‌شوند.

توکن‌های Sandbox ارزش مالی واقعی ندارند. کیف پولی که معرفی می‌کنید باید متعلق به همان شبکه تستی باشد که قصد استفاده از آن را دارید.

چرخه عمر API Key

API Secret را در تمام چرخه عمر آن به‌عنوان یک اطلاعات حساس امنیتی نگهداری کنید.

  • API Secret را به‌صورت امن در سرور نگهداری کنید و هرگز آن را در کد سمت مرورگر یا مخازن عمومی قرار ندهید.
  • در زمان توسعه و تست از کلیدهای Sandbox و فقط در محیط Production از کلیدهای Live استفاده کنید.
  • اگر احتمال می‌دهید یک کلید افشا شده است، آن را فوراً غیرفعال یا جایگزین کنید.
  • در صورت نیاز به جداسازی عملیاتی، برای اپلیکیشن‌ها یا integrationهای مختلف از API Keyهای جداگانه استفاده کنید.

اطلاعات احراز هویت نامعتبر

درخواست‌هایی که با API Key نامعتبر، منقضی‌شده، لغوشده یا غیرقابل استفاده ارسال شوند، رد خواهند شد.

HTTP 401 JSON
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API credentials."
  }
}

توصیه‌های امنیتی

  • API Secret را هرگز در JavaScript سمت کاربر، فایل‌های اپلیکیشن موبایل یا سایر کدهای client-side قرار ندهید.
  • API Secret را در environment variable یا یک سیستم امن مدیریت secrets نگهداری کنید.
  • همیشه ارتباط با API سرویس crptoX را از طریق HTTPS انجام دهید.
  • Credentialهای Sandbox و Live را در تنظیمات deployment کاملاً از یکدیگر جدا نگه دارید.
  • در صورت تغییر دسترسی اعضای تیم یا احتمال افشای credential، کلیدهای مربوطه را rotate کنید.

محدودیت نرخ درخواست

برای حفظ پایداری سرویس و جلوگیری از ترافیک مخرب، ممکن است درخواست‌های API مشمول Rate Limit شوند.

در صورت عبور از Rate Limit مجاز، API پاسخ HTTP 429 برمی‌گرداند.

HTTP 429 JSON
{
  "error": {
    "code": "rate_limit_exceeded",
    "message": "Rate limit exceeded."
  }
}