Stripe webhook - это запрос GET (не POST) и всегда 404 ответа - PullRequest
0 голосов
/ 01 декабря 2018

Я интегрирую веб-зацепы Stripe в свою среду разработки (в режиме тестирования Stripe) и подтвердил, что все запросы поступают в виде запросов GET, а не запросов POST, как указано в документации.Я что-то упустил?

Маршруты Laravel:

Да:

Route::get(
    'stripe/webhook',
    '\Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook'
);

Нет:

Route::post(
    'stripe/webhook',
    '\Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook'
);

Кроме того, по какой-то причине, несмотря на то, что мое приложение возвращает ответ 200, и Стрип видит это, Стрип говорит, что отказал с ответом 404:

Screenshot from dashboard.stripe.com

Screenshot from dashboard.stripe.com

Любая помощь или понимание очень ценится!

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Вам не хватает только одного.Вы забыли исключить полосовые маршруты из проверки CSRF.

В Middlewares/VerifyCsrfToken.php

protected $except = [
    'stripe/*',
];
0 голосов
/ 29 января 2019

Быстрое продолжение и решение этой проблемы для дальнейшего использования: поскольку это сайт разработки / промежуточного размещения, он защищен базовой аутентификацией, и поэтому я (попытался) отключил базовую аутентификацию на маршруте / stripe / webhookв конфигурации Nginx:

location /stripe/webhook {
    auth_basic "off";
}

Однако этому не хватало специфики директивы try_files, и поэтому по какой-то причине он преобразовывал запрос из POST в GET.Вот обновленный и правильный конфиг:

location /stripe/webhook {
    try_files $uri $uri/ /index.php?$query_string;
    auth_basic "off";
}
...