我发现Magento API中有两种不同的订单属性。
order_id和order_increment_id。对于样本订单,它们可以是order_increment_id = 100000080和order_id = 81。
问题是:它们之间有什么区别?他们被认为是如何使用的?在网上商店用户界面中,我看到我的订单有“订单号”= 100000080.什么是order_id属性?
答案 0 :(得分:12)
我已经使用magento API近一年了,可以向您保证,您需要使用的唯一ID是order_increment_id。它在order.info调用中用作主ID。发票和货件API也是如此 - 它们也使用适当的增量ID作为主要增量ID。
我认为order_id与entity_id相同,是用于将所有eav表连接在一起的sales_order表中的主键。它在内部使用magento,但使用API时你不必担心它。
答案 1 :(得分:4)
我猜order_increment_id用于向客户显示,order_id供内部使用。人们发现低阶id很奇怪,他们习惯于在查看订单ID时看到10位左右。
答案 2 :(得分:1)
Silvo所说的是真的,这就是为什么有一个名为getLastRealOrderId()的方法;
答案 3 :(得分:1)
Silvo所说的是正确的,但在某些情况下,在API中引用了order_id,并且这是您必须返回订单的唯一参考。
例如,如果您生成了SalesOrderInvoices或SalesOrderShipments的列表,那么从列表中的对象返回到订单的引用将作为order_id而不是order_increment_id给出。虽然您可以通过SalesOrderInfoRequest直接从order_increment_id获取SalesOrderEntity,但您需要使用带有" order_id"的过滤器的SalesOrderListRequest来搜索该order_id。
答案 4 :(得分: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>
在用户界面中,您会看到000000277
的{{1}}和275
的{{1}}