PayPal:是否可以仅通过订单 ID/详细信息来支付订单

时间:2021-07-06 13:00:39

标签: python django paypal paypal-sandbox paypal-adaptive-payments

我正在尝试在后端创建订单,然后将订单 ID 传递给智能按钮的 javascript,以便我可以在不允许用户编辑订单的情况下执行订单。我之前通过创建一个计划然后传入计划 ID 来执行付款,通过订阅成功地完成了此操作,但我不知道使用什么按钮操作来对订单执行此操作。我该怎么做?

这是我在后端执行此操作的方式:

headers = {
    "Content-Type": "application/json",
    "Authorization": bearer_token,
}

data = {
    "intent": "CAPTURE",
    "purchase_units": [
        {
            "amount": {
                "currency_code": "GBP",
                "value": str(order.credits)
            }
        }
    ]
}

response = requests.post('https://api-m.sandbox.paypal.com/v2/checkout/orders', headers=headers, json=data).json()

order_id = response["id"]

context = {
    'order_id': order_id,
}

这是我在前端尝试过的:

paypal.Buttons({

    style: {
        size: 'responsive',
    },

    createOrder: function(data, actions) {

      return actions.order.create({

            "id": "{{ order_id }}"

        });

      },

    onApprove: function(data, actions) {

            

    }

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

1 个答案:

答案 0 :(得分:1)

不要使用 actions.order.create 或 actions.order.capture。在前一种情况下只需返回 id。

请参阅 https://developer.paypal.com/demo/checkout/#/pattern/server

处的代码示例
      paypal.Buttons({

            // Call your server to set up the transaction
            createOrder: function(data, actions) {
                return fetch('/some/path/on/your/server/paypal-order-create', {
                    method: 'post'
                }).then(function(res) {
                    return res.json();
                }).then(function(orderData) {
                    return orderData.id;
                });
            },