Form XML for international shipment request As integration guide it is important to follow appropriate sequence for tags e.g.: <FromLastName> must be after <FromFirstName>
1617 $packageParams =
$request->getPackageParams();
1618 $height = $packageParams->getHeight();
1619 $width = $packageParams->getWidth();
1620 $length = $packageParams->getLength();
1621 $girth = $packageParams->getGirth();
1622 $packageWeight =
$request->getPackageWeight();
1624 $packageWeight = $this->_carrierHelper->convertMeasureWeight(
1625 (
float)
$request->getPackageWeight(),
1626 $packageParams->getWeightUnits(),
1632 $this->_carrierHelper->convertMeasureDimension(
1633 (
float)$packageParams->getLength(),
1634 $packageParams->getDimensionUnits(),
1639 $this->_carrierHelper->convertMeasureDimension(
1640 (
float)$packageParams->getWidth(),
1641 $packageParams->getDimensionUnits(),
1646 $this->_carrierHelper->convertMeasureDimension(
1647 (
float)$packageParams->getHeight(),
1648 $packageParams->getDimensionUnits(),
1655 $this->_carrierHelper->convertMeasureDimension(
1656 (
float)$packageParams->getGirth(),
1657 $packageParams->getGirthDimensionUnits(),
1663 $container =
$request->getPackagingType();
1664 switch ($container) {
1666 $container =
'VARIABLE';
1668 case 'FLAT RATE ENVELOPE':
1669 $container =
'FLATRATEENV';
1671 case 'FLAT RATE BOX':
1672 $container =
'FLATRATEBOX';
1675 $container =
'RECTANGULAR';
1677 case 'NONRECTANGULAR':
1678 $container =
'NONRECTANGULAR';
1681 $container =
'VARIABLE';
1684 list($fromZip5, $fromZip4) = $this->
_parseZip(
$request->getShipperAddressPostalCode());
1687 $xmlWrap = $this->_xmlElFactory->create([
'data' =>
'<?xml version = "1.0" encoding = "UTF-8"?><wrap/>']);
1692 $rootNode =
'PriorityMailIntlRequest';
1693 $xml = $xmlWrap->addChild($rootNode);
1697 $rootNode =
'FirstClassMailIntlRequest';
1698 $xml = $xmlWrap->addChild($rootNode);
1701 $rootNode =
'ExpressMailIntlRequest';
1702 $xml = $xmlWrap->addChild($rootNode);
1706 $xml->addAttribute(
'USERID', $this->
getConfigData(
'userid'));
1707 $xml->addAttribute(
'PASSWORD', $this->
getConfigData(
'password'));
1708 $xml->addChild(
'Option');
1709 $xml->addChild(
'Revision', self::DEFAULT_REVISION);
1710 $xml->addChild(
'ImageParameters');
1711 $xml->addChild(
'FromFirstName',
$request->getShipperContactPersonFirstName());
1712 $xml->addChild(
'FromLastName',
$request->getShipperContactPersonLastName());
1713 $xml->addChild(
'FromFirm',
$request->getShipperContactCompanyName());
1714 $xml->addChild(
'FromAddress1',
$request->getShipperAddressStreet2());
1715 $xml->addChild(
'FromAddress2',
$request->getShipperAddressStreet1());
1716 $xml->addChild(
'FromCity',
$request->getShipperAddressCity());
1717 $xml->addChild(
'FromState',
$request->getShipperAddressStateOrProvinceCode());
1718 $xml->addChild(
'FromZip5', $fromZip5);
1719 $xml->addChild(
'FromZip4', $fromZip4);
1720 $xml->addChild(
'FromPhone',
$request->getShipperContactPhoneNumber());
1721 if (
$method !=
'FirstClass') {
1722 if (
$request->getReferenceData()) {
1723 $referenceData =
$request->getReferenceData() .
' P' .
$request->getPackageId();
1725 $referenceData =
$request->getOrderShipment()->getOrder()->getIncrementId() .
1729 $xml->addChild(
'FromCustomsReference',
'Order #' . $referenceData);
1731 $xml->addChild(
'ToFirstName',
$request->getRecipientContactPersonFirstName());
1732 $xml->addChild(
'ToLastName',
$request->getRecipientContactPersonLastName());
1733 $xml->addChild(
'ToFirm',
$request->getRecipientContactCompanyName());
1734 $xml->addChild(
'ToAddress1',
$request->getRecipientAddressStreet1());
1735 $xml->addChild(
'ToAddress2',
$request->getRecipientAddressStreet2());
1736 $xml->addChild(
'ToCity',
$request->getRecipientAddressCity());
1737 $xml->addChild(
'ToProvince',
$request->getRecipientAddressStateOrProvinceCode());
1739 $xml->addChild(
'ToPostalCode',
$request->getRecipientAddressPostalCode());
1740 $xml->addChild(
'ToPOBoxFlag',
'N');
1741 $xml->addChild(
'ToPhone',
$request->getRecipientContactPhoneNumber());
1742 $xml->addChild(
'ToFax');
1743 $xml->addChild(
'ToEmail');
1744 if (
$method !=
'FirstClass') {
1745 $xml->addChild(
'NonDeliveryOption',
'Return');
1747 if (
$method ==
'FirstClass') {
1749 $xml->addChild(
'FirstClassMailType',
'LETTER');
1752 $xml->addChild(
'FirstClassMailType',
'FLAT');
1754 $xml->addChild(
'FirstClassMailType',
'PARCEL');
1758 if (
$method !=
'FirstClass') {
1759 $xml->addChild(
'Container', $container);
1761 $shippingContents = $xml->addChild(
'ShippingContents');
1762 $packageItems =
$request->getPackageItems();
1764 $countriesOfManufacture = [];
1766 foreach ($packageItems as $itemShipment) {
1767 $item = new \Magento\Framework\DataObject();
1768 $item->setData($itemShipment);
1774 )->addFieldToFilter(
1777 )->addAttributeToSelect(
1778 'country_of_manufacture' 1781 $countriesOfManufacture[
$product->getId()] =
$product->getCountryOfManufacture();
1784 $packagePoundsWeight = $packageOuncesWeight = 0;
1786 foreach ($packageItems as $itemShipment) {
1787 $item = new \Magento\Framework\DataObject();
1788 $item->setData($itemShipment);
1790 $itemWeight =
$item->getWeight() *
$item->getQty();
1792 $itemWeight = $this->_carrierHelper->convertMeasureWeight(
1794 $packageParams->getWeightUnits(),
1798 if (!empty($countriesOfManufacture[
$item->getProductId()])) {
1799 $countryOfManufacture = $this->
_getCountryName($countriesOfManufacture[
$item->getProductId()]);
1801 $countryOfManufacture =
'';
1803 $itemDetail = $shippingContents->addChild(
'ItemDetail');
1804 $itemDetail->addChild(
'Description',
$item->getName());
1805 $ceiledQty = ceil(
$item->getQty());
1806 if ($ceiledQty < 1) {
1809 $individualItemWeight = $itemWeight / $ceiledQty;
1810 $itemDetail->addChild(
'Quantity', $ceiledQty);
1811 $itemDetail->addChild(
'Value', sprintf(
'%.2F',
$item->getCustomsValue() *
$item->getQty()));
1812 list($individualPoundsWeight, $individualOuncesWeight) = $this->
_convertPoundOunces($individualItemWeight);
1813 $itemDetail->addChild(
'NetPounds', $individualPoundsWeight);
1814 $itemDetail->addChild(
'NetOunces', sprintf(
'%.2F', $individualOuncesWeight));
1815 $itemDetail->addChild(
'HSTariffNumber', 0);
1816 $itemDetail->addChild(
'CountryOfOrigin', $countryOfManufacture);
1819 $packagePoundsWeight += $itemPoundsWeight;
1820 $packageOuncesWeight += $itemOuncesWeight;
1822 $additionalPackagePoundsWeight = floor($packageOuncesWeight / self::OUNCES_POUND);
1823 $packagePoundsWeight += $additionalPackagePoundsWeight;
1825 if ($packagePoundsWeight + $packageOuncesWeight / self::OUNCES_POUND < $packageWeight) {
1826 list($packagePoundsWeight, $packageOuncesWeight) = $this->
_convertPoundOunces($packageWeight);
1829 $xml->addChild(
'GrossPounds', $packagePoundsWeight);
1830 $xml->addChild(
'GrossOunces', $packageOuncesWeight);
1831 if ($packageParams->getContentType() ==
'OTHER' && $packageParams->getContentTypeOther() !=
null) {
1832 $xml->addChild(
'ContentType', $packageParams->getContentType());
1833 $xml->addChild(
'ContentTypeOther ', $packageParams->getContentTypeOther());
1835 $xml->addChild(
'ContentType', $packageParams->getContentType());
1838 $xml->addChild(
'Agreement',
'y');
1839 $xml->addChild(
'ImageType',
'PDF');
1840 $xml->addChild(
'ImageLayout',
'ALLINONEFILE');
1841 if (
$method ==
'FirstClass') {
1842 $xml->addChild(
'Container', $container);
1845 if ($packageParams->getSize()) {
1846 $xml->addChild(
'Size', $packageParams->getSize());
1849 $xml->addChild(
'Length', $length);
1850 $xml->addChild(
'Width', $width);
1851 $xml->addChild(
'Height', $height);
1853 $xml->addChild(
'Girth', $girth);
1856 $xml = $xmlWrap->{$rootNode}->asXML();
_getCountryName($countryId)
_convertPoundOunces($weightInPounds)
_parseZip($zipString, $returnFull=false)