2010-07-12 38 views
11

Tôi đã tìm thấy có hai thuộc tính khác nhau của đơn đặt hàng trong API Magento có sẵn.ID đơn hàng API Magento so với id gia tăng

order_id và order_increment_id. Đối với thứ tự mẫu, chúng có thể giống như order_increment_id = 100000080 và order_id = 81.

Câu hỏi là: Sự khác nhau giữa chúng là gì? Làm thế nào họ được coi là được sử dụng? Trong giao diện người dùng cửa hàng trực tuyến tôi thấy rằng đơn đặt hàng của tôi có "Đơn đặt hàng số" = 100000080. Thuộc tính order_id là gì?

Trả lời

12

Tôi đã làm việc với API Magento trong gần một năm nay và có thể đảm bảo với bạn rằng ID duy nhất bạn cần sử dụng là order_increment_id. Nó được sử dụng làm ID chính trong lệnh gọi order.info. Điều này cũng đúng đối với hóa đơn và lô hàng API - chúng cũng sử dụng id gia tăng thích hợp làm id chính.

Order_id, mà tôi tin là giống như entity_id, là khóa chính trong bảng sales_order được sử dụng để nối tất cả các bảng eav với nhau. Nó được sử dụng trong Magento, nhưng làm việc với API bạn không cần phải lo lắng về nó.

+0

Điều này đúng với api SOAP. Nếu bạn đang sử dụng REST api, nó muốn id thực thể, không phải là id gia tăng. http://devdocs.magento.com/guides/m1x/api/rest/Resources/Orders/sales_orders.html – txyoji

+0

Câu trả lời là không đúng cho Magento 2.1. Thực sự Magento 2.1 sử dụng 'entity_id' cho các cuộc gọi xà phòng – burzhuy

+0

Như đã đề cập ở nơi khác, nếu bạn đang nhận được salesOrderShipments, bạn cần phải lọc theo order_id, không phải là increment_id.Trong hệ thống của chúng tôi, chúng tôi lưu trữ cả hai vì cả hai đều cần thiết. – David

4

Tôi đoán order_increment_id được sử dụng để hiển thị cho khách hàng và order_id là để sử dụng nội bộ. Mọi người tìm thấy id đơn đặt hàng thấp lạ, họ được sử dụng để nhìn thấy 10 chữ số hoặc hơn khi nhìn vào id đơn đặt hàng.

1

Điều mà silvo đã nói là đúng và đó là lý do tại sao có phương thức được gọi là getLastRealOrderId();

1

Những gì Silvo nói là chính xác tuy nhiên có một số trường hợp trong đó order_id được tham chiếu trong API và là tham chiếu duy nhất bạn phải quay lại đơn đặt hàng.

Ví dụ: nếu bạn tạo danh sách SalesOrderInvoices hoặc SalesOrderShipments thì tham chiếu ngược lại thứ tự, từ các đối tượng trong danh sách, được cung cấp dưới dạng order_id, không phải order_increment_id. Trong khi bạn có thể nhận được SalesOrderEntity từ order_increment_id trực tiếp thông qua một SalesOrderInfoRequest, bạn sẽ cần phải tìm kiếm order_id đó bằng cách sử dụng một SalesOrderListRequest với một bộ lọc trên "order_id".

0

Đối với Magento 2.1 (hành vi pehaps không giống với các phiên bản khác?!), Bạn nên sử dụng entity_id. Tôi đã kiểm tra nó trên cho SOAP API. Đôi khi, entityId trông giống như incrementId và điều này có thể dẫn đến sai sót.

Ví dụ

  • tôi cố gắng để gọi SalesOrderRepositoryV1GetList với tham số id=275
  • nhận được lệnh có <entityId>275</entityId> <incrementId>000000276</incrementId>
  • tôi cố gắng để gọi SalesOrderRepositoryV1GetList với tham số id=000000276
  • nhận được lệnh đã <entityId>276</entityId> <incrementId>000000277</incrementId>

Trong giao diện người dùng, bạn sẽ thấy 000000277 cho 275000000276 cho 276

Các vấn đề liên quan