2010-07-12 8 views
11

Ich habe festgestellt, dass es zwei verschiedene Eigenschaften der Bestellung in Magento API zur Verfügung stehen.Magento API Bestell-ID vs. Inkrement-ID

order_id und order_increment_id. Für die Beispielreihenfolge können sie etwas wie order_increment_id = 100000080 und order_id = 81 sein.

Die Frage ist: Was ist der Unterschied zwischen ihnen? Wie werden sie verwendet? In der Web-Shop-UI sehe ich, dass meine Bestellung "Order #" = 100000080 hat. Wofür ist die order_id-Eigenschaft?

Antwort

12

Ich arbeite seit fast einem Jahr mit der Magento API und kann Ihnen versichern, dass die einzige ID, die Sie verwenden müssen, die order_increment_id ist. Es wird als Haupt-ID im Aufruf von order.info verwendet. Dasselbe gilt für die APIs für Rechnung und Versand - sie verwenden auch die entsprechende Inkrement-ID als Haupt-API.

Die order_id, die ich glaube, ist identisch mit entity_id, ist der Primärschlüssel in der sales_order Tabelle, die verwendet wird, um alle eav Tabellen zusammen zu verbinden. Es wird intern in Magento verwendet, aber mit der API arbeiten müssen Sie sich keine Sorgen machen.

+0

Dies gilt für die SOAP API. Wenn Sie die REST-API verwenden, wird die Entitäts-ID und nicht die Inkrement-ID benötigt. http://devdocs.magento.com/guides/m1x/api/rest/Resources/Orders/sales_orders.html – txyoji

+0

Antwort ist nicht korrekt für Magento 2.1. Wirklich Magento 2.1 verwendet 'entity_id' für Soap-Aufrufe – burzhuy

+0

Wie bereits erwähnt, wenn Sie SalesOrderShipments erhalten, müssen Sie nach der order_id, nicht die increment_id filtern.In unserem System speichern wir beide, weil beide benötigt werden. – David

4

Ich denke, order_increment_id wird für die Anzeige an den Kunden verwendet, und die order_id ist für den internen Gebrauch. Die Leute finden Ids mit niedriger Ordnung seltsam, sie sind daran gewöhnt, etwa 10 Ziffern zu sehen, wenn sie Auftrags-IDs betrachten.

1

Was silvo gesagt hat ist wahr und deshalb gibt es eine Methode namens getLastRealOrderId();

1

Was Silvo sagt, ist korrekt, aber es gibt einige Umstände, wo die order_id in der API referenziert wird und die einzige Referenz ist, die Sie zurück zur Bestellung haben müssen.

Wenn Sie beispielsweise eine Liste von SalesOrderInvoices oder SalesOrderShipments generiert haben, wird die Referenz zurück zu der Bestellung aus den Objekten in der Liste als order_id und nicht als order_increment_id angegeben. Während Sie die SalesOrderEntity von der order_increment_id direkt über eine SalesOrderInfoRequest abrufen können, müssen Sie nach dieser order_id suchen, indem Sie eine SalesOrderListRequest mit einem Filter auf "order_id" verwenden.

0

Für Magento 2.1 (pehaps Verhalten nicht das gleiche für andere Versionen?!) Sollten Sie entity_id verwenden. Ich habe es für SOAP API überprüft. Manchmal sieht entityId wie incrementId aus und das kann zu Missverständnissen führen.

Zum Beispiel

  • ich versuche SalesOrderRepositoryV1GetList zu rufen mit dem Parameter id=275
  • Auftrag erhalten hat <entityId>275</entityId> <incrementId>000000276</incrementId>
  • ich versuche SalesOrderRepositoryV1GetList zu rufen mit dem Parameter id=000000276
  • Auftrag erhalten hat <entityId>276</entityId> <incrementId>000000277</incrementId>

In der Benutzeroberfläche sehen Sie für 275 und 000000276 für 276