مین مواد پر جائیں

فوری آغاز

کم از کم ادائیگی انٹیگریشن: API کے ذریعے انوائس بنانا اور ادائیگی کی اطلاع کو ہینڈل کرنا۔ آخری سیکشن آرڈر کی تکمیل کے بارے میں ہے۔ مثالیں اپنے آپ میں مکمل ہیں؛ ان میں کوئی SDK استعمال نہیں ہوتا۔

ٹپ

AI ایجنٹ کے ساتھ کام کر رہے ہیں؟ اسے اس صفحے کا markdown ورژن دیں۔ اس میں آپ کی سائٹ یا اسٹور کے لیے انٹیگریشن بنانے کی کافی تفصیل موجود ہے۔

پیشگی ضروریات

قدرکہاں سے حاصل کریں
API کلیدانٹیگریشنز (Integrations) سیکشن
پروجیکٹ IDپروجیکٹس (Projects) سیکشن
Webhook کی خفیہ کلیدپروجیکٹ کی سیٹنگز

اسی پروجیکٹ کی سیٹنگز میں Webhook URL درج کریں — آپ کے سرور پر اطلاعات کے ہینڈلر کا ایڈریس۔ صرف HTTPS؛ سروس ری ڈائریکٹس کو فالو نہیں کرتی۔

مثالیں ٹیسٹ قدریں استعمال کرتی ہیں — انہیں اپنی قدروں سے بدل دیں۔

انوائس بنانا

POST https://api.bitsby.app/invoices/create، جبکہ API کلید Authorization ہیڈر میں جاتی ہے۔

پیرامیٹرلازمیقدر
projectIdہاںپروجیکٹ ID، UUID
amountFiatہاںانوائس کی رقم
currencyFiatہاںکرنسی: USD، EUR، RUB
timeToPayہاںادائیگی کی مہلت گھنٹوں میں: 0.5، 1، 3، 6، 12
descriptionنہیںتفصیل، گاہک کو ادائیگی کے صفحے پر نظر آتی ہے
serviceDataنہیںسروس ڈیٹا، گاہک کو نظر نہیں آتا۔ ہم آرڈر نمبر بھیجنے کی تجویز دیتے ہیں: یہ ادائیگی کی اطلاع میں واپس آتا ہے
curl -X POST https://api.bitsby.app/invoices/create \
-H "Authorization: Token MSvL2ltaDZdWVjmZURURMVWhqSJLT2NURjhL2Fla1Z1T1IxQTltKs1T3Ay" \
-F "projectId=9deea1e2-0c08-41a3-bdc2-a34eada3892d" \
-F "amountFiat=49.90" \
-F "currencyFiat=USD" \
-F "timeToPay=1" \
-F "description=Order 4172" \
-F "serviceData=order-4172"

جواب:

{
"result": "success",
"data": {
"id": "ade9550d-3dc7-4fd3-b94e-3b4c12aaaa0c",
"uid": "MXNj4m8HhcM4",
"createDatetime": "2026-09-14 10:12:03",
"timeToPayDatetime": "2026-09-14 11:12:03",
"commissionFiatUSD": 0.5,
"amountFiatUSD": 49.9,
"url": "https://dash.bitsby.app/invoices/pay/MXNj4m8HhcM4"
}
}

data.id کو آرڈر کے ساتھ محفوظ کریں اور گاہک کو data.url پر بھیجیں — ادائیگی کا صفحہ۔ لنک کسی بھی طریقے سے پہنچائیں: ری ڈائریکٹ، ای میل، بوٹ کا پیغام۔ انوائس timeToPayDatetime (UTC) تک درست رہتی ہے۔

اطلاع کو ہینڈل کرنا

جب انوائس کا اسٹیٹس ادا شدہ (Paid) ہو جاتا ہے، تو سروس پروجیکٹ کے Webhook URL پر POST درخواست بھیجتی ہے۔ باڈی JSON میں ہوتی ہے؛ دستخط ہیڈرز میں ہوتا ہے:

ہیڈرقدر
X-Timestampبھیجنے کا وقت، سیکنڈز میں unix time
X-Signaturesha256= + اسٹرنگ <timestamp>.<request body> کا hex HMAC-SHA256

دستخط کی کلید Webhook کی خفیہ کلید ہے۔ دستخط کا حساب درخواست کی خام باڈی پر ہوتا ہے، اس لیے JSON پارس کرنے سے پہلے اسے جانچیں۔

<?php
$secret = 'k7QwR2mZ9tXbN4vL8sJpH3dF6yA1cE0u';

$body = file_get_contents('php://input');
$timestamp = $_SERVER['HTTP_X_TIMESTAMP'] ?? '';
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';

// Reject replayed requests: allow up to 5 minutes of clock drift
if (abs(time() - (int)$timestamp) > 300) {
http_response_code(400);
exit;
}

$expected = 'sha256='.hash_hmac('sha256', $timestamp.'.'.$body, $secret);

if (!hash_equals($expected, $signature)) {
http_response_code(403);
exit;
}

$invoice = json_decode($body, true)['invoice'];

if ($invoice['status'] === 'paid') {
// $invoice['serviceData'] — the order id passed at creation: 'order-4172'
// $invoice['amountFiat'] — the original invoice amount: 49.9
// Issue the order here, see the next section
}

http_response_code(200);

10 سیکنڈ کے اندر 2xx کوڈ کے ساتھ جواب دیں۔ کوئی اور کوڈ، ری ڈائریکٹ یا ٹائم آؤٹ ناکام ڈیلیوری شمار ہوتا ہے: سروس 5 منٹ سے 24 گھنٹے تک بڑھتے ہوئے وقفوں سے دوبارہ کوشش کرتی ہے، پھر رک جاتی ہے۔ طویل پروسیسنگ کو قطار میں منتقل کریں: پہلے 200 کے ساتھ جواب دیں، پھر آرڈر پر کام کریں۔

اطلاع کا مکمل فارمیٹ اور فیلڈز کی تفصیل Webhook URL سیکشن میں ہے۔

آرڈر کی تکمیل

paid اسٹیٹس والی جانچ شدہ اطلاع ادائیگی کی تصدیق کرتی ہے۔ تکمیل کے مراحل:

  1. آرڈر تلاش کریں invoice.serviceData کے ذریعے — وہ قدر جو آپ نے انوائس بناتے وقت بھیجی تھی (order-4172
  2. invoice.id کے ذریعے جانچیں کہ آیا اس انوائس کا آرڈر پہلے ہی مکمل ہو چکا ہے۔ ایک ہی invoice.id والی اطلاع ایک سے زیادہ بار آ سکتی ہے — آرڈر صرف ایک بار مکمل کریں اور پروسیس ہو جانے کا نشان محفوظ کریں۔
  3. رقم اور کرنسی جانچیں invoice.amountFiat اور invoice.currencyFiat سے ملا کر — یہ انوائس کی اصل قدریں ہیں اور کبھی نہیں بدلتیں۔ سروس amountFiatUSD کو اصل میں موصول ہونے والی رقم سے بدل دیتی ہے۔ رقموں کا موازنہ نمبرز کے طور پر کریں، اسٹرنگز کے طور پر نہیں: آخر کے صفر ختم ہو جاتے ہیں، اس لیے 49.90 بطور 49.9 آتا ہے۔ اگر قدریں آرڈر سے مطابقت نہ رکھیں، تو تکمیل کے بجائے انوائس کو دستی جائزے کے لیے بھیجیں — ایسے معاملات کی تفصیل ادائیگیوں کو منسلک کرنا اور رقم کا فرق میں ہے۔
  4. آرڈر مکمل کریں اور اسے پروسیس شدہ کے طور پر نشان زد کریں۔

تکمیل کے وقت ادائیگی کی مہلت نہ جانچیں: ادائیگی کی آن چین تصدیق timeToPayDatetime کے بعد ہو سکتی ہے، اور تاجر ادائیگی کو دستی طور پر انوائس سے منسلک کر سکتا ہے۔ اطلاع بذات خود ادائیگی کی تصدیق کرتی ہے۔

آگے کیا ہے