وب‌هوک‌ها و رویدادها | Layatanahi
dr

Api

وب‌هوک‌ها و رویدادها#

API تجارت در حال حاضر وب‌هوک‌های خروجی پیکربندی‌شدنی ارائه نمی‌کند. هیچ نقطه پایانی برای ثبت URL بازگشتی، هیچ راز امضایی برای مدیریت و هیچ صف تلاش دوباره تحویل برای نقاط مشترکین وجود ندارد.

این صفحه توضیح می‌دهد کدام سطح‌های رویداد واقعاً وجود دارند، تا یک یکپارچه‌سازی بتواند به‌جای انتظار برای وب‌هوکی که هرگز نمی‌رسد یک الگوی بااطمینان انتخاب کند.

آنچه امروز وجود دارد#

سطحجهتچه کسی می‌تواند استفاده کند
بازگشت‌های فراخوان payment gatewayارائه‌دهنده به برنامهفقط ارائه‌دهنده پرداخت
کانال‌های broadcastبرنامه به مرورگرکارمندان واردشده
جریان اطلاعیه‌هابرنامه به مرورگرکارمندان واردشده
polling API v2برنامه به کلاینتاعتبارنامه‌های یکپارچه‌سازی

بازگشت‌های فراخوان payment gateway#

یکپارچه‌سازی HesabPay نقاط سرور‌به‌سرور برای شروع یک نشست پرداخت و تأیید یک پرداخت را افشا می‌کند. این‌ها توسط برنامه یا ارائه‌دهنده فراخوانی می‌شوند، نه توسط مشترکین شخص ثالث:

نقطه پایانیهدف
POST /api/v1/hesabpay/create-sessionشروع یک نشست پرداخت میزبانی‌شده
POST /api/v1/hesabpay/verify-paymentتأیید یک پرداخت تکمیل‌شده

ارائه‌دهنده پس از checkout مشتری را به URL موفقیت یا شکست برنامه برمی‌گرداند. آن redirectها روبه‌کاربر هستند، نه وب‌هوک، و نباید به‌عنوان مدرک پرداخت تلقی شوند؛ مرحله تأیید (verify) همان گام معتبر است.

این نقاط پایانی به احراز هویت Sanctum نیاز دارند و بخشی از سطح یکپارچه‌سازی v2 نیستند.

کانال‌های broadcast#

Laravel Reverb رویدادهای لحظه‌ای را برای اطلاعیه‌ها و استریم چت به مرورگر می‌فرستد. کانال‌ها در routes/channels.php به ازای هر کاربر و هر تجارت مجاز می‌شوند.

سیستم‌های خارجی نمی‌توانند با یک توکن یکپارچه‌سازی به این کانال‌ها عضو شوند. آن‌ها برای زنده نگه‌داشتن رابط وب وجود دارند، نه برای تغذیه یک ERP.

جریان اطلاعیه‌ها#

برنامه جریان اطلاعیه‌ها را برای کارمند واردشده به‌صورت دوره‌ای می‌خواند (poll). نقاط پایانی زیر /api/v1/business/notifications قرار دارند و به نشست مرورگر متکی‌اند، بنابراین برای یک یکپارچه‌سازی سرور‌به‌سرور قابل استفاده نیستند.

اگر نیاز دارید بیرون از رابط کاربری به رویدادهای تجارت واکنش نشان دهید، به‌جای آن منابع تجارت را polling کنید.

الگوی پیشنهادی یکپارچه‌سازی#

تا وقتی وب‌هوک‌های خروجی در دسترس شوند، از polling با واترمارک استفاده کنید:

  1. تازه‌ترین created_at و id پردازش‌شده خود را برای هر منبع ذخیره کنید.
  2. /api/v2/sales?from=<watermark date> را با per_page=100 درخواست کنید.
  3. رشته‌هایی را که از قبل دارید دور بریزید، بقیه را پردازش کنید.
  4. واترمارک را به جلو منتقل کنید.
  5. با برنامه‌ای که با سهمیه‌تان هم‌خوان است تکرار کنید: برای مثال هر پنج دقیقه برای سفارش‌ها و ساعتی برای فروش‌ها.
منبعدوره پیشنهادیدلیل
سفارش‌ها5 دقیقهتغییرات وضعیت زمان‌حساس‌اند
فروش‌ها15–60 دقیقهگزارش‌گیری و مغایرت‌گیری
خریدهاساعتیاسناد تأمین‌کننده آهسته تغییر می‌کنند
موجودی15–60 دقیقهدسترس‌پذیری برای کانال‌های دیگر
محصولاتروزانهتغییرات کاتالوگ کم‌تعداد است

هنگام انتخاب دوره، سهمیه را رعایت کنید. یک polling پنج‌دقیقه‌ای 288 درخواست در روز به ازای هر نقطه پایانی است.

طراحی برای یک وب‌هوک آینده#

اگر بعداً وب‌هوک‌های خروجی افزوده شوند، طراحی یکپارچه‌سازی شما از قبل ایمن‌ترین حالت را دارد اگر:

  • id منبع را کلید خارجی اصلی خود نگه دارید؛
  • created_at را ذخیره کنید و به‌عنوان واترمارک به کار ببرید؛
  • پردازش خود را idempotent بسازید؛
  • تحویل تکراری را تحمل کنید؛
  • پیش از اعتماد به هر محموله، هدر امضای آینده را تأیید کنید.

Idempotency مهم‌ترین آن‌هاست: یک وب‌هوک ممکن است بیش از یک بار تحویل شود، و صفحه‌ای که polling شده هم همین‌طور.

آنچه ارائه نمی‌شود#

  • هیچ نقطه پایانی ثبت مشترک.
  • هیچ نوع رویداد یا کاتالوگ محموله.
  • هیچ لاگ تحویل یا پخش دوباره.
  • هیچ امضای HMAC برای رخدادهای خروجی.
  • هیچ فید websocket برای یکپارچه‌سازی‌ها.

برای جبران آن رابط وب را scrape نکنید. آن نشست‌محور است، بدون اطلاع تغییر می‌کند و قرارداد فقط‌خواندنی API را نقض می‌کند.

صفحات مرتبط#