Как перехватить перенаправление GoCardless, отправленное Go Cardless на мой веб-сайт после принятия мандата на прямой дебет?

Это мой CustomerController, который получает контрольный список клиентов, которым необходимо отправить мандат на прямое дебетование, с их данными, которые у меня уже есть в базе данных. Как только клиент заполняет мандат, Gocardless отправляет URI перенаправления на параметр "success_redirect_url", который является действием под контроллером сайта, т.е. сайт / gocardlesscustomercreated

public function actionCreategocardlesscustomer()
{
   $keylist = Yii::$app->request->get('keylist');
   $comp = Company::findOne(1);
   if (!empty($keylist)){
   foreach ($keylist as $key => $value)
   {
     $model = $this->findModel($value);
     if ($model !== null) 
       {
         $client = new \GoCardlessPro\Client([
        'access_token' => 'sandbox_b__7gf_Vn6dYEKFTy3C-GMRamuFz_siKhQsMiZ-',
        'environment' => \GoCardlessPro\Environment::SANDBOX
        ]);
        $redirectFlow = $client->redirectFlows()->create([
        'params' => [
            "description" => "Clean",
            "session_token" => Yii::$app->session->getId(),
            "success_redirect_url" => Url::to(['site/gocardlesscustomercreated'], 'http'),
            "prefilled_customer" => [
                "given_name" => $model->name,
                "family_name" => $model->surname,
                "email" => $model->email,
                "address_line1" => $model->productnumber." ".$model->productsubcategory->name,
                "city" => $comp->address_area2,
                "postal_code" => $model->postcodefirsthalf." ".$model->postcodesecondhalf,
                ]
            ]
        ]);
       Yii::$app->session->setFlash('success', "ID: " . $redirectFlow->id ." Create Customer on Gocardless: ".Html::a($redirectFlow->redirect_url,$redirectFlow->redirect_url));
     }
   } 
   Yii::$app->session['redirectflowid'] = $redirectFlow->id;
   Yii::$app->session['redirectflowredirecturl'] = $redirectFlow->redirect_url;
  }
  else throw new NotFoundHttpException('No ticks selected.');

}

Полный URL-адрес, который я получаю в своем браузере от Gocardless после перенаправления: http://frontend.dev/site/gocardlesscustomercreated?redirect_flow_id=RE0000Y6TRAAQHGHWR4C5ZTEA18S2QJG

Как мне это запечатлеть

 ?redirect_flow_id=RE0000Y6TRAAQHGHWR4C5ZTEA18S2QJG

что Gocardless добавил на мой URL и отправил обратно?

Я использую правило под UrlManager как:

'site/gocardlesscustomercreated/<id:\d+>'=>'site/gocardlesscustomercreated'

или мне лучше использовать

'rules' => [
    ['class' => 'yii\rest\UrlRule', 'controller' => 'gocardlesscustomercreated'],
],

или настройте.htaccess.?

1 ответ

Решение

Все, что вам нужно сделать, - это передать параметр, отправленный gocardless, чтобы вы могли получить его и использовать его, вам не нужно специально назначать любое правило URL в urlManager просто добавьте параметр к вашему действию gocardlesscustomercreated с тем же именем, что и параметр, переданный из gocardless, как показано ниже

public function actionGocardlesscustomercreated($redirect_flow_id)

Теперь вы можете эхо $redirect_flow_id внутри действия, чтобы распечатать его или сохранить в любом месте, где вам нравится

Другие вопросы по тегам