在 .net 中使用PayPal REST API



我正在尝试使用我的.net应用程序实现PayPal REST API。为此,我正在使用沙盒帐户。通过参考下面的演示/文档,编写代码,该代码将首先创建订单,然后为同一订单付款。

但是,我的问题是我无法获取订单ID。虽然我从下面的代码中得到了res.json()。我需要获取订单 ID,将其设置为某个变量并在后续请求中使用它。下面的代码是我从演示链接中获得的,并根据我的要求进行了一些更改。

同样在OnApprove块中,我没有得到data.id.

 <div id="paypal-button-container">    </div>
<script>
        // Render the PayPal button into #paypal-button-container
        paypal.Buttons({
            // Set up the transaction
            createOrder: function (data, actions) {
                return fetch('https://api.sandbox.paypal.com/v2/checkout/orders', {
                    method: 'post',
                    headers: {
                        'content-type': 'application/json',
                        'Authorization': 'Bearer <My Access Token>'
                    },
                    body: JSON.stringify({
                        "intent": "CAPTURE",
                        "purchase_units": [
                            {
                                "amount": {
                                    "currency_code": "USD",
                                    "value": "100.00"
                                }
                            }
                        ]
                    })
                }).then(function (res) {
                    return res.json();
                }).then(function (data) {
                    return data.id;
                });
            },
            // Finalize the transaction
            onApprove: function (data, actions) {
                return fetch('https://api.sandbox.paypal.com/v2/checkout/orders/' + data.id + '/capture/', {
                    method: 'post',
                    headers: {
                        'content-type': 'application/json',
                        'Authorization': 'Bearer <My Access Token>'
                    },
                }).then(function (res) {
                    return res.json();
                }).then(function (details) {
                    console.log(details);
                    // Show a success message to the buyer
                    alert('Transaction completed');
                });
            }
        }).render('#paypal-button-container');
    </script>

另外,我可以从PayPal按钮执行自己的 API 吗?

对此的任何帮助表示赞赏!

你的代码看起来很完美(几乎(。您只需要记住此处变量的范围。由于"data"变量仅限于"then"块,因此您需要创建一个新变量来保存"data.id"的值并在onApproval块中使用它。我在下面的代码中添加了一个名为"orderID"的新变量,这似乎正在工作。

<script>
    var orderID; //Declared a variable
    // Render the PayPal button into #paypal-button-container
    paypal.Buttons({
        // Set up the transaction
        createOrder: function (data, actions) {
            return fetch('https://api.sandbox.paypal.com/v2/checkout/orders', {
                method: 'post',
                headers: {
                    'content-type': 'application/json',
                    'Authorization': 'Bearer <My Access Token>'
                },
                body: JSON.stringify({
                    "intent": "CAPTURE",
                    "purchase_units": [
                        {
                            "amount": {
                                "currency_code": "USD",
                                "value": "100.00"
                            }
                        }
                    ]
                })
            }).then(function (res) {
                return res.json();
            }).then(function (data) {
                orderID = data.id; //storing the id in our variable
                return data.id;
            });
        },
        // Finalize the transaction
        onApprove: function (data, actions) {
            //using the id stored in our variable
            return fetch('https://api.sandbox.paypal.com/v2/checkout/orders/' + orderID + '/capture/', {
                method: 'post',
                headers: {
                    'content-type': 'application/json',
                    'Authorization': 'Bearer <My Access Token>'
                },
            }).then(function (res) {
                return res.json();
            }).then(function (details) {
                console.log(details);
                // Show a success message to the buyer
                alert('Transaction completed');
            });
        }
    }).render('#paypal-button-container');
</script>

您正在执行的实现非常适合用于涉及服务器端组件的情况,并且对PayPal服务器的 API 调用是通过服务器完成的。如果您的实现不需要服务器端,那么我强烈建议您遵循智能支付按钮实现 - https://developer.paypal.com/docs/checkout/integrate/#

相关内容

  • 没有找到相关文章

最新更新