2009-06-12 3 views
53

Можно ли перенаправить с использованием метода POST?
Или нужно перенаправление всегда с помощью GET?redirect_to using POST in rails

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

ответ

73

Перенаправление невозможно с запросами POST - это part of the HTTP/1.1 protocol.

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

14

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

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

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

+1

Вместо этого вы можете просто отобразить «Обработка заказа ...» и заполнить форму со скрытыми полями. Если страница работает достаточно быстро, пользователь обычно даже не видит эту страницу большую часть времени ... – mdrozdziel

+1

Это почти то же самое, что и метод Альскенде. Совершенно прекрасно, но вы будете использовать JavaScript и, таким образом, вам понадобится какой-то откат для (возможно, маловероятного в наши дни, но возможно) случая, когда JS недоступен. –

+0

Да, но это очень тривиально. Просто поместить представление внутри noscript должно сделать трюк ... – mdrozdziel

11

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

+0

И вернитесь к руководству «нажмите кнопку отправки», где JS отключен? На самом деле это неплохая идея ... –