2010-07-12 11 views
11

Ho scoperto che sono disponibili due diverse proprietà dell'ordine nell'API Magento.ID ordine API Magento ID vs ID incremento

order_id e order_increment_id. Per l'ordine di esempio possono essere qualcosa come order_increment_id = 100000080 e order_id = 81.

La domanda è: qual è la differenza tra loro? Come sono considerati come usati? Nell'interfaccia utente del web store vedo che il mio ordine ha "Numero ordine" = 100000080. A cosa serve la proprietà order_id?

risposta

12

Ho lavorato con l'API di Magento da quasi un anno e posso assicurarvi che l'unico ID che è necessario utilizzare è order_increment_id. Viene utilizzato come ID principale nella chiamata order.info. Lo stesso vale per le API di fatturazione e spedizione: utilizzano anche l'id di incremento appropriato come principale.

order_id, che credo sia uguale a entity_id, è la chiave primaria nella tabella sales_order utilizzata per unire tutte le tabelle eav insieme. È utilizzato internamente in Magento, ma lavorando con l'API non è necessario preoccuparsene.

+0

Questo è vero per l'API SOAP. Se si utilizza l'API REST, si desidera l'id entità, non l'ID incremento. http://devdocs.magento.com/guides/m1x/api/rest/Resources/Orders/sales_orders.html – txyoji

+0

La risposta non è corretta per Magento 2.1. Realmente Magento 2.1 usa 'entity_id' per le chiamate soap – burzhuy

+0

Come accennato altrove, se stai ricevendo salesOrderShipments, devi filtrare da order_id, non da increment_id.Nel nostro sistema memorizziamo entrambi perché entrambi sono necessari. – David

4

Immagino che order_increment_id venga utilizzato per la visualizzazione al cliente e order_id è per uso interno. Le persone trovano strani ID di basso ordine, sono abituati a vedere 10 cifre circa guardando gli ID ordine.

1

Ciò che Silvo ha detto è vero e questo è il motivo per cui esiste un metodo chiamato getLastRealOrderId();

1

Ciò che Silvo dice è corretto ma ci sono alcune circostanze in cui l'order_id è referenziato nell'API ed è l'unico riferimento che si deve tornare all'ordine.

Ad esempio, se è stato generato un elenco di SalesOrderInvoices o SalesOrderShipments, il riferimento all'ordine, dagli oggetti nell'elenco, viene indicato come order_id, non order_increment_id. Mentre è possibile ottenere SalesOrderEntity da order_increment_id direttamente tramite SalesOrderInfoRequest, sarà necessario cercare tale order_id utilizzando SalesOrderListRequest con un filtro su "order_id".

0

Per magento 2.1 (il comportamento di pehaps non è lo stesso per le altre versioni?!) È necessario utilizzare entity_id. L'ho verificato per l'API SOAP. A volte entityId sembra incrementId e questo può portare a incomprensioni.

Ad esempio

  • provo a chiamare SalesOrderRepositoryV1GetList con parametro id=275
  • ordine ricevuto ha <entityId>275</entityId> <incrementId>000000276</incrementId>
  • provo a richiamare SalesOrderRepositoryV1GetList con parametro id=000000276
  • ordine ricevuto è <entityId>276</entityId> <incrementId>000000277</incrementId>

In UI vedrete 000000277 per 275 e 000000276 per 276