Skip to content

الويب هوك وأحداث التكامل

ترسل Memvera أحداث JSON موقّعة إلى أنظمتك (ERP، منصات التواصل، BI) لحظة حدوثها — دون استعلام دوري. يهيئ مدير النادي النهايات من الإعدادات ← Webhooks في بوابة الموظفين: رابط الوجهة، الأحداث المطلوبة، ترويسات مصادقة اختيارية (مثل مفتاح API الخاص بك)، وسر التوقيع.

دليل الأحداث

المجالالأحداث
العضوياتmembership.contract.activated (بيع) · membership.contract.renewed · membership.contract.cancelled · التجميد/إلغاؤه · الانتهاء · إعادة الكتابة · الحظر/إلغاؤه · تغيير الباقة · المسودة · إعادة التفعيل · فشل التجديد · انتهاء المهلة · توليد العقد · طلب/سحب الإلغاء
الجدولةscheduling.booking.created · scheduling.booking.cancelled · scheduling.booking.attended · scheduling.booking.no_show · scheduling.session.conducted
الماليةfinance.payment.settled · finance.refund.issued · finance.retail.sale.completed · finance.cash.variance_flagged
الأشخاص والدخولidentity.member.created (أعضاء وعملاء محتملون — انظر profile_type) · facility.member.checked_in
اللياقةworkouts.activity.recorded

اشترك في أحداث محددة أو * للجميع.

أمثلة الحمولة

scheduling.booking.created:

json
{
  "booking_id": "01j8...", "brand_id": "01hz...", "member_id": "01j2...",
  "session_id": "01j8...", "session_type": "gx", "class_name": "HIIT 45",
  "starts_at": "2026-08-05T18:00:00+03:00", "club_id": "01hz...", "status": "booked"
}

scheduling.booking.cancelled — قيمة reason إحدى: member، staff، freeze، session_cancelled:

json
{
  "booking_id": "01j8...", "brand_id": "01hz...", "member_id": "01j2...",
  "session_id": "01j8...", "starts_at": "2026-08-05T18:00:00+03:00",
  "reason": "freeze", "previous_status": "booked"
}

عقد التسليم

كل تسليم هو POST بهذه الترويسات:

الترويسةالمعنى
X-Memvera-Eventاسم الحدث
X-Memvera-Deliveryمعرف تسليم فريد — أزل التكرار عليه؛ المحاولات المعادة تعيد استخدامه
X-Memvera-SignatureHMAC-SHA256(body, secret) بصيغة hex
(ترويساتك المخصصة)ما هيّأه المدير (مفاتيح API وغيرها)

استجب بأي 2xx خلال 15 ثانية. غير ذلك يُعاد حتى 5 محاولات بتباطؤ خطي (1، 2، 3، 4 دقائق) ثم يوضع في قائمة الفشل — مرئي وقابل لإعادة الإرسال من الإعدادات ← Webhooks ← التسليمات.

التحقق من التوقيع

Node.js:

js
import crypto from "node:crypto";

function verify(rawBody, signatureHeader, secret) {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}

PHP:

php
$expected = hash_hmac('sha256', $rawBody, $secret);
$valid = hash_equals($expected, $request->header('X-Memvera-Signature'));

احسب HMAC على جسم الطلب الخام

حلّل JSON بعد التحقق فقط — إعادة التسلسل قد تغيّر ترتيب المفاتيح وتكسر التوقيع.

الاختبار

استخدم زر إرسال اختبار بجانب اشتراكك — يرسل حدث test.ping ويعرض رمز استجابة نهايتك. موقع webhook.site مفيد أثناء التطوير.