Безопасный PayPal Checkout на стороне клиента? - PullRequest
1 голос
/ 14 марта 2020

С оформлением заказа на стороне клиента PayPal они утверждают, что вы можете просто перенести их код на свой сайт (передний конец). Однако из этого примера видно, что пользователь может изменить запрашиваемую сумму, поскольку код находится на клиенте («Никогда не доверяй клиенту»).

Возможно ли это защитить или необходим код на стороне сервера?

Код прямо с демо

<!DOCTYPE html>

<head>
    <!-- Add meta tags for mobile and IE -->
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>

<body>
    <!-- Set up a container element for the button -->
    <div id="paypal-button-container"></div>

    <!-- Include the PayPal JavaScript SDK -->
    <script src="https://www.paypal.com/sdk/js?client-id=sb&currency=USD"></script>

    <script>
        // Render the PayPal button into #paypal-button-container
        paypal.Buttons({

            // Set up the transaction
            createOrder: function(data, actions) {
                return actions.order.create({
                    purchase_units: [{
                        amount: {
                            value: '0.01'
                        }
                    }]
                });
            },

            // Finalize the transaction
            onApprove: function(data, actions) {
                return actions.order.capture().then(function(details) {
                    // Show a success message to the buyer
                    alert('Transaction completed by ' + details.payer.name.given_name + '!');
                });
            }


        }).render('#paypal-button-container');
    </script>
</body>

1 Ответ

1 голос
/ 15 марта 2020

На стороне сервера необходимо обеспечить сумму (а также описание и любые другие данные, которые вы хотите указать в рамках транзакции)

Вот демонстрационный шаблон внешнего интерфейса для серверной части.

...