我正在尝试将履行状态更新为“已履行”并包含其他信息,例如使用 Shopify API 的跟踪号。
目前,我可以修改其他字段,例如 note_attributes,但我在更新履行状态时遇到困难。我不确定是否应该从以下 URL 更新订单:
https://${store}.myshopify.com/admin/api/2024-01/orders/${orderId}.json
或者是否有另一个履行更新端点。我也尝试创建此端点的实现https://${store}.myshopify.com/admin/api/2023-10/orders/${orderId}/fulfillments.json
,但遇到 404 错误。
使用这段代码,我尝试创建一个实现,但我还无法做到。
const fulfillmentData = {
fulfillment: {
location_id: 64283476117,
tracking_number: trackingNumber,
tracking_company: "Company",
tracking_numbers: [trackingNumber],
tracking_url: `https://company.eu/EU/en/parcel-tracking?match=${trackingNumber}`,
tracking_urls: [`https://company.eu/EU/en/parcel-tracking?match=${trackingNumber}`],
status: 'success',
service: 'manual',
line_items: currentOrder.line_items.map(item => ({ id: item.id, quantity: item.quantity }))
},
};
const createFulfillmentResponse = await axios.post(
`https://${store}.myshopify.com/admin/api/2023-10/orders/${orderId}/fulfillments.json`,
fulfillmentData,
{
headers: {
'X-Shopify-Access-Token': adminApiAccessToken,
'Content-Type': 'application/json',
},
}
);
我可以修改此 URL 中的订单,但如果我尝试添加履行,则不起作用:
https://${store}.myshopify.com/admin/api/2023-10/orders/${orderId}.json
谢谢
解决方案:
最终对我有用的解决方案是使用 shopify-api-node 库。这是解决我的问题的代码:
const fulfillmentDetails = await shopify.order.fulfillmentOrders(orderId);
const fulfillmentOrderId = fulfillmentDetails[0].id;
const fulfillmentLineitemIds = fulfillmentDetails[0].line_items.map(item => ({
id: item.id,
quantity: item.quantity
}));
const updateParams = {
line_items_by_fulfillment_order: [
{
fulfillment_order_id: fulfillmentOrderId,
fulfillment_order_line_items: fulfillmentLineitemIds
}
],
tracking_info: {
number: trackingNumber,
url: `https://company.eu/EU/en/parcel-tracking?match=${trackingNumber}`,
company: 'company'
},
notify_customer: true,
origin_address: null,
message: 'Delivery status: ' + trackingNumber
};
const updateFulfillment = await shopify.fulfillment.createV2(updateParams);
我希望这对那些可能遇到类似问题的人有所帮助。感谢社区的支持!
致以诚挚的问候