提问者:小点点

yii2 Webhook帖子为空


我对yii框架有点陌生,我需要帮助。

我需要实现一个stripe webhook控制器,用于stripe发送的订阅事件。对于此控制器,既没有视图也没有模型

我可以访问控制器,但是$\u POST内容是空的,我不知道为什么。

是否可以在没有视图的情况下使用post动词?

这里有一个例子:

class StripeWebhookController extends Controller
{
     public function beforeAction($action)
    {
        if ($action->id == 'index') {
          $this->enableCsrfValidation = false;
         }

        return parent::beforeAction($action);
    }

public function actionIndex()
{   
  header('Content-Type: text/html; charset=utf-8');

    StripeLoader::autoload();
    \Stripe\Stripe::setApiKey( Settings::get("stripe_secret_key") );
       // retrieve the request's body and parse it as JSON
       $input = file_get_contents('php://input'); // -> here $input is null

      $event_json = json_decode($input, true);

    //      Do the work...
}

我用了

 print_r(Yii::$app->request->post() /*$_POST*/); exit(); 

我只得到一个空数组。

经过几天的搜寻,我什么也没找到。。。

如果有人有主意我很乐意接受

附加信息:我们在IIS web服务器上运行,使用的是Yii2框架

谢谢你给我读cya


共2个答案

匿名用户

对于任何同样陷入困境的人,我必须执行以下操作才能使其正常工作:

禁用整个类别的CSRF保护

public$enableCsrfValidation=false

使用getRawBody()而不是post()

$data=json_decode(Yii::$app-

在框架之外,您可以使用file\u get\u contents(“php://input“”

避免任何服务器端重定向

在我的例子中,这意味着URL中没有尾随斜杠或www

匿名用户

如果Yii::$app-