Отладка полоски Webhook Event - PullRequest
       10

Отладка полоски Webhook Event

0 голосов
/ 11 ноября 2018

Я провожу выходные, пытаясь выяснить 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 ... ... ._.

enter image description here

Но это не проблема, у меня это уже работало. Дело в том, что мне нужно проверить подписку SEPA для ответа charge.failed или charge.succeeded и только при успешной оплате создать подписку.

Как получить доступ к идентификатору подписки в этом веб-крюке? Или лучше, как отладить ответ? Потому что даже это не отправил ответ:

http_response_code(200);
$payload = @file_get_contents('php://input');
$event_json = json_decode($payload);
print_r("test");

enter image description here

1 Ответ

0 голосов
/ 11 ноября 2018

Сначала я бы начал с простейшего из возможных обработчиков webhook

<?php
// Retrieve the request's body and parse it as JSON:
$input = @file_get_contents('php://input');
$event = json_decode($input);

http_response_code(200); // PHP 5.4 or greater

// echo the event id, evt_xxxyyyzzz
echo $event->id;

if($event->type == "charge.succeeded") {
   // you want the id of the charge rather than the event, ch_xxxyyzz
   echo $event->data->object->id;
}

?>

Когда вы используете функцию «отправить тестовый веб-крючок» на панели инструментов, вы должны увидеть в ответе что-то вроде evt_0000000ch_000000, если тип события charge.succeeded).

Если вы все еще получаете 500 ошибок, это означает, что что-то неправильно настроено на вашем сервере, и вы можете получить полную ошибку в error.log вашего веб-сервера (попробуйте заглянуть в / var / log или веб-панель вашего сервера). )

...