المطورون · Webhooks

اعرف متى
يتغيّر شيء ما.

ترسل BINK حدث JSON موقّعًا بطلب POST إلى نقطة النهاية الخاصة بك كلما حدث شيء على البنية — تكتمل عملية دفع، أو يُسوّى تحويل صادر، أو ينتهي استرداد. تحقق من التوقيع، واستجب، دون استطلاع متكرر.

التسليم · نقطة النهاية الخاصة بك
{
  "type": "payment.completed",
  "data": {
    "id": "pay_8f2a1c",
    "reference": "BINK-8F2A1C",
    "status": "PAID",
    "amountMinor": "5000",
    "currency": "EGP"
  }
}
خادمكتم التأكيد
HTTP/1.1 200 OK

شكل الحمولة والترويسات الفعلي من المرجع. للعرض والنسخ فقط.

دورة الحياة

من الحدث حتى التأكيد.

  1. يقع حدث

    يحدث شيء على البنية — تكتمل عملية دفع، أو تُسوّى عملية تحويل صادر.

  2. ترسله BINK بطلب POST

    يُسلَّم متن JSON موقّع إلى نقطة النهاية التي سجّلتها.

  3. تتحقق منه

    أعد حساب HMAC على {timestamp}.{raw body} وقارنه بقيمة v1.

  4. تعالجه

    تصرّف حسب نوع الحدث وحدّث نظامك — بطريقة آمنة من التكرار.

  5. تعيد 200

    أكّد الاستلام. يُعاد إرسال الاستجابات غير 2xx مع تباعد تدريجي.

تحقق من كل عملية تسليم

موقّعة بـ HMAC-SHA256.

تحمل كل عملية تسليم الترويسة X-Binkpay-Signature بالصيغة t=<timestamp>,v1=<hmac>، مع نوع الحدث في X-Binkpay-Event. أعد حساب HMAC على {timestamp}.{raw body} باستخدام مفتاحك السري وقارن.

X-Binkpay-SignatureX-Binkpay-EventtimingSafeEqual
التحقق · Node
import crypto from 'crypto';

function verifySignature(rawBody, header, secret) {
  const [tPart, v1Part] = header.split(',');
  const timestamp = tPart.split('=')[1];
  const signature = v1Part.split('=')[1];
  const expected = crypto
    .createHmac('sha256', secret)
    .update(`${timestamp}.${rawBody}`)
    .digest('hex');
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature),
  );
}
كتالوج الأحداث

ثلاثة عشر حدثًا يمكنك الاشتراك فيها.

المرجع الكامل
المدفوعات
  • payment.createdأُنشئت عملية دفع أو رابط دفع.
  • payment.completedتم تحصيل عملية دفع بنجاح.
  • payment.expiredانتهت صلاحية رابط دفع قبل سداده.
  • payment.cancelledأُلغيت عملية دفع معلّقة.
المبالغ المستردة
  • refund.createdقُدّم طلب استرداد.
  • refund.completedاكتمل الاسترداد وأُعيدت الأموال.
التحويلات الصادرة
  • payout.requestedطُلب تحويل صادر، وهو بانتظار الموافقة.
  • payout.approvedتمت الموافقة على تحويل صادر ووُضع في قائمة الانتظار.
  • payout.completedسُوّي تحويل صادر إلى حسابك البنكي.
  • payout.failedفشلت محاولة تحويل صادر.
  • payout.rejectedرُفض طلب تحويل صادر.
الحساب
  • kyb.status_changedتغيّرت حالة التحقق من نشاطك التجاري.
  • apikey.revokedأُلغي مفتاح API.

يُعاد إرسال أي استجابة غير 2xx مع تباعد أُسّي، ويمكن إعادة إرسال أي عملية تسليم سابقة من لوحة التحكم — راجع المرجع لمعرفة نافذة إعادة المحاولة.

بوابة المطورين

تابع الرحلة.

Webhooks

أدخل أحداث BINK إلى نظامك.

سجّل نقطة نهاية، وتحقق من التوقيع، واستجب لتغيّرات الحالة لحظة حدوثها.