0

Ich habe für die Aktualisierung von Auftragspositionen Metadaten über WooCommerce REST-API node.js. auf ein Problem stubledWooCommerce REST API: Aktualisierung Auftragsposition Metadaten für den Versand

Ich verfolge diese Schritte für Aufträge zu aktualisieren (und war erfolgreich mit einigen Feldern): https://woocommerce.github.io/woocommerce-rest-api-docs/#update-an-order

Nun, was ich die Anzahl der versendeten Positionen einer Bestellung erreichen möchte verändert. Etwas würde ich normalerweise das Partial Orders WC-Plugin in der WordPress-Benutzeroberfläche verwenden.

Unten können Sie einen Screenshot von einer Position I von WC erhalten finden Sie die Aufträge API-Aufruf. Das letzte Element des meta_data Array Schlüssel ‚ausgeliefert‘ und es enthält ein Array mit einem Objekt, dass man unter Angabe (aus zwei bestellten Artikel) hatte ausgeliefert:

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

Wie Sie sehen können, den Wert Der Schlüssel "Versendet" ist ein Objekt. Als ich ty es (wieder) zu WC zu senden, erhalte ich eine Fehlermeldung, dass: "data":{"status":400,"params":{"line_items":"line_items[0][meta_data][3][value] is not of type string."}}}

Wenn ich versuche, den Wert als String zu senden, dh lineItems[0].meta_data = [{key:"shipped", value: "[{qty:'2'}]" }]

ich keine Fehler, aber WC behandelt dies als String, nicht als Objekt und aktualisiert nicht die Sendung Menge in der DB, wie ich gedacht (es zieht nur die mitgelieferte Menge auf 0 statt):

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

keine Erkenntnisse oder Ideen - wie könnte Ich ändere die ausgelieferte Menge an Werbebuchungen über die WC API?

+0

Sie sollten die Screenshots von den Rohdaten ersetzen ... Es scheint, dass es nötig werden sollte, eine serialisierte Array sein (als String) von WooCommerce in Kauf genommen werden . Aber ich weiß nicht, wie Sie es einstellen müssen, da ich nicht wirklich ein Experte in REST API bin. – LoicTheAztec

+0

@LoicTheAztec, Ich glaube, ich habe bereits ein serialisiertes Array '' '(" [{qty: '2'}] ")' '' verwendet und es hat nicht funktioniert – genau

Antwort

Verwandte Themen