Как безопасно отправить заказ корзины и информацию о платеже в PayPal на PHP?

Я просматривал следующее руководство PayPal (поскольку это единственный доступный документ, в котором я смог найти подробные сведения о реализации PHP и может обрабатывать корзину / корзину / несколько покупок):

https://www.paypal.com/mk/smarthelp/article/how-do-i-add-paypal-checkout-to-my-custom-shopping-cart-ts1200

Однако я думаю, что что-то серьезно не так. Он предлагает отправлять информацию о платеже в скрытых формах ввода, например:

<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, чтобы манипулировать ценой (если я не ошибаюсь).

Итак, является ли первоначальный метод стандартной практикой, и я должен ему следовать, или есть альтернативный, более безопасный метод, который мне не удалось найти?


person Denver Thomas    schedule 05.06.2020    source источник
comment
можно было бы предположить, что такой, казалось бы, простой обман был бы использован к настоящему времени, если бы это дело и что PayPal мог бы прекратить свою деятельность, если бы его услуги были признаны недостаточными   -  person Professor Abronsius    schedule 06.06.2020
comment
Такая возможность всегда существовала при интеграции только на стороне клиента. Вы можете оплатить любой счет PayPal на любую сумму. Если это неправильная сумма, вы можете ожидать возврата денег и, возможно, даже закрытия счета за мошенничество.   -  person Preston PHX    schedule 06.06.2020


Ответы (1)


Рекомендуемое решение:

Код внешнего интерфейса: https://developer.paypal.com/demo/checkout/#/pattern/server, который вызовет на вашем сервере два маршрута: один для «Настроить транзакцию», а второй - для «Захват транзакции».

Вам нужно будет создать эти два соответствующих маршрута на стороне сервера, каждый из которых будет вызывать API PayPal напрямую (и безопасно). Руководство по реализации: https://developer.paypal.com/docs/business/checkout/server-side-api-calls/#server-side-api-calls

person Preston PHX    schedule 05.06.2020