Paypal rest sdk 400 error (node.js) 关于 VALIDATION ERROR 的一些事情(错误写在描述中)
Paypal rest sdk 400 error (node.js) Something about VALIDATION ERROR (The error is written in description)
这是我得到的错误
name: 'VALIDATION_ERROR',
details: [
{
field: 'purchase_units[0]',
issue: 'Item amount must add up to specified amount subtotal (or total if amount details not specified)'
}
],
message: 'Invalid request - see details',
information_link: 'https://developer.paypal.com/docs/api/payments/#errors',
debug_id: '74ac8660674d8',
httpStatusCode: 400
这是我的 /pay post 路线
app.post('/pay' , (req , res) => {
let cart = new Cart(req.session.cart)
const create_payment_json = {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": "http://localhost:3000/success",
"cancel_url": "http://localhost:3000/failed"
},
"transactions": [{
"item_list": {
"items": getItems(cart.items)
},
"amount": {
"currency": "USD",
"total": cart.totalPrice
},
"description": "This is the payment description."
}]
};
这是 getItems 函数
function getItems(cart) {
let itemsArray = [];
for (const [idx, item] of Object.entries(cart)) {
itemsArray.push({
"name": item.item.product_name,
"price": item.price,
"currency": "USD",
"quantity": item.qty
});
}
return itemsArray;
}
当我 console.log cart.totalPrice 它应该是正确的(这是购物车中所有物品的总数)知道这里出了什么问题。我对所有这些东西有点陌生所以有点困惑
对于当前(未弃用)API,请参阅 Set up standard payments
中的示例
在您的服务器上制作 2 条路线,一条用于 'Create Order',一条用于 'Capture Order'、documented here。两条路线都应该 return 只有 JSON 数据(没有 HTML 或文本)。在第二条路线中,当捕获 API 成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id
,这是 PayPal 交易 ID)并执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)立即 在 将您的 return JSON 转发给前端呼叫者之前。
将这 2 条路线与当前的 JS SDK 前端批准流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server
这是我得到的错误
name: 'VALIDATION_ERROR',
details: [
{
field: 'purchase_units[0]',
issue: 'Item amount must add up to specified amount subtotal (or total if amount details not specified)'
}
],
message: 'Invalid request - see details',
information_link: 'https://developer.paypal.com/docs/api/payments/#errors',
debug_id: '74ac8660674d8',
httpStatusCode: 400
这是我的 /pay post 路线
app.post('/pay' , (req , res) => {
let cart = new Cart(req.session.cart)
const create_payment_json = {
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
"redirect_urls": {
"return_url": "http://localhost:3000/success",
"cancel_url": "http://localhost:3000/failed"
},
"transactions": [{
"item_list": {
"items": getItems(cart.items)
},
"amount": {
"currency": "USD",
"total": cart.totalPrice
},
"description": "This is the payment description."
}]
};
这是 getItems 函数
function getItems(cart) {
let itemsArray = [];
for (const [idx, item] of Object.entries(cart)) {
itemsArray.push({
"name": item.item.product_name,
"price": item.price,
"currency": "USD",
"quantity": item.qty
});
}
return itemsArray;
}
当我 console.log cart.totalPrice 它应该是正确的(这是购物车中所有物品的总数)知道这里出了什么问题。我对所有这些东西有点陌生所以有点困惑
对于当前(未弃用)API,请参阅 Set up standard payments
中的示例在您的服务器上制作 2 条路线,一条用于 'Create Order',一条用于 'Capture Order'、documented here。两条路线都应该 return 只有 JSON 数据(没有 HTML 或文本)。在第二条路线中,当捕获 API 成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 purchase_units[0].payments.captures[0].id
,这是 PayPal 交易 ID)并执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)立即 在 将您的 return JSON 转发给前端呼叫者之前。
将这 2 条路线与当前的 JS SDK 前端批准流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server