Полосатые вебхуки кассира

Я ищу разъяснения по использованию контроллера Webhooks в Stripe Cashier, как описано в Laravel Docs, поскольку я не могу подтвердить, что мое приложение получает события webhook:

http://laravel.com/docs/5.0/billing#handling-failed-payments

Документы советуют указать маршрут к контроллеру веб-перехватчика следующим образом:

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

URI в маршруте должен быть изменен, чтобы быть URI в моих настройках Stripe. В тестовой среде я использую ngrok для доступа к своему локальному серверу.

Я ищу разъяснения по поводу того, каким должен быть URI как для тестирования, так и для производства. Для тестирования я должен просто использовать URL-адрес переадресации ngrok (например, http://3a4bfceb.ngrok.com), или мне нужно иметь скрипт в общедоступном каталоге для обработки события веб-перехватчика из 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 тестирования и производства, а также с тем, требуется ли дополнительный сценарий обработки помимо того, что предлагает Cashier's WebhookController.php, я был бы признателен.


person user3691644    schedule 17.02.2015    source источник
comment
По моему опыту, это будет нормально работать с ngrok.   -  person ceejayoz    schedule 18.02.2015


Ответы (2)


ngrok, конечно, будет работать, но это ручное тестирование, которое на самом деле не так, как вы должны тестировать;)

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

он использует пакет, специально разработанный для автоматического тестирования веб-перехватчиков без необходимости раскрывать вашу локальную среду через ngrok или что-то еще.

(полное раскрытие: мой партнер и я написали как сообщение в блоге, так и упомянутый пакет)

person Sasa Tokic    schedule 23.04.2015

Что касается URI, локальные/тестовые и производственные URI выглядят примерно так (при условии, что используется ngrok):

Локальный/тестовый: 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 для реализации без Cashier.

person user3691644    schedule 19.02.2015