通过 API 将订单状态从未履行更改为已履行的问题

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

我希望你们一切都好。我目前正在致力于集成,并面临使用 Shopify API 和 node.js 将 Shopify 订单的订单状态从“未履行”更改为“已履行”的挑战。我已经参考了 API 文档,并正在寻求更多指导,因为我的方法遇到了问题。

这是我目前的方法:

我向 /admin/api/2024-01/orders/{order_id}/fulfillments.json 发出 POST 请求。 在请求正文中,我包括:

const fulfillmentData = {
  message: null,
  notify_customer: true,
  tracking_info: {
    number: trackingNumber,
    url: `https://company/EU/en/parcel-tracking?match=${trackingNumber}`,
    company: "company"
  },
  line_items: currentOrder.line_items.map(lineItem => ({
    id: lineItem.id,
    quantity: lineItem.quantity,
  })),
  location_id: locationId
};

但是,我收到错误响应,具体来说:

请求失败,状态代码 400 { 错误:{ 履行:'必需的参数丢失或无效' } }

我非常感谢任何可以帮助我解决此问题的指导、代码示例或其他详细信息。

提前谢谢您!

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

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