Я ищу разъяснения по поводу использования контроллера Webhooks в Stripe Cashier, как описано в Документах Laravel, поскольку не могу подтвердить, что мое приложение получает события webhook:
http://laravel.com/docs/5.0/billing#handling-failed-payments
Документы советуют указывать маршрут к контроллеру webhook следующим образом:
Route::post('stripe/webhook', 'Laravel\Cashier\WebhookController@handleWebhook');
URI в маршруте должен быть изменен, чтобы быть URI в моих настройках Stripe. В среде тестирования я использую ngrok для показа моего локального сервера.
То, что я ищу для разъяснения о том, каким должен быть URI как для тестирования, так и для производства. Для тестирования я должен просто использовать URL-адрес пересылки ngrok (например, http://3a4bfceb.ngrok.com) или мне нужно иметь скрипт в общедоступном каталоге для обработки события webhook от Stripe.
Я не уверен, что контроллер способен обрабатывать получение данных с помощью handlePayload
функция или если мне нужно добавить дополнительный скрипт PHP (например, webhook.php
) с чем-то, как описано в документах Stripe, таких как:
// Set your secret key: remember to change this to your live secret key in production
// See your keys here https://dashboard.stripe.com/account
Stripe::setApiKey("sk_test_xxxxxxxxxxxxxxxxxxxxxxx");
// Retrieve the request's body and parse it as JSON
$input = @file_get_contents("php://input");
$event_json = json_decode($input);
// Do something with $event_json
http_response_code(200); // PHP 5.4 or greater
Если кто-то может помочь с тестированием и производственным URI и требуется ли дополнительный сценарий обработки сверх того, что кассир WebhookController.php
предложения, я был бы признателен.
ngrok, конечно, будет работать, но это ручное тестирование, которое не совсем то, что вы должны тестировать;)
Вы можете прочитать немного больше о тестировании полосовых веб-хуков локально здесь: введите описание ссылки здесь
он использует пакет, специально разработанный для включения автоматического тестирования веб-крюка без необходимости показа вашего локального окружения с помощью ngrok или чего-либо еще.
(полное раскрытие: мой партнер и я написали и блог, и упомянутый пакет)
Что касается URI, локальные / тестовые и производственные URI выглядят примерно так (предполагается, что используется ngrok):
Local / Test: http://3a4bfceb.ngrok.com/laravel/public/stripewebhooks
Производство: http://website.com/stripewebhooks
Маршрут в обоих случаях будет:
Route::post('stripewebhooks','Laravel\Cashier\WebhookController@handleWebhook');
WebhookController.php
(который входит в пакет Cashier) обрабатывает все входящие события, поэтому нет необходимости создавать файл, как stripewebhooks.php
содержащий file_get_contents
код ответа 200, как описано в документах Stripe для реализации без кассира.