Как настроить Paypal Smart Buttons с Flask? - PullRequest
0 голосов
/ 02 апреля 2020

Я уже выполнил настройку на стороне сервера для Paypal Payments. Я получаю цену продукта из формы Html, а затем создаю платеж с помощью модуля paypalrestsdk . Важный кусок кода из всей системы находится здесь: -

payment = paypalrestsdk.Payment({
        "intent": "sale",
        # Set payment method
        "payer": {
            "payment_method": "paypal"
        },
        # Set redirect URLs
        "redirect_urls": {
            "return_url": url_for('after_payment_done_2_sol', hash_id=hash_id, user_id=current_user.user_id, _external=True),
            "cancel_url": url_for('topup', _external=True)
        },
        # Set transaction object
        "transactions": [{
            "amount": {
                "total": query.total_price,
                "currency": "USD"
            },
            "description": f"Payment Method for paying {query.total_price} for Top Up"
        }]
    })
    if payment.create():
        print('Payment "{}" created successfully'.format(payment.id))
        for link in payment.links:
            if link.method == "REDIRECT":
                redirect_url = str(link.href)
                print('Redirect for approval: {}'.format(redirect_url))
                return redirect(redirect_url)

Таким образом, будет создана ссылка на «Pay X Amount через Paypal». Но я хочу интегрировать умные кнопки, как здесь https://developer.paypal.com/demo/checkout/# / pattern / server . Теперь здесь есть кодовые блоки вроде:

 <script>
    // Render the PayPal button into #paypal-button-container
    paypal.Buttons({
        // How Does this work?????????????????????
        // Set up the transaction
        createOrder: function(data, actions) {
            return fetch('/demo/checkout/api/paypal/order/create/', {
                method: 'post'
            }).then(function(res) {
                return res.json();
            }).then(function(data) {
                return data.orderID;
            });
        },
        // ???????????????????????????????????????? How does this Work?????
        // Finalize the transaction
        onApprove: function(data, actions) {
            return fetch('/demo/checkout/api/paypal/order/' + data.orderID + '/capture/', {
                method: 'post'
            }).then(function(res) {
                return res.json();
            }).then(function(details) {
                // Show a success message to the buyer
                alert('Transaction completed by ' + details.payer.name.given_name + '!');
            });
        }


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

Так что здесь , как работает onAprrove и createOrder? И как мне настроить маршрут в flask? Любая помощь Пожалуйста!

1 Ответ

0 голосов
/ 02 апреля 2020

Это интеграция на стороне сервера, поэтому /demo/.... необходимо заменить URL-адресами, которые будут запускать код на стороне сервера, на вашем веб-сервере.

Если вы хотите javascript для стороны клиента интеграция, используйте https://developer.paypal.com/demo/checkout/# / шаблон / клиент

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...