Я провожу выходные, пытаясь выяснить Stripe Webhooks, но до сих пор не нашел способа отладить ответ. Это мой текущий код:
http_response_code(200);
// set stripe api key
Stripe::setApiKey(env('STRIPE_SECRET'));
$endpoint_secret = 'whsec_XXX';
$payload = @file_get_contents('php://input');
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
$event_json = json_decode($payload);
try {
$event = \Stripe\Webhook::constructEvent(
$payload, $sig_header, $endpoint_secret
);
} catch(\UnexpectedValueException $e) {
// Invalid payload
http_response_code(400);
exit();
} catch(\Stripe\Error\SignatureVerification $e) {
// Invalid signature
http_response_code(400);
exit();
}
$event_id = $event_json->id;
if(isset($event_json->id)) {
try {
// to verify this is a real event, we re-retrieve the event from Stripe
$event = \Stripe\Event::retrieve($event_id);
$invoice = $event->data->object;
// successful payment, both one time and recurring payments
if($event->type == 'charge.succeeded') {
$customer = \Stripe\Customer::retrieve($invoice->customer);
$email = $customer->email;
\Mail::send('emails.new-userlike',
array(
'user' => $customer
), function($message) {
$message->from('info@friendships.me', 'friendships.me');
$message->to('info@friendships.me')->subject('Test');
});
}
// failed payment
if($event->type == 'charge.failed') {
// send a failed payment notice email here
}
} catch (Exception $e) {
// something failed, perhaps log a notice or email the site admin
}
}
Это приводит к ошибке 500 ... ... ._.
Но это не проблема, у меня это уже работало. Дело в том, что мне нужно проверить подписку SEPA для ответа charge.failed
или charge.succeeded
и только при успешной оплате создать подписку.
Как получить доступ к идентификатору подписки в этом веб-крюке? Или лучше, как отладить ответ? Потому что даже это не отправил ответ:
http_response_code(200);
$payload = @file_get_contents('php://input');
$event_json = json_decode($payload);
print_r("test");