Получение данных Json в базовом контроллере приложений Yii2 - PullRequest
0 голосов
/ 23 сентября 2018

Я интегрирую шлюз Orange Money Payment с моим базовым приложением Yii2, чтобы иметь возможность получать локальные платежи по этому приложению.В этом API, когда пользователь инициирует транзакцию, я получаю некоторые данные после отправки запроса скручивания в API Orange.Я храню эти данные в моей базе данных с помощью ключевого вызова notif_token.Затем пользователь перенаправляется на оранжевый платежный портал, где производится оплата.когда пользователь завершает процесс оплаты на своем портале, он отправляет мне ответ json на определенный URL-адрес уведомления о вызове URL.Предполагается, что я получу эти данные, обновлю свою базу данных и предоставлю этому пользователю доступ к некоторым ресурсам.

Все работает хорошо до уровня получения отзывов от них через URL-адрес уведомления.

Я перепробовал все, что знаю, чтобы получить эту информацию, но безрезультатно, поскольку это действие не является URL-адресом API.Я написал свое действие, как показано ниже, но я не знаю, что мне не хватает. (Возможно, это конфигурация для этого действия или что-то в этом роде).

public function actionOnotification(){
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    $request = \yii::$app->request->post();
    $transaction =OrangeFeedback::findOne(['notif_token'=>$request['notif_token']]);
    $transaction->status = $request['status'];
    $transaction->txnid =  $request['txnid'];
    $transaction->save();
    //do some processing here

}

Я не знаюкак решить эту проблему, поскольку я чувствую, что здесь не хватает фундаментальной концепции (может быть, о том, как настроить базовое действие приложения Yii2 для получения данных json, может быть о том, как преобразовать это действие в URL-адрес вызова API или что-то, чего я не могупока разберись).Буду очень признателен за любую помощь по этому вопросу, так как я не могу найти какие-либо ресурсы в Интернете, чтобы помочь мне.

1 Ответ

0 голосов
/ 24 сентября 2018

Для получения данных JSON вам необходимо настроить компонент request в конфигурации:

'components' => [
    ...
    'request' => [
        'parsers' => [
            'application/json' => 'yii\web\JsonParser',
        ]
    ],
    ...
]

См. документы для получения дополнительной информации

...