您如何在 Magento SOAP API 中找到应用于订单的发货?

How do you find the shipments applied to an order in the Magento SOAP API?

这是销售订单的 API 文档: http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.info.html

这是 API 货件的文件: http://www.magentocommerce.com/api/soap/sales/salesOrderShipment/salesOrderShipment.html

我这辈子都想不出如何在他们之间建立关系。 order/info 端点似乎没有 return 任何类型的 shipment_id 并且 order/shipment 端点似乎不能被 order_id 过滤。

这可以通过对订单的 order_id 值使用过滤器来实现。

请注意,order_id 与订单的 increment_id 不同,后者是通常面向客户的参考编号。因此需要一个额外的步骤将订单的参考转换为 order_id.

我不能给你工作 PHP 代码,我在 Java 工作,但我可以描述方法:

  1. 使用 sales_order.info API 调用
  2. 获取订单号 (increment_id) 的订单数据
  3. 从订单数据中获取order_id
  4. sales_order_shipment.list
  5. 中使用 order_id 作为过滤器
  6. 这将为您提供一份货件清单,每个货件都有一个 increment_id。此 ID 是货件的参考。
  7. 使用 sales_order_shipment.info 中的货件 increment_id 获取更多详细信息。

这是完成@Kevin Sadler 回答的PHP代码:

/** @var array $filters */
$filters = array(
    array('order_id' => array('eq' => $orderId)) // Entity ID, not Increment ID
);

/** @var array $orderShipments */
$orderShipments = $client->call($session, 'sales_order_shipment.list', $filters);