Я потратил много времени на то, чтобы возиться с этим сам ... вместо того, чтобы использовать модель sales / order_shipment_track для добавления отслеживания, вы можете использовать тот же Api, который вы использовали для создания отгрузки, а затем выполнить это с помощью sendInfo () Api.способ отправить письмо с информацией об отслеживании.(переименовано в $ ship из примера OP в $ shipmentApi)
//add tracking info ($shippingCarrier is case sensitive)
$shipmentApi->addTrack($shipmentIncrementId, $shippingCarrier, $shippingTitle, $trackingNumber);
//send shipment email with tracking info
$shipmentApi->sendInfo($shipmentIncrementId);
Полный пример:
if($order->canShip()){
$shipmentApi = Mage::getModel('sales/order_shipment_api');
//pass false for email, unless you want Magento to send the shipment email without any tracking info
//could also be written as $shipmentIncrementId = $shipmentApi->create($order->getIncrementId());
$shipmentIncrementId = $shipmentApi->create($order->getIncrementId(), array(), '' , false, 0);
//add tracking info ($shippingCarrier is case sensitive)
$shipmentApi->addTrack($shipmentIncrementId, $shippingCarrier, $shippingTitle, $trackingNumber);
//send shipment email with tracking info
$shipmentApi->sendInfo($shipmentIncrementId);
}
См. app\code\core\Mage\Sales\Model\Order\Shipment\Api.php
для всех методов.