Идентификатор заказа API Magento против id инкремента

Я обнаружил, что есть два разных свойства заказа в Magento API.

order_id и order_increment_id. Для заказа образца они могут быть чем-то вроде order_increment_id = 100000080 и order_id = 81.

Вопрос: в чем разница между ними? Как они считаются используемыми? В пользовательском интерфейсе веб-магазина я вижу, что мой заказ имеет "Order #" = 100000080. Что такое свойство order_id для?

Ответ 1

Я работаю с magento API уже почти год и могу заверить, что единственным идентификатором, который вам нужно использовать, является order_increment_id. Он используется как основной идентификатор в вызове order.info. То же самое относится к API-интерфейсам счета-фактуры и отгрузки - они также используют соответствующий инкремент id как основной.

Order_id, который, как я считаю, является таким же, как entity_id, является первичным ключом в таблице sales_order, используемой для объединения всех таблиц eav. Он используется внутри magento, но, работая с API, вам не нужно беспокоиться об этом.

Ответ 2

Я предполагаю, что order_increment_id используется для отображения клиенту, а order_id - для внутреннего использования. Люди находят, что идентификаторы низкого порядка странные, они привыкли видеть 10 цифр или около того при поиске идентификаторов заказа.

Ответ 3

Что сказал silvo, это правда, и поэтому существует метод, называемый getLastRealOrderId();

Ответ 4

То, что Silvo говорит правильно, однако есть некоторые обстоятельства, когда order_id ссылается в API и является единственной ссылкой, которую вы должны вернуть к заказу.

Например, если вы создали список SalesOrderInvoices или SalesOrderShipments, тогда ссылка на заказ, из объектов в списке, указана как order_id, а не order_increment_id. Хотя вы можете получить SalesOrderEntity из order_increment_id непосредственно через SalesOrderInfoRequest, вам нужно будет искать этот order_id с помощью SalesOrderListRequest с фильтром на "order_id".

Ответ 5

Для magento 2.1 (поведение pehaps не одинаково для других версий?!), вы должны использовать entity_id. Я проверил его для SOAP API. Иногда entityId выглядит как incrementId, и это может привести к недоразумению.

Например

  • Я пытаюсь вызвать SalesOrderRepositoryV1GetList с параметром id=275
  • полученный порядок имеет <entityId>275</entityId> <incrementId>000000276</incrementId>
  • Я пытаюсь вызвать SalesOrderRepositoryV1GetList с параметром id=000000276
  • полученный порядок имеет <entityId>276</entityId> <incrementId>000000277</incrementId>

В пользовательском интерфейсе вы увидите 000000277 для 275 и 000000276 для 276