在 Shopify API 上修改履行状态并添加跟踪信息

问题描述 投票:0回答:1

我正在尝试将履行状态更新为“已履行”并包含其他信息,例如使用 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

谢谢

javascript node.js shopify shopify-api shopify-api-node
1个回答
1
投票

解决方案:

最终对我有用的解决方案是使用 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);

我希望这对那些可能遇到类似问题的人有所帮助。感谢社区的支持!

致以诚挚的问候

© www.soinside.com 2019 - 2024. All rights reserved.