Im试图用支付属性payment._id保存订单,但无法在创建路由中获取捕获id。是否有一种方法通过贝宝传递一些id然后在捕获中获取该id?并且这是一个好主意,以节省订单和支付在捕获路线?
支付模型存储paypal捕获
js prettyprint-override">
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({});
});
在订单创建请求体的purchase_units[0]
中,可以包含唯一的*invoice_id
(对付款方可见)或任意的custom_id
(仅对接收方可见)。
*发票ID以前不应用于成功捕获的付款,否则这将导致默认配置中的重复发票ID错误(以防止意外重复支付同一件物品)
当您成功捕获订单时,PayPal交易ID将位于purchase_units[0].payments.captures[0].ID
。将此存储在数据库中以备将来参考。
我遵循以下示例(https://developer.PayPal.com/docs/checkout/reference/server-integration/set-up-transaction/#on-the-server),以使PayPal在服务器上工作。 我的问题是,有可能同时创建秩序、授权和捕获吗? 谢谢
是否有可能自动捕获一个订单,而不需要任何额外的捕获请求?因为当我使用贝宝按钮,它自动工作,我想有相同的结果使用REST API。
我们在这里按照Remi Corson的指南为变体产品设置了一个自定义域 此时,当用户选择变体时,我们能够在单个产品页面中显示自定义文本字段,但这在购买过程中是不够的,因为我们需要: A)在购物车和结帐中显示此文本 B)保存此信息,以便在“感谢”页面、“电子邮件”和“管理订单编辑”页面中显示此信息 类似于在WooCommerce订单和电子邮件上保存和显示产品自定义元,但使用的是产品变体而不是简单的产
在Woocommerce 3应答代码中使用将自定义产品元数据传递到订单,当从后端手动创建订单时,从后端手动添加产品时,是否可以保存和显示自定义元数据? 这是我的代码(略有改动): 当客户机从前端创建订单时,这种方法可以正常工作。但是,当管理员从后端手动创建订单并添加产品时,自定义元数据不可见。 对于手动创建的订单,如何解决此问题,允许添加产品自定义字段作为自定义订单项目数据?
我试图捕获一个贝宝交易,已经授权使用贝宝按钮。我正在尝试使用CyberSource Simple Order API来做这件事。我只有3条信息似乎是从PayPal按钮返回的:、和。我尝试了几种方法来将其传递给简单的Order API,但总是得到一个102代码,在响应中包含消息。CyberSource的日志系统指出这是因为。 我是否需要通过CyberSource进行整个交易-授权和捕获?或者是什么方
在该商业商店订购特定产品时,将向订单添加两个元值。 存储元值的两个字段位于 元键是: 我希望在下新订单时以编程方式创建一个新的自定义字段,并将此新字段的值设置为,前提是已订购的产品存在元键assemblycost。 经过一些研究,我发现是一个钩子,在订单保存到数据库并更新元数据后执行。所以这似乎是我应该使用的钩子。 参考:为Woocommerce中的订单添加额外的元数据: 我尝试在函数中添加以下代