EDIT
Эшли сказала:
Хорошо, я посмотрел на CURL
Руководство и написано это очень просто
скрипт для пересылки значений POST
сторонний заказ. Это просто
отображает содержимое оформления заказа
страница хотя. URL-адрес показывает
сценарий в настоящее время работает, а не
пересылка на сторонний сайт. Также
все их относительно связанные графики
не будет работать. Может ли «истинное» переадресация
быть достигнутым с помощью cURL?
Краткий ответ - нет .
Если вы описали свой процесс оплаты, если вы хотите сделать что-то посредине удаленного процесса (настроить html / сообщения, проверить данные и т. Д.), То вам нужно обработать весь процесс, который позволил бы cURL. Вам делать.
С помощью 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 запроса извне, как часть процесса транзакции, которые можно обобщить следующим образом:
- Пользователь делает покупки на вашем сайте и добавляет товары в корзину
- Пользователь нажимает на оформление заказа, и вы проверяете данные корзины / пользователя
- Если данные из # 2 были действительны, вы упаковываете данные и отправляете в
secure.wp3.rbsworldpay.com/wcc/purchase
через cURL
- Если ответ cURL от # 3 был успешным, вы создаете свою собственную страницу подтверждения, используя данные из ответа cURL, и отображаете ее для пользователя.
- Пользователь отправляет подтверждение покупки на ваш сервер.
- Вы упаковываете данные, отправленные на ваш сервер, в # 5 и отправляете их на
secure.wp3.rbsworldpay.com/wcc/confirm
через cURL.
- Если ответ cURL от # 6 был успешным, вы анализируете его на предмет ожидаемого сообщения об ошибке или успеха, возвращенного с внешнего сервера, и отображаете их или ваши собственные сообщения об ошибках.
- В случае ошибки промыть и повторить ;-)
Вообще говоря, большинство платежных процессоров имеют опцию обработки, которая поддерживает этот базовый процесс, который часто позволяет легко анализировать данные в виде XML, JSON или Plain Text вместо HTML. Возможно, вы захотите посмотреть на это. Часто у них часто бывают библиотеки, созданные для различных языков программирования, чтобы облегчить процесс интеграции.
Да, конечно ... я обычно использую расширение curl
для таких вещей или класс клиента http, который использует curl
. Возможно, вы захотите сделать это немного проще для себя и использовать одну из этих библиотек классов - например, Zend_Http_Client
. Он поддерживает не только curl
, но также сокеты и прокси.