JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

Home

كيف تستخدم الـ Webhooks لإنشاء أنظمة تفاعلية بين التطبيقات – تطبيق عملي في Laravel

 




✍️ مقدمة:

في عصر تكامل الأنظمة، أصبح من الضروري ربط تطبيقك بتطبيقات أخرى مثل: بوابات الدفع، خدمات البريد، أو حتى تطبيقاتك الداخلية.
لكن، ما الحل عندما لا تريد الاستعلام بشكل متكرر عن تغييرات حدثت في النظام الآخر؟
الإجابة: Webhooks.

في هذا المقال، نشرح بطريقة عملية كيف تستخدم Webhooks لربط التطبيقات ببعضها داخل مشروع مبني باستخدام Laravel – دون تعقيدات أو أدوات خارجية.

🚀 ما هو Webhook؟

الـ Webhook هو رابط (URL) ترسله إلى خدمة خارجية (مثل Stripe أو GitHub أو نظام داخلي)،
وكلما حدث حدث معين (مثل دفع، أو تعديل بيانات)، تقوم هذه الخدمة بإرسال طلب تلقائي (POST) إلى الرابط، مرفقًا معه بيانات الحدث.

📦 لماذا أستخدم Webhooks بدلًا من الاستعلامات التقليدية؟

(Webhooks) (Polling (الاستعلام الدوري))
(يُرسل فقط عند حدوث الحدث) (يستهلك وقتًا ويعمل بشكل متكرر)
(أقل استخدامًا للموارد) (يستهلك المعالج والذاكرة)
(أسرع في التفاعل) (يوجد تأخير بين كل طلب وآخر)

🛠️ بناء Webhook في Laravel – خطوة بخطوة

1. إنشاء Route لاستقبال الطلبات

Route::post('/webhooks/payment', [WebhookController::class, 'handle']);

2. إنشاء Controller للتعامل مع البيانات

php artisan make:controller WebhookController
public function handle(Request $request)
{
    $payload = $request->all();

    // تحقق من نوع الحدث
    if ($payload['event'] === 'payment_success') {
        // تنفيذ منطق معين مثل تحديث حالة الفاتورة
        Invoice::where('reference', $payload['invoice_id'])->update(['status' => 'paid']);
    }

    return response()->json(['status' => 'received']);
}

3. تأمين Webhook باستخدام Secret Key

لحماية الرابط من أي طلبات غير صالحة:

if ($request->header('X-Webhook-Secret') !== env('WEBHOOK_SECRET')) {
    abort(403, 'Unauthorized');
}

وفي ملف .env:

WEBHOOK_SECRET=my_secure_key_123

🧪 تجربة Webhook محليًا باستخدام ngrok

إذا كنت تطور محليًا وتحتاج لاستقبال Webhook من خدمة خارجية، استخدم:

ngrok http 8000

انسخ الرابط الذي يبدأ بـ https:// وأرسله للخدمة.

🌍 أمثلة على خدمات تستخدم Webhooks:

  • Stripe: عند الدفع أو إلغاء الاشتراك

  • GitHub: عند push أو فتح Pull Request

  • Slack: إرسال إشعارات تلقائية

  • Twilio: عند وصول رسالة أو اتصال جديد

📌 أفضل الممارسات:

  • سجّل جميع الطلبات الواردة من Webhooks

  • تحقق دائمًا من البيانات قبل تخزينها

  • لا تفترض صحة البيانات – تحقق من التوقيع أو المفتاح السري

  • أرسل دائمًا استجابة ناجحة (200 OK) بعد المعالجة

✅ الخلاصة:

Webhooks هي طريقة قوية لإنشاء تطبيقات تفاعلية ومتزامنة دون تحميل الخوادم بطلبات متكررة.
في Laravel، يمكنك بناء Webhook بسهولة خلال دقائق، وتحويل تطبيقك إلى نظام متكامل مع أي خدمة خارجية.

NameEmailMessage