WooCommerce REST API:更新发货的订单行项目元数据

WooCommerce REST API: updating order line item metadata for shipment

我偶然发现了使用 node.js.

通过 WooCommerce REST API 更新订单项元数据的问题

我一直在按照以下步骤更新订单(并且在某些字段上取得了成功): https://woocommerce.github.io/woocommerce-rest-api-docs/#update-an-order

现在,我想要实现的是更改订单的已发货订单项的数量。我通常会在 wordpress UI.

中使用部分订单 WC 插件

在下面,您可以找到我使用订单 API 调用从 WC 获得的订单项的屏幕截图。 meta_data 数组的最后一个元素有键 'shipped',它包含一个包含一个对象的数组,表明已经发货了一个(两件订购商品中的一件):

"line_items": [{
        "id": 1937,
        "name": "Maya",
        "product_id": 1271,
        "variation_id": 1272,
        "quantity": 2,
        "tax_class": "",
        "subtotal": "140.00",
        "subtotal_tax": "0.00",
        "total": "140.00",
        "total_tax": "0.00",
        "taxes": [],
        "meta_data": [{
                "id": 21637,
                "key": "pa_product-color",
                "value": "beige"
            }, {
                "id": 21638,
                "key": "pa_shoe-size",
                "value": "42"
            }, {
                "id": 21639,
                "key": "pa_shoe-width",
                "value": "wide"
            }, {
                "id": 21640,
                "key": "shipped",
                "value": [{
                        "qty": 1,
                        "date": "Nov 21, 2017"
                    }
                ]
            }
        ],
        "sku": "2522BE42W",
        "price": 70
    },

如您所见,键'shipped'的值是一个对象。当我试图将它发送(返回)到 WC 时,我收到一条错误消息: "data":{"status":400,"params":{"line_items":"line_items[0][meta_data][3][value] is not of type string."}}}

当我尝试将值作为字符串发送时,即 lineItems[0].meta_data = [{key:"shipped", value: "[{qty:'2'}]" }]

我没有收到任何错误,但 WC 将其视为字符串,而不是对象,并且没有按照我的预期方式更新数据库中的装运数量(它只是将装运数量降低为 0):

{
                "id": 21640,
                "key": "shipped",
                "value": "[{qty:'2'}]"
}

任何见解或想法 - 我如何通过 WC 修改订单项的发货数量 API?

所以,显然 WP 4.9 版本中存在一个错误,最近在以下提交中修复了该错误: https://github.com/woocommerce/woocommerce/pull/17849

它涉及 REST API 架构,在将修复程序合并到 WooCommerce 后,问题消失了,现在我可以将数据作为对象发送。

可在此处找到有关该主题的更多信息:
https://github.com/woocommerce/wc-api-dev/pull/74