Идентификатор заказа 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