【发布时间】:2021-07-12 07:28:45
【问题描述】:
我尝试使用付款属性 Payment._id 保存订单,但无法在创建路由中获取捕获 ID。有没有办法通过贝宝传递一些ID,然后在捕获中获取该ID?在捕获路径中保存订单和付款是否是个好主意?
支付模型存储贝宝捕获
router.post("/order/create", async (req, res) => {
const { items, payment_method, price } = req.body;
try {
//Document just for validation that doesn't save
const newOrder = new Order({
items,
payment_method,
price,
});
const validationError = await newOrder.validate();
if (validationError !== undefined) throw Error("Validation Failed");
let request = new paypalSDK.orders.OrdersCreateRequest();
const body = {
intent: "CAPTURE",
purchase_units: [
{
items: paypalItems(newOrder.items),
amount: {
currency_code: "USD",
value: newOrder.price,
breakdown: {
item_total: {
currency_code: "USD",
value: newOrder.price,
},
},
},
},
]
};
request.prefer("return=representation");
request.requestBody(body);
const order = await client.execute(request);
res.status(200).json({
orderID: order.result.id,
});
} catch (e) {
console.error(e);
res.status(500);
}
});
router.post("/order/capture", async (req, res) => {
const { items, payment_method, price } = req.body;
const orderID = req.body.orderID;
const request = new paypalSDK.orders.OrdersCaptureRequest(orderID);
request.requestBody({});
try {
const capture = await client.execute(request);
const captureID = capture.result.purchase_units[0].payments.captures[0].id;
const newPayment = new Payment(capture.result);
const savedPayment = await newPayment.save();
const newOrder = new Order({
items,
payment_method,
price,
payment: savedPayment._id,
});
await newOrder.save();
} catch (err) {
console.error(err);
return res.sendStatus(500);
}
res.status(200).json({});
});
【问题讨论】: