在 Magento 2 中获取 checkout_onepage_controller_success_action 的送货地址

Get shipping address on checkout_onepage_controller_success_action in Magento 2

我想获取 checkout_onepage_controller_success_action 活动的所有送货详细信息。

我正在使用以下代码:

$event = $observer->getEvent();
$orderIds = $event->getOrderIds();
$order_id = $orderIds[0];
$shipping = $order_id->getShippingAddress()->getData();
$shippingMethod = $order_id->getShippingMethod();

我收到错误消息:

Error: Call to a member function getShippingAddress() on string.

根据我的说法,在 getShippingAddress() 上传递 $order_id 的方式是错误的。有人可以向我介绍一下吗?我想跨订单 ID 获取完整数据。

您的观察者中的这段代码 class 应该可以工作:

protected $orderFactory;

public function __construct(
    \Magento\Sales\Model\OrderFactory $orderFactory
) {
    $this->orderFactory = $orderFactory;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
    $orderId = $observer->getEvent()->getOrderIds()[0];
    $order = $this->orderFactory->create()->load($orderId);
    $shippingInformation = $order->getShippingAddress();
}