Webhooks
Otpera بيبعت POST على رابط HTTPS بتاعك لما يحصل حاجة في مساحة العمل. ضيف الروابط من لوحة التحكم ← Webhooks، وكل رابط ليه مفتاح توقيع خاص.
الأحداث
| الحدث | امتى |
|---|---|
order.created | طلب جديد اتعمل (API أو Shopify …) |
order.status_changed | حالة التأكيد اتغيرت (رد العميل، الفريق، انتهاء المدة) |
webhook.test | دوست إرسال تجربة من لوحة التحكم |
الهيدرز
| الهيدر | القيمة |
|---|---|
Otpera-Event-Id | معرّف ثابت للحدث، استخدمه لمنع التكرار |
Otpera-Event-Type | مثلًا order.status_changed |
Otpera-Timestamp | الوقت بالثواني (Unix) |
Otpera-Delivery-Attempt | رقم المحاولة |
Otpera-Signature | t=<unix>,v1=<hex> |
التحقق من التوقيع
v1 = HMAC-SHA256(secret, "<t>.<raw body>") بصيغة hex. اتحقق دايمًا على الـ body الخام، وارفض أي توقيت أقدم من ٥ دقايق. أمثلة Node.js وPHP كاملة في النسخة الإنجليزية.
Laravel
استثني رابط الـ Webhook من حماية CSRF، وإلا الطلبات هترجع 419.
التسليم وإعادة المحاولة
- أي رد
2xxخلال ١٠ ثواني يعتبر تسليم ناجح. - غير كده Otpera بيعيد بعد دقيقة، ٥ دقايق، ٣٠ دقيقة، ساعتين، و١٢ ساعة (٦ محاولات).
- التسليم مرة على الأقل والترتيب مش مضمون: امنع التكرار بـ
Otpera-Event-Id. - الرابط لازم يكون
https://عام (بورت 443 أو 8443)، والتحويلات (redirects) مش بتتتبع. - لوحة التحكم ← Webhooks بتعرض كل محاولة تسليم وتقدر تعيد الإرسال منها.