I have tried to ship with Fedex for India Reagan. And i face some challenges. Then i try to solve it, and i got some solution.
If your origin country is India and you are shipping destination also in India and other country.
For that you have to download RateService_v13.wsdl for fedex
you can get this file from this link
Download it and save it
app\code\core\Mage\Usa\etc\wsdl\FedEx\
Now go to the
app\code\core\Mage\Usa\Model\Shipping\Carrier\Fedex.php
and find
protected function _formRateRequest
Now change function body with
protected function _formRateRequest($purpose)
{
$r = $this->_rawRequest;
$ratesRequest = array(
'WebAuthenticationDetail' => array(
'UserCredential' => array(
'Key' => $r->getKey(),
'Password' => $r->getPassword()
)
),
'ClientDetail' => array(
'AccountNumber' => $r->getAccount(),
'MeterNumber' => $r->getMeterNumber()
),
'Version' => $this->getVersionInfo(),
'RequestedShipment' => array(
'DropoffType' => $r->getDropoffType(),
'ShipTimestamp' => date('c'),
'PackagingType' => $r->getPackaging(),
'Shipper' => array(
'AccountNumber' => $r->getAccount(),
'Address' => array(
'PostalCode' => $r->getOrigPostal(),
'CountryCode' => $r->getOrigCountry()
)
),
'Recipient' => array(
'AccountNumber' => $r->getAccount(),
'Address' => array(
'PostalCode' => $r->getDestPostal(),
'CountryCode' => $r->getDestCountry(),
'Residential' => (bool)$this->getConfigData('residence_delivery')
)
)
)
);
if($r->getDestCountry()=='IN'){
$ratesRequest['RequestedShipment']['ServiceType'] = 'STANDARD_OVERNIGHT';
$ratesRequest['RequestedShipment']['CustomsClearanceDetail'] = array(
'DutiesPayment' => array(
'PaymentType' => 'SENDER',
'Payor' => array(
'ResponsibleParty' => array(
'AccountNumber' => $r->getAccount(),
'Contact' =>array(
'ContactId' => 'sender Contact Id',
'PersonName' => 'Sender Name',
'Title' => 'ABC',
'CompanyName' => 'Sender Company Name',
'PhoneNumber' => '1234567890',
'PhoneExtension' => '91',
'PagerNumber' =>'12',
'FaxNumber' => '1234567890',
'EMailAddress' => 'mahesh@camstech.com'),
'Address' => array('StreetLines' => 'Test Sender Address Line',
'PostalCode' => $r->getOrigPostal(),
'CountryCode' => $r->getOrigCountry())
)
),
),
'DocumentContent' => 'NON_DOCUMENTS',
'CustomsValue' => array('Currency' => 'INR',
'Amount' => '100'),
'CommercialInvoice' => array('Purpose' => 'SOLD')
);
$ratesRequest['RequestedShipment']['RequestedPackageLineItems'] = array(
'SequenceNumber'=>1,
'GroupNumber'=>1,
'GroupPackageCount'=>1,
'Weight' => array(
'Value' => 1.0,
'Units' => 'KG'
),
'Dimensions' => array(
'Length' => 12,
'Width' => 12,
'Height' => 12,
'Units' => 'IN'
)
);
}else{
$ratesRequest['RequestedShipment']['CustomsClearanceDetail'] = array(
'CustomsValue' => array(
'Amount' => $r->getValue(),
'Currency' => $this->getCurrencyCode()
)
);
$ratesRequest['RequestedShipment']['TotalInsuredValue'] = array(
'Amount' => $r->getValue(),
'Currency' => $this->getCurrencyCode()
);
$ratesRequest['RequestedShipment']['ShippingChargesPayment'] = array(
'PaymentType' => 'SENDER',
'Payor' => array(
'AccountNumber' => $r->getAccount(),
'CountryCode' => $r->getOrigCountry()
)
);
$ratesRequest['RequestedShipment']['RateRequestTypes'] = 'LIST';
$ratesRequest['RequestedShipment']['PackageCount'] = '1';
$ratesRequest['RequestedShipment']['PackageDetail'] = 'INDIVIDUAL_PACKAGES';
$ratesRequest['RequestedShipment']['RequestedPackageLineItems'] = array(
'0' => array(
'Weight' => array(
'Value' => (float)$r->getWeight(),
'Units' => $this->getConfigData('unit_of_measure')
),
'GroupPackageCount' => 1,
)
);
if ($purpose == self::RATE_REQUEST_GENERAL) {
$ratesRequest['RequestedShipment']['RequestedPackageLineItems'][0]['InsuredValue'] = array(
'Amount' => $r->getValue(),
'Currency' => $this->getCurrencyCode()
);
} else if ($purpose == self::RATE_REQUEST_SMARTPOST) {
$ratesRequest['RequestedShipment']['ServiceType'] = self::RATE_REQUEST_SMARTPOST;
$ratesRequest['RequestedShipment']['SmartPostDetail'] = array(
'Indicia' => ((float)$r->getWeight() >= 1) ? 'PARCEL_SELECT' : 'PRESORTED_STANDARD',
'HubId' => $this->getConfigData('smartpost_hubid')
);
}
}
return $ratesRequest;
}