Использовали ли вы composer для добавления зависимостей Stripe? Если да, включаете ли вы файл автозагрузки из composer? Классы Stripe должны быть загружены или включены каким-либо образом. Это часть ошибки 500.
Полный рабочий код из моего теста:
<?php
require '../vendor/autoload.php'; \\ replace with the actual location of your autoload file
$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();
}
// Handle the event
switch ($event->type) {
case 'payment_intent.succeeded':
$paymentIntent = $event->data->object;
$paymentintentid = $paymentIntent['id']; \\ $paymentIntent->id works as well.
echo $paymentintentid;
break;
default:
// Unexpected event type
http_response_code(400);
exit();
}
http_response_code(200);
?>
Если вы хотите сделать еще один шаг, я рекомендую отправить ответ обратно в Stripe, чтобы вы могли смотрите их при тестировании в пользовательском интерфейсе.
Пример ответа:
// Handle the event
switch ($event->type) {
case 'payment_intent.succeeded':
$paymentIntent = $event->data->object;
// Store the payment ID from the webhook
$paymentintentid = $paymentIntent['id'];
// Set array for successful response
$response = array(
'http_code' => 200,
'payment_id' => $paymentintentid,
'response' => 'webhook caught successfully'
);
// Set status code and echo back response
http_response_code(200);
echo json_encode($response, true);
break;
default:
// Unexpected event type, set array for this case
$response = array(
'http_code' => 400,
'response' => 'Unexpected event type'
);
// Set status code and echo back response
http_response_code(400);
echo json_encode($response, true);
exit();
}
Пример тестирования, отображаемый в пользовательском интерфейсе с полосой для ответа 200:
Пример ответа с полосой 200 в пользовательском интерфейсе Stripe, показывающем ответ от моего сервера
Пример тестирования, показанный в пользовательском интерфейсе Stripe для ответа 400:
Пример ответа Stripe 400 в пользовательском интерфейсе Stripe, показывающий ответ от моего сервера
Я тоже новичок, дайте мне знать, если это помогло:).