Follow by Email

Tuesday, October 21, 2014

Magento Fedex methord not working for India



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;
}

7 comments:

  1. Hello ,

    This solution not working for me

    ReplyDelete
  2. Could you please help for me? on this issue? I am stuck with this

    ReplyDelete
  3. its not working for me.could you please help me?

    ReplyDelete
  4. This comment has been removed by the author.

    ReplyDelete
  5. this is not working for me kindly send me the actual code for
    magento 1.9.3 at pradeepkmr1701@gmail.com

    ReplyDelete