/** * Confirm crating of shipment * * @param Mage_Sales_Model_Order_Shipment $shipment * @return Mage_AmazonPayments_Model_Api_Cba */ public function confirmShipment($shipment) { $items = array(); foreach ($shipment->getAllItems() as $item) { /* @var $item Mage_Sales_Model_Order_Shipment_Item */ if ($item->getOrderItem()->getParentItemId()) { continue; } $items[] = array('id' => $item->getOrderItem()->getExtOrderItemId(), 'qty' => $item->getQty()); } $carrierName = ''; $shippingMethod = ''; $trackNumber = ''; /** * Magento track numbers is not connected with items. * Get only first track number */ foreach ($shipment->getAllTracks() as $track) { $carrierName = $track->getTitle(); $trackNumber = $track->getNumber(); break; } if (preg_match("/\\((.+)\\)/", $shipment->getOrder()->getShippingDescription(), $_result)) { $shippingMethod = $_result[1]; } $this->getDocumentApi()->confirmShipment($shipment->getOrder()->getExtOrderId(), $carrierName, $shippingMethod, $items, $trackNumber); $shipment->addComment(Mage::helper('amazonpayments')->__('Shipment was created with Checkout by Amazon.')); return $this; }
/** * Send order shipment to Rakuten Checkout * * @param Mage_Sales_Model_Order_Shipment $shipment * @return bool * @throws Exception|Mage_Core_Exception */ public function sendShipment($shipment) { // Create Rakuten Checkout Send Order Shipment XML request $xml = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' ?><tradoria_order_shipment />"); $merchantAuth = $xml->addChild('merchant_authentication'); $merchantAuth->addChild('project_id', $this->_projectId); $merchantAuth->addChild('api_key', $this->_apiKey); /** @var $order Mage_Sales_Model_Order */ $order = $shipment->getOrder(); $xml->addChild('order_no', $order->getExtOrderId()); $carrierTrackingId = $xml->addChild('carrier_tracking_id'); $carrierTrackingUrl = $xml->addChild('carrier_tracking_url'); $carrierTrackingCode = $xml->addChild('carrier_tracking_code'); if ($tracks = $shipment->getAllTracks()) { /** @var $track Mage_Sales_Model_Order_Shipment_Track */ $track = array_shift($tracks); // Multiple tracking codes for one shipment are supported by Magento $this->_addCDATA($carrierTrackingId, $track->getCarrierCode()); $this->_addCDATA($carrierTrackingCode, $track->getNumber()); } $request = $xml->asXML(); $response = $this->sendRequest($request, 'shipment'); try { $response = new SimpleXMLElement($response); if ($response->success != 'true') { throw new Mage_Core_Exception((string) $response->message, (int) $response->code); } else { if ((string) $response->invoice_number != '') { $comment = Mage::helper('rakuten')->__('Rakuten Invoice No: %s', '<strong>' . (string) $response->invoice_number . '</strong><br />'); $shipment->addComment($comment); $order->addStatusHistoryComment($comment); } } } catch (Mage_Core_Exception $e) { throw $e; } catch (Exception $e) { Mage::logException($e); throw $e; } return true; }