条纹收银员 Webhooks

Stripe Cashier Webhooks

我正在寻找有关在 Stripe Cashier 中使用 Webhooks 控制器的说明,如 Laravel 文档中所述,因为我无法确认我的应用程序正在接收 Webhook 事件:

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

文档建议像这样指向 webhook 控制器的路由:

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

路由中的URI必须修改为我的Stripe设置中的URI。在测试环境中,我使用 ngrok 来公开我的本地服务器。

我想要澄清的是 URI 应该用于测试和生产。对于测试,我应该只使用 ngrok 转发 url(例如 http://3a4bfceb.ngrok.com),还是我需要在 public 目录中有一个脚本来处理来自 Stripe 的 webhook 事件。

我不确定控制器是否能够使用 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 WebhookController.php 提供的功能之外是否还需要额外的处理脚本,我将不胜感激。

关于 URI,local/test 和生产 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 包的一部分)处理所有传入事件,因此无需创建包含 file_get_contents 200 响应的 stripewebhooks.php 文件Stripe 文档中描述的代码,用于没有 Cashier 的实现。

ngrok 当然可以,但那是手动测试,并不是您真正应该测试的方式 ;)

您可以在此处阅读更多关于本地测试条带 webhook 的信息:enter link description here

它使用专门设计的包来启用自动 webhook 测试,而无需通过 ngrok 或其他任何方式公开您的本地环境。

(全面披露:我和我的搭档写了博客 post 并提到了包)