پرش به محتویات

چطور وب‌هوک بله را در لاراول ۱۳ تنظیم کنیم؟

لاراول بله فقط نشانی دریافتی بله را با setWebhook تنظیم می‌کند. دریافت درخواست اچ‌تی‌تی‌پی، مسیر، کنترل‌کننده، اعتبارسنجی برنامه و پردازش رویداد بر عهدهٔ برنامهٔ لاراول استفاده‌کننده است.

وب‌هوک یک ورودی عمومی است

مسیر وب‌هوک عمومی و درخواست‌های رسیده به آن غیرقابل‌اعتماد هستند. خارج‌کردن مسیر از محافظت درخواست لاراول، معتبر بودن درخواست را ثابت نمی‌کند. پیش از هر پردازش واقعی، برنامه باید سیاست امنیتی مناسب خود برای ورودی عمومی، مجوز دسترسی و محدودکردن نرخ درخواست را اعمال کند. مستندات رسمی فعلی بله سازوکار امضای اختصاصی یا سرآیند قابل‌اتکایی برای اعتبارسنجی معرفی نکرده‌اند؛ بنابراین نباید سازوکاری فرض یا ساخته شود.

یک مسیر برای دریافت رویداد بسازید

در routes/web.php یک مسیر عمومی برای درخواست‌های ارسالی بله تعریف کنید:

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;

Route::post('/bale/webhook', function (Request $request) {
    $update = $request->all();

    // این نمونه فقط داده را دریافت می‌کند. پردازش واقعی را پس از
    // اعمال بررسی‌های امنیتی مناسب برنامه انجام دهید.

    return response()->noContent();
});

محافظت درخواست را فقط برای همان نشانی خارج کنید

درخواست خارجی بله توکن محافظت درخواست مرورگر لاراول را ندارد. در bootstrap/app.php دقیقاً همان نشانی مسیر را از اعتبارسنجی محافظت درخواست خارج کنید:

use Illuminate\Foundation\Configuration\Middleware;

->withMiddleware(function (Middleware $middleware): void {
    $middleware->validateCsrfTokens(except: [
        'bale/webhook',
    ]);
})

نشانی در این فهرست باید با مسیر یکی باشد؛ در این مثال bale/webhook است، نه نشانی کامل.

نشانی عمومی امن را در بله ثبت کنید

پس از استقرار برنامه، نشانی عمومی امن همان مسیر را ثبت کنید:

use Sajaddp\Bale\Facades\Bale;

Bale::setWebhook('https://example.test/bale/webhook');

$info = Bale::getWebhookInfo();

// در صورت نیاز به دریافت دوره‌ای یا جایگزینی نشانی:
Bale::deleteWebhook();

setWebhook نشانی را برای تحویل رویداد به بله می‌دهد؛ نشانی باید دقیقاً با مسیر برنامه و نسخهٔ امن و عمومی آن مطابقت داشته باشد.

مرزهای پکیج و برنامه

این پکیج راز وب‌هوک، میان‌افزار سفارشی، WebhookController، مسیر یا مسیردهی پاسخ انتخاب فراهم نمی‌کند. این موارد را از رابط برنامه‌نویسی تلگرام حدس نزنید. طراحی احراز هویت، محدودکردن نرخ، فرستادن به صف و پاسخ‌گویی در برنامهٔ لاراول شما قرار دارد.

اگر با ۴۱۹ یا نشانی نادرست روبه‌رو شدید، رفع اشکال را ببینید. برای دریافت دوره‌ای به‌جای وب‌هوک، راهنمای دریافت دوره‌ای را بخوانید.