2010-07-12 62 views
11

我发现在Magento API中有两个不同的订单属性可用。Magento API订单ID与增量ID

order_id和order_increment_id。对于示例订单,它们可以是order_increment_id = 100000080和order_id = 81。

问题是:它们之间有什么区别?他们如何被认为是使用?在网上商店用户界面中,我看到我的订单具有“订单号”= 100000080.什么是order_id属性?

回答

12

我一直在使用magento API近一年,现在可以向你保证你唯一需要使用的ID是order_increment_id。它被用作order.info调用中的主ID。发票和装运API也是如此 - 它们也使用适当的增量ID作为主要API。

我认为与entity_id相同的order_id是sales_order表中用于将所有eav表连接在一起的主键。它在magento内部使用,但使用API​​则无需担心。

+0

对于SOAP API,这是正确的。如果您使用的是REST API,它需要实体ID,而不是增量ID。 http://devdocs.magento.com/guides/m1x/api/rest/Resources/Orders/sales_orders.html – txyoji 2016-02-04 22:18:14

+0

答案是不正确的Magento 2.1。真的Magento 2.1使用'entity_id'作为肥皂调用 – burzhuy 2017-02-01 11:50:51

+0

正如其他地方所提到的,如果您正在获取salesOrderShipments,则需要按order_id而不是increment_id进行过滤。在我们的系统中,我们都存储这两个都是因为都需要 – David 2017-06-23 07:14:50

4

我想order_increment_id用于显示给客户,而order_id是供内部使用的。人们发现低阶ID奇怪,他们习惯看到10个数字左右时查看订单ID。

1

什么西尔沃说过是真的,这就是为什么有方法称为getLastRealOrderId();

1

什么西尔沃说是正确的,但有一些情况下,在API中引用order_id是唯一的参考你必须回到订单。

例如,如果您生成了SalesOrderInvoices或SalesOrderShipments的列表,那么从列表中的对象返回到订单的引用将作为order_id给出,而不是order_increment_id。虽然您可以直接通过SalesOrderInfoRequest从order_increment_id获取SalesOrderEntity,但您需要通过使用带有“order_id”过滤器的SalesOrderListRequest来搜索该order_id。

0

对于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>

在UI中,您将看到000000277275000000276276