Exebeche
@Exebeche
Осваиваю программирование

Как получить статус оплаты liqpay в yii2?

Создал магазин на yii2 с оплатой через liqpay.
Все хорошо, кроме того, что не получается разобраться с получением статуса оплаты чтобы автоматически изменялся статус заказа в магазине.
Код экшена с оплатой:
public function actionView($id)
    {
        if (!$order = $this->orders->findOwn(\Yii::$app->user->id, $id)) {
            throw new NotFoundHttpException('The requested page does not exist.');
        }

        $liqpay = new LiqPay($this->public_key, $this->private_key);
        $html = $liqpay->cnb_form(array(
            'action'         => 'pay',
            'amount'         => $order->cost,
            'currency'       => 'UAH',
            'sandbox'        => true,
            'description'    => 'Оплата заказа на Manufacture17.com.ua',
            'order_id'       => $order->id,
            'version'        => '3',
            'server_url'     => 'http://shop.loc/cabinet/order/result'
        ));

        return $this->render('view', [
            'order' => $order,
            'html' => $html,
        ]);
    }


Пытаюсь получить ответ в actionResult:
public function actionResult()
    {
        var_dump(base64_decode(Yii::$app->request->post('data')));
    }


Максимум, что получилось - ошибка 400 (yii\web\BadRequestHttpException: Не удалось проверить переданные данные). Хотя в запросе присутствует длинная закодированная строка в $_POST data

Пожалуйста растолкуйте, как его получить без ошибки, а то расшифровывается data на ура, а передать ее в контроллер не выходит.
Если можно подробнее и/или с примерами. А то док читаю, но ниасилил((
  • Вопрос задан
  • 306 просмотров
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
ошибка 400

отключи проверку csrf Token в этом экшене. Наверняка liqPay шлет post, а все post в yii2 проверяются на csrf Token, а там его естественно нет. Поэтому до экшена даже дело не доходит. Перед экшеном срабатывает проверка csrf Token и кидает 400 ошибку.

Но тут есть еще нюанс, если liqPay шлет запрос, то что тебе даст var_dump? Ты же его не увидишь, его получит liqPay. Надо в логи писать. Например если включен дебаг, удобно сделать
$data = yii\helpers\Json::encode(base64_decode(Yii::$app->request->post('data')));
Yii::info('liqpay',$data)

ну или что-то на подобие
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы