我是yii FrameWork的新手,我需要帮助。
我需要实现用于Stripe发送的订阅事件的Stripe Webhook控制器。对于此控制器,没有视图也没有模型
我可以访问控制器,但是$ _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...
}
Run Code Online (Sandbox Code Playgroud)
我用了
print_r(Yii::$app->request->post() /*$_POST*/); exit();
Run Code Online (Sandbox Code Playgroud)
而且我只有一个空数组。
经过几天的搜索,我什么都没发现...
如果有人有想法,我会很乐意接受
附加信息:我们使用Yii2框架在IIS Web服务器上运行
谢谢你读我
对于类似的人,我必须执行以下操作才能使其正常工作:
对整个班级禁用CSRF保护
public $enableCsrfValidation = false;
使用getRawBody()代替post()
$data = json_decode(Yii::$app->request->getRawBody());
在框架之外,您将使用 file_get_contents("php://input")
避免任何服务器端重定向
就我而言,这意味着没有斜杠或www。在网址中