Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

GocaninTs's avatar

FedEx api integration

Hello , i need to integrate fedex api into my project . I found JeremyDunn package for this , but on every request i receive message '1000 authentication failed' . I am using FedEx testing credentials keys.

Can someone help me . Thanks in advance.

0 likes
9 replies
realrandyallen's avatar

Can you post all the relevant code so we can try to help you out?

1 like
GocaninTs's avatar

@REALRANDYALLEN - <?php

namespace App\Http\Controllers;

use FedEx\RateService\Request;

use FedEx\RateService\ComplexType;

use FedEx\RateService\SimpleType;

require_once ('credentials.php');

class TestController extends Controller

{

public function test()

{

    $rateRequest = new ComplexType\RateRequest();

    $rateRequest->WebAuthenticationDetail->UserCredential->Key = FEDEX_KEY;
    $rateRequest->WebAuthenticationDetail->UserCredential->Password = FEDEX_PASSWORD;
    $rateRequest->ClientDetail->AccountNumber = FEDEX_ACCOUNT_NUMBER;
    $rateRequest->ClientDetail->MeterNumber = FEDEX_METER_NUMBER;

    $rateRequest->TransactionDetail->CustomerTransactionId = 'testing rate service request';

    $rateRequest->Version->ServiceId = 'crs';
    $rateRequest->Version->Major = 24;
    $rateRequest->Version->Minor = 0;
    $rateRequest->Version->Intermediate = 0;

    $rateRequest->ReturnTransitAndCommit = true;


    $rateRequest->RequestedShipment->PreferredCurrency = 'USD';
    $rateRequest->RequestedShipment->Shipper->Address->StreetLines = ['10 Fed Ex Pkwy'];
    $rateRequest->RequestedShipment->Shipper->Address->City = 'Memphis';
    $rateRequest->RequestedShipment->Shipper->Address->StateOrProvinceCode = 'TN';
    $rateRequest->RequestedShipment->Shipper->Address->PostalCode = 38115;
    $rateRequest->RequestedShipment->Shipper->Address->CountryCode = 'US';

    $rateRequest->RequestedShipment->Recipient->Address->StreetLines = ['13450 Farmcrest Ct'];
    $rateRequest->RequestedShipment->Recipient->Address->City = 'Herndon';
    $rateRequest->RequestedShipment->Recipient->Address->StateOrProvinceCode = 'VA';
    $rateRequest->RequestedShipment->Recipient->Address->PostalCode = 20171;
    $rateRequest->RequestedShipment->Recipient->Address->CountryCode = 'US';

    $rateRequest->RequestedShipment->ShippingChargesPayment->PaymentType = SimpleType\PaymentType::_SENDER;

    $rateRequest->RequestedShipment->RateRequestTypes = [SimpleType\RateRequestType::_PREFERRED, SimpleType\RateRequestType::_LIST];

    $rateRequest->RequestedShipment->PackageCount = 2;

    $rateRequest->RequestedShipment->RequestedPackageLineItems = [new ComplexType\RequestedPackageLineItem(), new ComplexType\RequestedPackageLineItem()];

    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->Weight->Value = 2;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->Weight->Units = SimpleType\WeightUnits::_LB;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->Dimensions->Length = 10;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->Dimensions->Width = 10;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->Dimensions->Height = 3;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->Dimensions->Units = SimpleType\LinearUnits::_IN;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[0]->GroupPackageCount = 1;

    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->Weight->Value = 5;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->Weight->Units = SimpleType\WeightUnits::_LB;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->Dimensions->Length = 20;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->Dimensions->Width = 20;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->Dimensions->Height = 10;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->Dimensions->Units = SimpleType\LinearUnits::_IN;
    $rateRequest->RequestedShipment->RequestedPackageLineItems[1]->GroupPackageCount = 1;

    $rateServiceRequest = new Request();
    $rateServiceRequest->getSoapClient()->__setLocation(Request::TESTING_URL); 

    $rateReply = $rateServiceRequest->getGetRatesReply($rateRequest); 

    dd($rateReply);

    if (!empty($rateReply->RateReplyDetails)) {
        foreach ($rateReply->RateReplyDetails as $rateReplyDetail) {
            var_dump($rateReplyDetail->ServiceType);
            if (!empty($rateReplyDetail->RatedShipmentDetails)) {
                foreach ($rateReplyDetail->RatedShipmentDetails as $ratedShipmentDetail) {
                    var_dump($ratedShipmentDetail->ShipmentRateDetail->RateType . ": " . $ratedShipmentDetail->ShipmentRateDetail->TotalNetCharge->Amount);
                }
            }
            echo "<hr />";
        }
    }

    var_dump($rateReply);


}

}

realrandyallen's avatar

It may just be that your credentials are not being set properly when referencing them from credentials.php....as a test try hard coding them in your test controller just to see if you get a different response:

// hard code all these instead of using the constants as a test

    $rateRequest->WebAuthenticationDetail->UserCredential->Key = FEDEX_KEY;
    $rateRequest->WebAuthenticationDetail->UserCredential->Password = FEDEX_PASSWORD;
    $rateRequest->ClientDetail->AccountNumber = FEDEX_ACCOUNT_NUMBER;
    $rateRequest->ClientDetail->MeterNumber = FEDEX_METER_NUMBER;
GocaninTs's avatar

@REALRANDYALLEN - Thanks for advice , i tried this solution but result is the same .

ERROR prof 1000 Authentication Failed.

Snapey's avatar

what does credentials.php contain?

GocaninTs's avatar

@SNAPEY - In this file i put informations about fedex keys. FEDEX_KEY , FEDEX_PASSWORD , FEDEX_ACCOUNT_NUMBER , FEDEX_METER_NUMBER.

Snapey's avatar

Yes thats great, but how ?

You probably should not have these in your code, better to store them in a database table or other file that can be easily changed when the client gets new credentials or wants a second deployment

GocaninTs's avatar

@SNAPEY - I just moved Fedex keys information into the .env file. If you have any suggestions if you have experience with the integration of the FedEx, I really can not find what I'm doing wrong.

Thank you .

Please or to participate in this conversation.