2016-11-18 3 views
1

Ich bin ein wenig neu in der yii FrameWork, und ich brauche Hilfe.yii2 Webhook Beitrag leer

Ich muss einen Stripe-Webhook-Controller implementieren, der für das Abonnement-Ereignis verwendet wird, das von Stripe gesendet wird. Für diesen Controller gibt es keine Ansicht oder Modell

Ich kann auf den Controller zugreifen, aber der $ _POST Inhalt ist leer und ich kann nicht verstehen warum.

Ist es möglich, das Postverb ohne eine Ansicht zu verwenden?

hier ein Beispiel:

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... 
} 

i verwendet, um die

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

und ich habe nur ein leeres Array.

Nach Tagen der Suche fand ich nichts ...

Wenn jemand eine Idee hat, werde ich es nehmen gerne

Additionnal Info: wir auf einem IIS-Webserver ausgeführt werden, die Yii2 Framework

Danke für das Lesen cya

Antwort

0

Wenn Yii::$app->request->post() leer ist, dann die Anforderungsdaten nicht veröffentlichen. Nimm die Anfrage in beforeAction entgegen und lade die ganze Sache ab. Das wird sein, was Ihre Maschine empfängt. Wenn diese Option leer ist, empfängt das Gerät die mit der Anforderung gesendeten Daten nicht.

+0

Ich habe versucht, was Sie gefragt, und das ist was ausgehen: Array() Also ich gess der Controller empfängt nichts. Ein anderer Test, den ich gemacht habe: ($ _SERVER ['REQUEST_METHOD'] gibt mir einen bekommen ... soooooo ich ein verwirrt –

+0

Das sagt mir, der Server erhält eine leere Anfrage; _POST wäre in der Tat dann leer. Das lässt mich nachdenken Der Fehler ist früher in der Prozessausführung. –

+0

Sie denken, dass IIS das POST-Verb nur auf diesem Controller dann ablehnen wird? –