[英]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.