我是新来的,抱歉问得太早了。我只是需要你的帮助,有人告诉我,你的最好的人来回答我的问题。
我正在与我的网上商店只是为了测试,我的贝宝沙盒似乎有一个问题时,付款,我不知道什么样的代码被放置,因为没有在贝宝方面的例子。
下面是我的代码,不要介意我的客户端ID:
<script src="https://www.paypal.com/sdk/js?client-id=abcdefg¤cy=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>`
1条答案
按热度按时间2fjabf4q1#
实际上,您需要创建一个后端来实现创建和捕获订单的两个路由,在上面的示例代码中是
路径可以更改,但无论更改为什么,它们都需要是浏览器可以向其发送获取请求并返回JSON响应的真实的路径(只有JSON,没有其他HTML或文本可能是响应的一部分,因此如果使用PHP调试信息的“echo”或“print”语句,请小心,这将破坏客户端代码解析预期JSON有效负载的能力)
2个路由的后端可以用任何语言实现,包括PHP。作为示例,standard integration guide和integration builder中的示例后端在node.js中,因为JavaScript是一种最容易理解的语言,但这只是示例--您可以在您选择的任何服务器端语言中实现示例节点
index.js
的功能。create路由需要使用v2/checkout/orders API来创建订单,capture路由需要在批准后捕获给定的订单ID。调用orders API需要首先获取一个访问令牌,节点示例展示了如何执行此操作。