У меня есть серьезные проблемы с принятием платежей.
Я передаю общую сумму в скрытом поле
<input type="hidden"
name="checkout-flow-support.merchant-checkout-flow-support.shipping-methods.flat-rate-shipping-1.price"
value="129.00"/>
Некоторые пользователи изменили это значение на 2 поджигателей использования и отправили форму. Вместо того, чтобы получить 129$, мы только получили 2$.
Я понятия не имею, как продолжить двигаться это, любой помогает мне быстрый.
Я передаю общую сумму в скрытом поле
Не делайте этого!
Поскольку вы знаете, какие товары пытается приобрести пользователь, рассчитайте стоимость на стороне сервера.
Это ошибка из учебника, аналогичная тому, как если бы вы спросили покупателя в магазине, сколько стоит товар, и доверились его ответу. Это частный случай общего принципа безопасности: не доверяйте клиенту. Ответ Hobodave правильный; вычисляйте цены, налоги и т.д. на стороне сервера.
С поставщиками платежных услуг (PSP) общая схема взаимодействия обычно выглядит примерно так:
1) Ваш сервер связывается с PSP и устанавливает транзакцию, указывая требуемую сумму и данные вашего счета PSP.
2) PSP отвечает идентификатором транзакции, который вы затем добавляете в форму. Этот идентификатор транзакции не содержит никакой информации о ценах - это просто идентификатор записи транзакции, которую ваш сервер создал в PSP.
3) Посетитель заполняет форму, которая отправляется в PSP. Затем они перенаправляют посетителя обратно на ваш сайт.
4) Ваш сервер запрашивает сервер PSP и проверяет, что транзакция прошла успешно (т.е. метод оплаты посетителя одобрил транзакцию с PSP и т.д.)
Связь между сервером и PSP обычно осуществляется с помощью библиотеки, такой как curl.
Google предоставляет ряд библиотек / примеров того, как правильно обрабатывать транзакции (и большинство других PSP делают то же самое, по моему опыту): http://code.google.com/apis/checkout/samplecode.html
Точные детали взаимодействия могут варьироваться в зависимости от PSP, но в основном не должно быть никакой необходимости в том, чтобы "общая сумма" когда-либо проходила через форму, отображаемую посетителю. Все это делается от сервера к серверу, чтобы посетитель не мог изменить детали.