Подтвердить что ты не робот

Redirect_to используя POST в рельсах

Можно ли перенаправить с использованием метода POST?

Или нужно перенаправлять всегда с помощью GET?

Использование для этого заключается в заключительных этапах процесса заказа для сайта электронной торговли, для отправки данных в процессор платежей без введения дополнительного шага для пользователя.

4b9b3361

Ответ 1

Перенаправление невозможно с запросами POST - это часть протокола HTTP/1.1.

Вы можете ввести другой шаг, который содержит данные формы, которые должны быть отправлены в процессор платежей, или вы можете отправить сообщение из своего приложения (что я сделал при работе с PROTX).

Ответ 2

Я "решил" проблему, указав сводную страницу со всеми продуктами и расходами на доставку и т.д., с типичным "подтверждением и оплатой покупок", нажмите кнопку "Продолжить" ниже "Тип сообщения". Кнопка "Продолжить" приводит к тому, что сайт POST передает данные продукта и все в процессор платежей.

Короткий ответ - там есть еще один шаг для пользователя. Тем не менее, ключ заключается в том, чтобы сделать его кажущимся естественным и как можно большей частью опыта проверки. Таким образом, это не слишком много значит "просто еще один шаг".

Однако, если вы встретите лучший способ, мне будет очень интересно узнать, что это такое:)

Ответ 3

С помощью простой строки javascript у вас может быть ваша форма POST для публикации (form.submit()). Затем вы можете скрыть форму и отобразить пользователю сообщение "please wait while...", пока форма отправлена ​​платежному процессору.

Ответ 4

Идея состоит в том, чтобы сделать "перенаправление", в то время как вы создаете форму с помощью метода: post.

Я столкнулся с той же проблемой и извлек решение в repost gem, поэтому он выполняет всю работу за вас, поэтому нет необходимости создавать отдельное представление с формой, просто используйте предоставляемую функцией gem redirect_post() на вашем контроллере,

class MyController < ActionController::Base
...
  def some_action
    redirect_post('url', params: {}, options: {})
  end
...
end

Ответ 5

html hack: вместо redirect_to визуализируйте этот html-шаблон (на основе ответа Alsciende)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<form id="step" name="step" action="<%= URL %>" method="POST">
  <!-- optional params -->
  <input type='hidden' name='token' value='e7295d6d1cd512a8621f1de5965b90a' />

</form>

<script type="text/javascript">
 $(document).ready(function () {
   setTimeout(function () {
     $("#step").submit();
   }, 0);
 });
</script>