使用checkout-server-sdk和react-paypal-js创建PayPal Transaction<



我目前在我的React SPA中使用@paypal/React -paypal-js组件。

<PayPalScriptProvider options={options}>
<PayPalButtons 
fundingSource={FUNDING.PAYPAL} 
style={{ color: "blue", shape: "pill", label: "pay", height: 40 }}
createOrder={this.createOrder}
onApprove={this.onApprove}
onCancel={this.onCancel}
onError={this.onError}
/>
</PayPalScriptProvider>

在服务器端为我创建订单工作,但是当我将orderID传递回客户端时,它无法与paypal按钮一起工作。这是我的createOrder函数

createOrder(data, actions) {
var cart = cookie.load('cart');
axios.post('/todos/createPayPalOrder', {items: {cart: cart}})
.then((res) => {
console.log(res);
this.setState({
datum: data,
order: res.data
})
return res.data;
})
/*
var order = actions.order.create({
purchase_units: [{

amount: {
value: this.state.price,
currency_code: 'USD'
},  
}],
});
this.setState({
datum: data,
order: order
})
*/
//console.log(order);

//return order;

}

这是我在服务器端的createOrder:

createOrder: async function(req, res) {
const { items } = req.body;
var amount = await calculateOrderAmount(req.body.items)
let request = new paypal.orders.OrdersCreateRequest();
request.prefer("return=representation");
request.requestBody({
intent: "CAPTURE",
purchase_units: [
{
amount: {
currency_code: "USD",
value: "100.00"
}
}
]
});

let response = await client.execute(request);
console.log(`Response: ${JSON.stringify(response)}`)
console.log(`Order: ${JSON.stringify(response.result)}`);

res.status(200).json(response.result.id);
},

当我试图通过createPayPalOrder将orderID返回给客户端时,它总是失败。它声称没有orderid,即使orderid被发送回客户端。

https://gyazo.com/5542a97135a60fae3eb8c2e912439e7e

https://gyazo.com/7445432a076767a7bbff550e74ed09bb

这里是否有异步错误或其他什么?如何让PayPal按钮组件识别我从服务器端发回的orderID ?

您的createOrder函数没有向调用者返回任何内容,调用者期望返回id字符串或承诺。

返回axios.post承诺…

return axios.post('/todos/createPayPalOrder', {items: {cart: cart}})

相关内容

最新更新