Я просматривал следующее руководство PayPal (поскольку это единственный доступный документ, в котором я смог найти подробные сведения о реализации PHP и может обрабатывать корзину / корзину / несколько покупок):
Однако я думаю, что что-то серьезно не так. Он предлагает отправлять информацию о платеже в скрытых формах ввода, например:
<input type="hidden" name="cmd" value="_ext-enter">
<form action="https://www.paypal.com/us/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="item_name" value="Item Name">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="amount" value="0.00">
<input type="image" src="http://www.paypal.com/en_US/i/btn/x-click-but01.gif" name="submit" alt="Make payments with PayPal - it's fast, free and secure!">
</form>
Но это кажется совершенно неправильным. Разве пользователь веб-сайта не может удалить «скрытое» свойство с помощью основных инструментов, а затем изменить цену так, как ему хочется? Или изменить цену напрямую?
Я понимаю, что продавец получит счет с неверной ценой, и ему придется перепроверить его и отменить заказ, если это необходимо, но, конечно, это не стандартная практика? Потому что, если большое количество пользователей попытаются злоупотребить этим эксплойтом и, следовательно, вызвать большое количество отмен, приведет ли это к тому, что PayPal прекратит свои услуги с продавцом?
Я также нашел следующую документацию: https://developer.paypal.com/docs/platforms/checkout/set-up-payments/#step-1-add-payment-buttons-to-accept-платежи
Похоже, здесь используется совершенно другой метод, но он в Javascript и не поддерживает корзину / корзину / несколько покупок. Похоже, у него та же проблема, потому что кто-то может редактировать JavaScript, чтобы манипулировать ценой (если я не ошибаюсь).
Итак, является ли первоначальный метод стандартной практикой, и я должен ему следовать, или есть альтернативный, более безопасный метод, который мне не удалось найти?