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

Php 在Yi2基本应用程序控制器中接收Json数据,php,api,yii2,orange-api,Php,Api,Yii2,Orange Api,我正在将Orange Money支付网关与我的Yii2基本应用程序集成,以便能够在此应用程序上接收本地支付。 在这个API中,当用户启动一个事务时,我会在向Orange money API发送一个curl请求后收到一些数据。我使用键调用notif_令牌将此数据存储在数据库中。然后用户被重定向到orange支付门户,在那里完成支付。当用户在其门户上完成支付过程时,他们会向我发送对特定url调用通知url的json响应。我想接收这些数据,更新我的数据库,并授予该用户访问某些资源的权限 在通过通知UR

我正在将Orange Money支付网关与我的Yii2基本应用程序集成,以便能够在此应用程序上接收本地支付。 在这个API中,当用户启动一个事务时,我会在向Orange money API发送一个curl请求后收到一些数据。我使用键调用notif_令牌将此数据存储在数据库中。然后用户被重定向到orange支付门户,在那里完成支付。当用户在其门户上完成支付过程时,他们会向我发送对特定url调用通知url的json响应。我想接收这些数据,更新我的数据库,并授予该用户访问某些资源的权限

在通过通知URL接收来自他们的反馈之前,一切都很好

我已尽我所能接收此信息,但无效,因为此操作不是api url。我已经写了我的行动如下所示,但我不知道我错过了什么。可能是此操作或其他操作的配置

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调用URL,或者是我还无法理解的东西。非常感谢您在这方面提供的任何帮助,因为我无法在线找到任何资源来帮助我。

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

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

有关更多信息,请参见

@kusokBanana,我的其他操作,即使在我设置默认值并尝试直接调用该操作时,该操作也会起作用。我该如何跟随卷曲??这是我的控制器结构。use语句、类、行为和操作感谢响应。但我只需要一个动作就可以得到这些数据。不是在我的整个应用程序中,我今天早上只是查看数据,我想知道它是否是json数据。因为,它们声明…并且HTTP通知被发布到您在web支付请求中发送的notif_url。POST{状态:SUCCESS,notif_令牌:dd497bda3b250e536186fc0663f32f40,txnid:MP150709.1341.A00073}。现在,您的其他操作不应该使用content-header-application/json获取请求可能更有意义,所以这不应该是一个问题。请求中的内容类型标头是什么样子的?似乎没有标头。这就是我感到困惑的原因。我只是在考虑使用curl,但我对如何使用未知URL的curl有限制。当我使用普通$\u POST或Yii时::$app->request->POST;我没有收到数据我似乎找不到Orange Money的API文档,但奇怪的是它没有设置内容类型标题{status:SUCCESS,notif_令牌:dd497bda3b250e536186fc0663f32f40,txnid:MP150709.1341.A00073}`看起来很像json数据。如何检查标题?您是否在邮递员或类似的应用程序中完成了请求,以便可以发布整个请求?