2015-02-17 3 views
0

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

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

Документов советуют указать маршрут к контроллеру webhook, как это:

Route::post('stripe/webhook', 'Laravel\Cashier\[email protected]'); 

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 предложения кассира, я был бы признателен.

+0

Это будет работать нормально с ngrok, в моем опыте. – ceejayoz

ответ

0

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

Local/Test: http://3a4bfceb.ngrok.com/laravel/public/stripewebhooks

Производство: http://website.com/stripewebhooks

маршрут в обоих случаев будет:

Route::post('stripewebhooks','Laravel\Cashier\[email protected]'); 

WebhookController.php (который является частью пакета Кассовый) обрабатывает все входящих событий, поэтому нет необходимости создавать такой файл, как stripewebhooks.php, содержащий file_get_contents код ответа 200, как описано в документах Stripe для реализации без кассира.

1

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

Вы можете прочитать немного больше о тестировании нашивки webhooks локально здесь: enter link description here

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

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