Лучшая практика для POST'ing на новую страницу с перенаправлением? - PullRequest
0 голосов
/ 09 февраля 2012

Я пытаюсь решить рабочий процесс, который выглядит примерно так: (в PHP)

  1. Пользователь вводит информацию о заказе в мою корзину.
  2. Заказ регистрируется и сохраняется в моей базе данных (без информации о кредитной карте)
  3. Пользователь перенаправлен на страницу авторизации SIM-карты для оплаты

Текущая настройка:

shoppingcart.php - собирает информацию о доставке пользователя / etc

storeorder.php - сохраняет заказ в моей базе данных, а затем собирает форму с соответствующими обязательными полями POST authorize.net

Короче говоря, пользователю приходится просматривать ненужную промежуточную страницу, где он должен нажать кнопку отправки формы «Выполнить платеж», которая затем отправляет его на authorize.net.

Какова наилучшая практика для объединения этих шагов? (получение POST, сохранение информации в моей БД, а затем автоматическое перенаправление на authorize.net с новыми полями POST без какого-либо взаимодействия с пользователем)

Ответы [ 3 ]

1 голос
/ 10 февраля 2012

НЕ ВМЕШАТЬСЯ С ДЕНЬГАМИ ПОЛЬЗОВАТЕЛЯ!
Даже если вы не хотите хранить данные кредитной карты, ваш сайт может быть взломан и злоумышленник получит его.

  1. Пользователь вводит информацию о заказе в мою корзину.
  2. Заказ обрабатывается через SIM-страницу authorize.net для оплаты
  3. authorize.net свяжитесь с вашим сайтом с деталями оплаты.

- единственный правильный путь.
КАЖДЫЙ сайт в мире работает таким образом. Так что ты должен. Не берите себе умного туза.

0 голосов
/ 09 февраля 2012

На shoppingcart.php вы можете разместить кнопку для оформления заказа.При нажатии на то, что действие пользователя отправлено.Do not save item prices/quantity in hidden fields. в POSTing кнопки извлечения пользователя вы можете сохранить всю информацию в вашей БД и создать HTML-форму в условии PHP Post, чтобы установить значения для authorize.net и перенаправить свой заголовок на страницу PAYMENT.

0 голосов
/ 09 февраля 2012

Должен ли пользователь вводить какие-либо данные на странице authorize.net или ваша форма содержит всю необходимую информацию?Если вы генерируете всю информацию, то проще всего сделать это с помощью вызова cUrl для authorize.net, передавая данные непосредственно к ним и проверяя возвращаемый код состояния / вывод, чтобы увидеть, был ли он успешным / нет и т. Д.

Если пользователю по-прежнему необходимо вводить платежные данные, используйте следующий метод.

Форма сообщений в /somepage.php

somepage.php запускает его обработку и один раз внизуобработка завершена, добавьте заголовок ("Местоположение: https://www.authorize.net/dopaymenthere");

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

PS: это будет работать только путем объединения сообщенияпеременные как запросы на получение, при условии, что authorize.net будет обрабатывать запросы на получение как переменные.

действительно простой способ сделать это без использования запроса get с помощью javascript, отправив форму на dom ready ... таким образом, вы можете показать пользователю сообщение о порядке обработки.и отправьте их со встроенной скрытой формой непосредственно на authorize.net на тот случай, если ваша обработка займет больше времени, чем ожидалось и т. д.

В терминах jquery на странице processing.php у вас будет что-то вроде:

echo $form; // HTML form with all it's values required by authorize.net
echo "<h1>Processing your request</h1>";
<script type='text/javascript'>$(document).ready(function(){$('#hiddenformid').submit();});</script>
...