Как перенаправить почтовый запрос от действия контроллера? - PullRequest
0 голосов
/ 17 сентября 2018

Я интегрировал платежный шлюз в Cakephp.Ниже используются версии:

  • Cakephp: 3.4.13

  • PHP: 5.6.15

Проблема:

Мне нужно отправить форму с помощью POST-запроса на сайт платежного шлюза, но некоторые поля содержат конфиденциальные данные (идентификатор продавца и т. Д.), Поэтому я не могу показать их в форме.В противном случае кто-то может прочитать их, используя инструменты разработчика (проверяющий элемент).Также мне нужно добавить некоторые пользовательские поля перед отправкой формы.

Поэтому я бы хотел перенаправить пользователя на сайт платежного шлюза с обязательными полями, используя запрос POST от действия Контроллера.

Я пытался найти решение, но не смог.Нашел похожий вопрос здесь но ответа нет.Есть ли способ сделать то же самое в Cakephp 3.x?

Форма платежного шлюза:

<?= $this->Form->create(false, ['url' => <URL>, 'id'=>'payForm']) ?>
<?= $this->Form->hidden('payment_notification_url', ['value'=> $this->Url->build('/payment/notify', true)]); ?>
<?= $this->Form->hidden('payment_redirect_url', ['value'=>$this->Url->build('/payment/getMoney', true)]); ?>
<?= $this->Form->hidden('merchant_id', ['value'=> <merchant_id>]); ?>
<?= $this->Form->hidden('reference', ['value'=> <reference>]); ?>
<?= $this->Form->hidden('email', ['value'=> <email>]); ?>
<?= $this->Form->hidden('fname', ['value'=> <first_name>]); ?>
<?= $this->Form->hidden('lname', ['value'=> <last_name>]); ?>
<?= $this->Form->hidden('address', ['value'=> <address>]); ?>
<?= $this->Form->hidden('town', ['value'=> <state>]); ?>
<?= $this->Form->hidden('country', ['value'=> <country>]); ?>
<?= $this->Form->hidden('postcode', ['value'=> <zipcode>]); ?>
<?= $this->Form->hidden('amount', ['class' => 'amount', 'value'=> <amount>]); ?>
<?= $this->Form->hidden('currency', ['value'=> 'US']); ?>

<?php echo $this->Form->end() ?>

1 Ответ

0 голосов
/ 17 сентября 2018

Прочтите документацию, это может помочь.Вы можете отправить форму на конкретное действие, затем оттуда вы можете сделать запрос http, используя следующий код.

Для полной документации Клиент Http

use Cake\Http\Client;

$http = new Client();

// Simple get
$response = $http->get('http://example.com/test.html');

// Simple get with querystring
$response = $http->get('http://example.com/search', ['q' => 'widget']);

// Simple get with querystring & additional headers
$response = $http->get('http://example.com/search', ['q' => 'widget'], [
  'headers' => ['X-Requested-With' => 'XMLHttpRequest']
]);

Комуперенаправить на внешний URL вы можете использовать это

$this->redirect('http://www.google.com');
...