在Yii2基本应用程序控制器中接收Json数据

时间:2018-09-23 09:20:34

标签: php api yii2 orange-api

我正在将Orange Money Payment网关与我的Yii2基本应用程序集成在一起,以便能够在此应用程序上接收本地付款。 在此API中,当用户发起交易时,向Orange money API发送卷曲请求后,我会收到一些数据。我通过密钥调用notif_token将这些数据存储在数据库中。然后,将用户重定向到完成付款的橙色付款门户。当用户在其门户网站上完成付款过程时,他们向我发送json响应给特定的URL调用Notifcation 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数据,可能是如何将该操作转换为API调用网址或我尚无法弄清的内容)。对此的任何帮助将不胜感激,因为我无法在线找到任何资源来帮助我。

1 个答案:

答案 0 :(得分:0)

要接收JSON数据,您需要在配置中配置request组件:

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

有关更多信息,请参见docs