Paypal弹出不工作使用php和paypal集成

iezvtpos  于 2023-05-16  发布在  PHP
关注(0)|答案(1)|浏览(123)

我是新来的,抱歉问得太早了。我只是需要你的帮助,有人告诉我,你的最好的人来回答我的问题。
我正在与我的网上商店只是为了测试,我的贝宝沙盒似乎有一个问题时,付款,我不知道什么样的代码被放置,因为没有在贝宝方面的例子。
下面是我的代码,不要介意我的客户端ID:

<script src="https://www.paypal.com/sdk/js?client-id=abcdefg&currency=USD"></script>
    <!-- Set up a container element for the button -->
    <script>
        paypal.Buttons({
            createOrder() {
                return fetch("/my-server/create-paypal-order", {
                    method: "POST",
                        headers: {
                            "Content-Type": "application/json",
                        },
                        body: JSON.stringify({
                            cart: [
                            {
                                sku: "YOUR_PRODUCT_STOCK_KEEPING_UNIT",
                                quantity: "YOUR_PRODUCT_QUANTITY",
                            },
                            ],
                       }),
                })
                .then((response) => response.json())
                .then((order) => order.id);
            },
            onApprove(data) {
                return fetch("/my-server/capture-paypal-order", {
                    method: "POST",
                    headers: {
                        "Content-Type": "application/json",
                    },
                    body: JSON.stringify({
                    orderID: data.orderID
                })
           })
           .then((response) => response.json())
           .then((orderData) => {
               console.log('Capture result', orderData, JSON.stringify(orderData, null, 2));
               const transaction = orderData.purchase_units[0].payments.captures[0];
               alert(`Transaction ${transaction.status}: ${transaction.id}\n\nSee console for all 
               available details`);
           });
      }
  }).render('#paypal-button-container');
</script>`
2fjabf4q

2fjabf4q1#

实际上,您需要创建一个后端来实现创建和捕获订单的两个路由,在上面的示例代码中是

/my-server/create-paypal-order
/my-server/capture-paypal-order

路径可以更改,但无论更改为什么,它们都需要是浏览器可以向其发送获取请求并返回JSON响应的真实的路径(只有JSON,没有其他HTML或文本可能是响应的一部分,因此如果使用PHP调试信息的“echo”或“print”语句,请小心,这将破坏客户端代码解析预期JSON有效负载的能力)
2个路由的后端可以用任何语言实现,包括PHP。作为示例,standard integration guideintegration builder中的示例后端在node.js中,因为JavaScript是一种最容易理解的语言,但这只是示例--您可以在您选择的任何服务器端语言中实现示例节点index.js的功能。
create路由需要使用v2/checkout/orders API来创建订单,capture路由需要在批准后捕获给定的订单ID。调用orders API需要首先获取一个访问令牌,节点示例展示了如何执行此操作。

相关问题