【发布时间】:2020-06-24 09:50:24
【问题描述】:
所以我是条纹新手,我正在尝试使用 webhook 获取结帐付款意图响应
我的目的是将结帐响应发送到我的仪表板 Angular 应用程序,以便我可以保存有关客户的数据以及付款是否成功
所以我使用了这段代码:
<?php
require_once('vendor/autoload.php');
\Stripe\Stripe::setApiKey('sk_test_xxx');
$payload = @file_get_contents('php://input');
$event = null;
try {
$event = \Stripe\Event::constructFrom(
json_decode($payload, true)
);
} catch(\UnexpectedValueException $e) {
// Invalid payload
http_response_code(400);
exit();
}
$payload = @file_get_contents('php://input');
$event = null;
try {
$event = \Stripe\Event::constructFrom(
json_decode($payload, true)
);
} catch(\UnexpectedValueException $e) {
// Invalid payload
http_response_code(400);
exit();
}
print_r($payload);
// Handle the event
switch ($event->type) {
case 'payment_intent.succeeded':
$paymentIntent = $event->data->object; // contains a \Stripe\PaymentIntent
echo 'success';
// Then define and call a method to handle the successful payment intent.
// handlePaymentIntentSucceeded($paymentIntent);
break;
case 'payment_intent.payment_failed':
$paymentMethod = $event->data->object; // contains a \Stripe\PaymentMethod
echo 'failed';
// Then define and call a method to handle the successful attachment of a PaymentMethod.
// handlePaymentMethodAttached($paymentMethod);
break;
// ... handle other event types
default:
// Unexpected event type
http_response_code(400);
exit();
}
http_response_code(200);
然后我运行结帐测试,完成并获得成功页面后,我尝试访问 www.website.com/webhooks.php 它总是给我一个 400 错误,
我不知道我在做什么是错的,也不知道如何使用 webhook 我还在弄清楚它,所以有人可以告诉我该怎么做
【问题讨论】:
-
尝试通过浏览器地址栏“访问”这个 webhook 脚本毫无意义。这将导致一个 GET 请求,但该脚本希望获取 POST 到它的 JSON 数据。对不存在的有效负载进行 JSON 解码可能只会让您返回 null 或 false,然后尝试基于此创建条带事件将简单地引发异常,因此您会得到 400 响应。
-
所以我需要发出一个帖子请求,对吧?但是我应该从哪里发送它以及使用什么参数?
-
“所以我需要发出一个 post 请求,对吗?” – 如果你想调试你的脚本,自己发送一组测试数据,那么你可以这样做那个,是的。 (但你知道这不是 webhook 实际工作的方式,在实践中,对吧?他们的系统会向你的系统发出 POST 请求。)“使用什么参数?” i> - 这应该在他们的 API 文档中的某个地方进行解释。
-
这是我第一次使用 webhook,我不知道它是如何工作的
-
那么你首先应该做一些阅读。如果您只是谷歌一下,有很多解释可用。
标签: php stripe-payments webhooks