الويب هوك وأحداث التكامل
ترسل 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:
{
"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:
{
"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-Signature | HMAC-SHA256(body, secret) بصيغة hex |
| (ترويساتك المخصصة) | ما هيّأه المدير (مفاتيح API وغيرها) |
استجب بأي 2xx خلال 15 ثانية. غير ذلك يُعاد حتى 5 محاولات بتباطؤ خطي (1، 2، 3، 4 دقائق) ثم يوضع في قائمة الفشل — مرئي وقابل لإعادة الإرسال من الإعدادات ← Webhooks ← التسليمات.
التحقق من التوقيع
Node.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:
$expected = hash_hmac('sha256', $rawBody, $secret);
$valid = hash_equals($expected, $request->header('X-Memvera-Signature'));احسب HMAC على جسم الطلب الخام
حلّل JSON بعد التحقق فقط — إعادة التسلسل قد تغيّر ترتيب المفاتيح وتكسر التوقيع.
الاختبار
استخدم زر إرسال اختبار بجانب اشتراكك — يرسل حدث test.ping ويعرض رمز استجابة نهايتك. موقع webhook.site مفيد أثناء التطوير.