ابدأ التجربة المجانية
14 يوماً تجريبي مجاني - بدون بطاقة ائتمان
Hisab
الأسعار
المبيعات: 64 43 22 649 212+
ابدأ التجربة المجانية

14 يوماً تجريبي مجاني - بدون بطاقة ائتمان

تسجيل الدخول

Webhooks

أحداث تصلك بنفسها

يوقع حساب أحداث الفواتير والعملاء ويسلمها إلى نقطتك، مع إعادة محاولات تلقائية. كل شيء يُضبط من لوحة التحكم.

9أنواع أحداث|HMAC-SHA256

الإعداد

تُدار Webhooks بالكامل من لوحة التحكم. لا حاجة لأي استدعاء API لتسجيل واحدة.

  1. 1

    في لوحة التحكم، افتح الإعدادات ثم Webhooks، وأضف نقطة HTTPS الخاصة بك.

  2. 2

    اختر الأحداث التي تريد استقبالها وانسخ سر التوقيع. ستحتاجه للتحقق من التسليمات.

  3. 3

    أعد 2xx بسرعة من نقطتك. أي نتيجة أخرى تُعتبر فشلاً ويعاد المحاولة.

يشمل Professional عشر نقاط Webhook؛ وFiduciaire بلا حد. يمكنك إيقاف نقطة مؤقتاً أو تدوير سرها أو إعادة تشغيل التسليمات الفاشلة من لوحة التحكم.

الأحداث

تسعة أنواع أحداث تُرسل اليوم، تغطي دورة حياة الفاتورة وتغييرات العملاء.

invoice.createdأُنشئت مسودة فاتورة
invoice.updatedعُدلت مسودة فاتورة
invoice.finalizedحصلت فاتورة على رقمها الرسمي
invoice.sentوُضعت علامة مُرسلة على فاتورة
invoice.paidوُضعت علامة مدفوعة على فاتورة
invoice.voidedأُلغيت فاتورة
customer.createdأُنشئ عميل
customer.updatedعُدل عميل
customer.deletedأُرشف عميل

الحمولة

التسليمات هي POST بصيغة JSON تحمل اسم الحدث ولقطة المورد ومعرف مؤسستك ووقت الإصدار:

delivery
POST https://example.ma/hisab-webhook
Content-Type: application/json
X-Webhook-Signature: v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd
X-Webhook-Timestamp: 1780750800
X-Webhook-Event: invoice.paid
X-Webhook-Delivery-Id: del_3f8c2a91
User-Agent: Hisab-Webhooks/1.0

{
  "event": "invoice.paid",
  "data": {
    "id": "inv_8f3a91",
    "invoice_number": "FAC-2026-0142",
    "status": "paid",
    "total": "12480.00"
  },
  "organization_id": "org_4d11a7",
  "created_at": "2026-06-05T14:00:00Z"
}
eventstring
dataobject
organization_idstring
created_atdatetime (ISO 8601)

التوقيعات

كل تسليم موقع بسر نقطتك: HMAC-SHA256 على الطابع الزمني ثم نقطة ثم الجسم الخام. تحقق دائماً قبل الوثوق بالحمولة.

X-Webhook-Signature: v1=HMAC_SHA256(secret, timestamp + "." + payload)
Node.js
import { verifyWebhookSignature } from 'hisab-sdk';

export async function POST(req: Request) {
  const payload = await req.text();

  const valid = verifyWebhookSignature({
    payload,
    signature: req.headers.get('x-webhook-signature')!,
    timestamp: req.headers.get('x-webhook-timestamp')!,
    secret: process.env.HISAB_WEBHOOK_SECRET!,
  });

  if (!valid) return new Response('Invalid signature', { status: 401 });
  return new Response('ok');
}
قارن التوقيعات بدالة ثابتة الزمن (تفعل ذلك الحزمة والأمثلة أعلاه) وارفض الطوابع الزمنية الأقدم من 5 دقائق لصد هجمات الإعادة.

إعادة المحاولات

ينجح التسليم بأي استجابة 2xx خلال 30 ثانية. غير ذلك يعاد حتى 5 مرات بمهل متزايدة:

المحاولةالمهلة
1~1 min
2~5 min
3~15 min
4~1 h
5~4 h

تحمل المهل نحو 20% من العشوائية (jitter) فالأوقات الدقيقة تتغير. بعد الفشل الخامس يوسم التسليم فاشلاً؛ يمكنك إعادة تشغيله يدوياً من لوحة التحكم.

ممارسات جيدة

  • تحقق من كل توقيع

    ارفض كل ما يفشل في التحقق. فهو لم يأتِ من حساب.

  • استجب بسرعة

    أكّد بـ 2xx قبل أي معالجة ثقيلة؛ ينتهي وقت التسليم بعد 30 ثانية.

  • أزل التكرار بمعرف التسليم

    تعيد المحاولات استخدام ترويسة X-Webhook-Delivery-Id. خزّنه وتجاوز ما عالجته سابقاً.

  • ضع العمل الثقيل في طابور

    ادفع الحدث إلى طابور أو مهمة خلفية بدلاً من معالجته مباشرة.

  • احرس السر

    خزّنه كما تخزن كلمة سر ودوّره من لوحة التحكم إذا تسرب يوماً.