WooCommerce REST API:更新订单订单项元数据进行装运



我已经在一个问题上发布了通过node.js。

我一直在遵循以下步骤以更新订单(并且在某些领域很成功):https://woocommerce.github.io/woocommerce-rest-api-docs/#update-an-rorder

现在,我想实现的目标是更改订单的发货订单项数量。我通常会在WordPress UI中使用部分订单WC插件。

在下面,您可以使用订单API调用从WC找到我从WC获得的行项的屏幕截图。meta_data数组的最后一个元素具有键"已发货",它包含一个带有一个对象的数组,指出已发货(两个有序项目中的一个):

"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
    },

您可以看到,键"发货"的值是一个对象。当我将其发送给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将其视为字符串,而不是作为对象,也不会按照我预期的方式更新DB中的装运数量(仅将运送的数量拉到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

最新更新