簡體   English   中英

yii2 Webhook發布空

[英]yii2 Webhook post empty

我是yii FrameWork的新手,我需要幫助。

我需要實現一個條帶webhook控制器,用於Stripe發送的訂閱事件。 對於此控制器,沒有視圖或模型

我可以訪問控制器,但$ _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(); 

我只有一個空數組。

經過幾天的搜索,我什么都沒發現......

如果有人有想法,我會樂意接受

附加信息:我們使用Yii2框架在IIS Web服務器上運行

謝謝你讀我的cya

對於任何類似卡住的人,我必須執行以下操作才能使其正常工作:

禁用整個班級的CSRF保護

public $enableCsrfValidation = false;

使用getRawBody()而不是post()

$data = json_decode(Yii::$app->request->getRawBody());

在框架之外,你將使用file_get_contents("php://input")

避免任何服務器端重定向

在我的情況下,這意味着沒有尾隨斜線或www。 在URL中

如果Yii::$app->request->post()為空,則請求沒有POST數據。 在beforeAction中獲取請求並轉儲整個事件。 這將是您的機器正在接收的。 如果為空,則機器不會接收隨請求一起發送的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM