Worldpay Payment Gateway - сделайте отправку более безопасной
Привет, я сейчас пытаюсь интегрировать платежный шлюз worldpays на сайт.
Однако я не могу отправить форму безопасным способом.
Это пример формы:
<form method="POST" name="BuyForm" action="https://secure- test.worldpay.com/wcc/purchase">
<input type="hidden" value="yourinstid" name="instId">
<input type="hidden" value="yourcartid" name="cartId">
<input type="hidden" value="GBP" name="currency">
<input type="hidden" value="100" name="amount">
<input type="hidden" value="Product 1" name="desc">
<input type="hidden" value="100" name="testMode">
<input type=submit value="Buy Now">
</form>
Можно ли в любом случае отправить это в php, чтобы конечный пользователь не смог проверить и изменить сумму, т. Е. Изменить сумму с £100,00 до £ 1,00 и отправить заказ и заплатить £ 1 за товары на сумму £100?
Однако я пробовал curl. Из того, что я прочитал, вы не можете перенаправить пользователя на страницу, на которую вы отправили данные?
Заранее спасибо Джордан
1 ответ
С архитектурой у вас нет. Поскольку пользователь отправляет данные со страницы непосредственно на worldpay.com без предварительного прохождения через ваш сервер, вы не можете помешать пользователю проверить, что должно быть отправлено, или изменить значения. Даже если вы заблокировали браузер с помощью javascript, что помешает мне загрузить страницу, затем скопировать информацию и отправить ее напрямую в worldpay с помощью запроса cURL из моей командной строки? Это проигрышная битва для вас.
Посмотрите документацию WorldPay, чтобы узнать, как безопасно отправить перевод. Платежные системы обычно работают над этим. Вот несколько техник, которые я видел.
Я заметил, что есть идентификатор корзины. Может существовать API, посредством которого ваш сервер сначала отправляет запрос в worldpay, чтобы создать корзину или запрос на оплату, и получает некоторый токен. Затем действительный токен должен быть представлен пользователем вместе с формой. Это позволит worldpay сравнить данные, использованные для создания токена, с отправкой формы и заметить любые изменения.
Другие платежные сервисы требуют, чтобы вы подписывали любую отправку секретным токеном, который вы получаете со своего торгового счета. По сути, подпись представляет собой хеш-код всех значений формы (с секретом, который никогда не отправляется в браузер). Если клиент изменяет форму и отправляет изменения, новые входные данные формы не будут соответствовать подписи.
Другие платежные сервисы позволяют создавать безопасные
Pay
кнопки из торгового счета. Это предварительное соглашение о том, сколько стоит каждый продукт. Затем в браузере вам даже не нужно устанавливать количество, идентификатор продукта и т. Д. ПростоPay
ID кнопки, который был создан.Наконец, самая простая проверка заключается в создании записи транзакции на вашем сервере перед созданием формы для пользователя. Получив уведомление о платеже, найдите идентификатор платежа или транзакции в своих записях и убедитесь, что все выстроено в очередь перед обработкой заказа.
Суть в том, что вы не можете помешать пользователю изменить то, что он отправляет напрямую в worldpay, поэтому, если ваша безопасность имеет это требование, оно не будет выполнено. Проведите исследование о безопасных платежных потоках worldpay.