grinko03
@grinko03
Backend - developer ::> PHP

Обработка уведомлений Яндекс.Касса с php sdk?

<?php
// Получите данные из POST-запроса от Яндекс.Кассы
    $source = file_get_contents('php://input');
    $requestBody = json_decode($source, true);


// Создайте объект класса уведомлений в зависимости от события
// NotificationSucceeded, NotificationWaitingForCapture,
// NotificationCanceled,  NotificationRefundSucceeded


    require __DIR__ .'/lib/autoload.php';
    use YandexCheckout\Model\Notification\NotificationSucceeded;
    use YandexCheckout\Model\Notification\NotificationWaitingForCapture;
    use YandexCheckout\Model\NotificationEventType;

    try {
      $notification = ($requestBody['event'] === NotificationEventType::PAYMENT_SUCCEEDED)
        ? new NotificationSucceeded($requestBody)
        : new NotificationWaitingForCapture($requestBody);
    } catch (Exception $e) {
        // Обработка ошибок при неверных данных
    }


// Получите объект платежа

    $payment = $notification->getObject();
    print_r ($payment);
    echo ($payment)
?>

Вот код обработчика платежа. Взял его из документации (https://kassa.yandex.ru/developers/using-api/webho... . Выходит ошибка :

Fatal error: Uncaught TypeError: Argument 1 passed to YandexCheckout\Model\Notification\NotificationWaitingForCapture::__construct() must be of the type array, null given, called in /home/ya-kassa/processing.php on line 20 and defined in /home/ya-kassa/lib/Model/Notification/NotificationWaitingForCapture.php:72 Stack trace: #0 /home/host1689514/site-bots.ru/htdocs/pay/ya-kassa/processing.php(20): YandexCheckout\Model\Notification\NotificationWaitingForCapture->__construct(NULL) #1 {main} thrown in /home/ya-kassa/lib/Model/Notification/NotificationWaitingForCapture.php on line 72

Помогите пожалуйста доделать обработчик платежа
  • Вопрос задан
  • 541 просмотр
Пригласить эксперта
Ответы на вопрос 1
@genadich65
Здравствуйте, столкнулся с такой же проблемой, понимаю что нет значений от ЯК но как их правильно принять не пойму, решили ли проблему?
Если принимать вот так $requestBody = file_put_contents ("file.txt", print_r(json_decode(file_get_contents("php://input")), true)); тогда данные от ЯК записываются в file.txt.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы