Валидация PHP - проходные значения HTTP Post пересылаются на трехстороннюю заказа

StackOverflow https://stackoverflow.com/questions/2187937

Вопрос

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

У меня есть страница оформления заказа, которая публикует нагрузку переменных вперед к 3-м партийному платежному процессору (WorldPay).

Я хочу знать, можно ли поставить PHP-скрипт некоторых сорт между двумя страницами для целей проверки.

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

Если я сделаю это на своем собственном сайте, я мог бы использовать сеансы, чтобы пропустить данные по сообщениям вперед, но, как это внешний сайт, я не знаю, как отправлять данные, не делая другая HTML-страница с скрытой формой и обновлением.

Можно ли сделать это «незаметно» - на самом деле не показаны HTML-страницы между ними?

Это было полезно?

Решение

Да, вы можете сделать это, подключив к крючке OnSUBMIT формы и отправляя тазовов AJAX, как это (используя jQuery):


$('#myform')[0].onsubmit = function() {
  if (form_check_elements(this.elements)) { /* ««« eg JS validator here */
    data = $('#myform').serialize();
    $.post('/ajax_validator.php', data, function(data, textStatus) {
      $('#myform')[0].submit();  /* ««« check the textStatus before here and
                                        eventually do not submit (wrap it in
                                        an if-clause) */
    });
    return false; /* make the form not post directly */
  } else {
    return false; /* do not post if JS validation fails */
  }
};

Мы используем этот фрагмент для хранения данных формы в сеансе, прежде чем публиковать на 3-й стороне, поэтому у нас есть его доступность, когда 3-я сторона возвращается на нашу страницу.

Редактировать: Имейте в виду, что это будет работать только с включенным JS, но это отстает - безопасно: форма все еще представляет без поддержки JS.

Другие советы

РЕДАКТИРОВАТЬ:

Эшли сказала:

Хорошо, я посмотрел на ручное пособие по руслу и написал этот очень простой скрипт, чтобы переслать значения пост до 3-го вечеринка. Это просто отображает содержимое страницы проверки. Адрес URL показывает скрипт, который в данный момент работает, а не пересылает на 3-й сайт Party. Также все их относительно связанные графики не будут работать. Может быть достигнуто «True» пересылкой, используя скручивание?

Короткий ответ - нет.

С помощью того, как вы описали свой процесс оплаты, если вы хотите наступить в середину процесса Offsite, чтобы делать вещи (настроить HTML / сообщения, проверять данные и т. Д.), То, что вам нужно обрабатывать весь процесс, который позволит вам сделать Отказ

С Curl, вы не «пересылаете» запрос - вы своего рода «прокси» запрос. Таким образом, тот факт, что URL-адрес браузера никогда не изменяется, и что относительная графика не должна работать. При использовании CURL или чего-то похожего вы никогда не позволят пользователю полномочий пользователя знать, что они даже касаются внешней страницы. Вы будете обрабатывать все запросы на этот внешний сервер на вашем сервере, а затем просто отображать ответ от внешнего сервера к своему пользователю или распределить этот ответ, чтобы вы могли использовать данные из него в настроенном виде.

По сути это означает, что если secure.wp3.rbsworldpay.com/wcc/purchase Возвращает форму, которая требует дальнего взаимодействия от пользователя, вы должны имитировать эту форму на вашем сервере и отображать это вместо этого. Затем, когда пользователь отправляет вашу форму, вы снова используете CURL, чтобы сделать запрос на внешний сервер - на этот раз, чтобы опубликовать следующий раунд данных, представленных пользователем. Так например, давайте скажем:

  • secure.wp3.rbsworldpay.com/wcc/purchase показывает корзину
  • secure.wp3.rbsworldpay.com/wcc/confirm показывает окончательное подтверждение оплаты, которое должно быть сделано
  • secure.wp3.rbsworldpay.com/wcc/success а также secure.wp3.rbsworldpay.com/wcc/error показать, преодолела ли сделка или потерпела неудачу соответственно.

Тогда вы будете действовать надо надо 2 запроса внешне как часть вашего процесса транзакции, который может быть обобщен таким образом:

  1. Пользовательские магазины на вашем сайте и добавляют элементы в корзину
  2. Пользователь нажимает на оформление заказа, и вы проверяете тележку / пользовательские данные
  3. Если данные из # 2 были действительны, вы получаете данные и опубликовать secure.wp3.rbsworldpay.com/wcc/purchase через curl
  4. Если ответ CURL из # 3 был успешен, вы создаете собственную страницу подтверждения, используя данные из отклика скручиваемости и отобразить его пользователю.
  5. Пользователь подает подтверждение покупки на ваш сервер.
  6. Вы получаете данные, представленные на свой сервер в # 5 и опубликуете его secure.wp3.rbsworldpay.com/wcc/confirm через завиток.
  7. Если ответ скручиваемого от # 6 был успешным, вы разбираете его для ожидаемой «ошибки» или «успех», возвращаемого с внешнего сервера и отображают их или собственные пользовательские сообщения об ошибках.
  8. Промыть и повторить в случае ошибки ;-)

Вообще говоря, большинство платежных процессоров имеют вариант обработки, которая поддерживает этот базовый процесс, часто возвращающий легко разбирающий данные как XML, JSON или простой текст вместо HTML. Возможно, вы захотите посмотреть на это. Много раз у них часто будут библиотеки, созданные для различных языков программирования, чтобы облегчить процесс интеграции.


Да, конечно, это ... я обычно пользуюсь curl расширение, чтобы делать такие вещи, как это, или класс клиента HTTP, который использует curl. Отказ Возможно, вы захотите сделать его более легким на себя и использовать один из этих классов библиотек - например Zend_Http_Client. Отказ Он поддерживает не только curl Но и розетки и прокси.

Да, ты можешь. Что вы ищете, это функция скручиваемости:

http://php.net/manual/en/book.curl.php.

Также см:

http://php.dzone.com/news/execute-http-post-using-php-cu.cu.

Я скорее люблю Http_request2. Пакет из груши, в котором в основном оборачиваются локон и / или розетки в некоторых простых объектах. Публикация работает отлично. Вы можете использовать это, чтобы отскочить запрос на почту на вашу проверку проверки, затем на платежный процессор.

Я бы посоветовал вам пойти так:

Прежде чем направить пользователю в форму, вы проверяете (через SQL-запросы), продал ли элемент в корзине. Если бы было продано, перенаправьте пользователя на какой-то другой странице, говоря, что этот товар был распродан иначе, пусть он пойдет в форму для новой покупки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top