Jump to content
greasemonkey

FedEx - Web Services v9

Recommended Posts

I will add that I have changed to production from reading a earlier qoute and I do get the same error. I downloaded the WSDL from FEDEX and it is at version 14 so I am not sure it is just a matter of updating the wsdl or not

 

 

Stop using development credentials and use the real credentials.

 

The mod wont work with development credentials unless you make edits and changes to the WSDL.

Share this post


Link to post
Share on other sites

So I have been spending days attempting to get this module up and running and for some reason the v9 wsdl kept failing on a unknown address. I have loaded version 14 now to get past the wsdl validation errros for the data returned back from fed ex. Now here is what I get

 

Fatal error: Uncaught SoapFault exception: [sOAP-ENV:Server] Fault in /includes/modules/shipping/fedexwebservices.php:262 Stack trace: #0 /includes/modules/shipping/fedexwebservices.php(262): SoapClient->__call('getRates', Array) #1 /includes/modules/shipping/fedexwebservices.php(262): SoapClient->getRates(Array) #2 /includes/classes/shipping.php(81): fedexwebservices->quote('') #3 /checkout_shipping.php(146): shipping->quote() #4 {main} thrown in /includes/modules/shipping/fedexwebservices.php on line 262

 

Im not sure where to go now

Share this post


Link to post
Share on other sites

FedEx module is working fine however I have a couple of suggestions. Why not in the config area put a link back to this thread and/or the module download AND more importantly put the version number in it so it is easy to know?

 

Also is there a way to display Estimated Delivery Dates?

post-108152-0-80421600-1382596237_thumb.jpg

Share this post


Link to post
Share on other sites

Did you run the SQL file on your database? The error says the database field is missing

What do you mean with "run the SQL file on your database?"

Share this post


Link to post
Share on other sites

@@cpelaez It means there is a SQL file containing SQL commands that you need to run. You would go into a tool like phpmyadmin and choose the SQL option, paste the code into the window and press GO.


Kym

Projects Director @ ozEworks.com

Share this post


Link to post
Share on other sites

FedEx module is working fine however I have a couple of suggestions. Why not in the config area put a link back to this thread and/or the module download AND more importantly put the version number in it so it is easy to know?

 

Also is there a way to display Estimated Delivery Dates?

Feel free to update the Add On with your recommendations. EDD is a good question and you would need to read the FedEx developer documentation to see if their API returns EDD. I am also looking at that right now.


Kym

Projects Director @ ozEworks.com

Share this post


Link to post
Share on other sites

Can this module be used outside US? FedEx Chile says that there is no way to configure the Shipper. Any recommendations?

Share this post


Link to post
Share on other sites

Can this module be used outside US? FedEx Chile says that there is no way to configure the Shipper. Any recommendations?

I mean the shipper country (other than US).

Edited by cpelaez

Share this post


Link to post
Share on other sites

I have installed this module twice and when enabling it I get:

 

Warning: require_once(/home/xxx/xxx.com/catalogincludes/library/fedex-common.php5) [function.require-once]: failed to open stream: No such file or directory in /home/xxx/xxx.com/catalog/includes/modules/shipping/fedexwebservices.php on line 67

 

Fatal error: require_once() [function.require]: Failed opening required '/home/xxx/xxx.com/catalogincludes/library/fedex-common.php5' (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear') in /home/xxx/xxx.com/catalog/includes/modules/shipping/fedexwebservices.php on line67

 

Any help is appreciated. Cheers

Share this post


Link to post
Share on other sites

for this you need to upload the file your server. .../library/fedex-common.php5

 

(/home/xxx/xxx.com/catalog / includes/library/fedex-common.php5

 

 

For this it appears you do not have SOAP installed. Run the soap_test.php, per the instructions.

 

'/home/xxx/xxx.com/catalog / includes/library/fedex-common.php5' (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')


-Dave

Share this post


Link to post
Share on other sites

Hi, can anyone help me debug. I'm going round in circles trying to avoid getting the error message: Please enter a ZIP Code to obtain your shipping quote. Or possibly: If no rate is shown, the heavy weight of the item(s) in your Shopping Cart suggests a Request for Freight Quote, rather than FedEx Ground service, is recommended. but nothing I do helps. The weight of the item to purchase is 2kg, the customers zip code is in, the address of the sender matches the FedEx account address exactly, the meter, key, password and account number are all correct, I've gone over and over the installation a million times and it's all very straightforward and I'm following it to the letter, but still nothing. I'm getting desperate. I've contacted FedEx and they've asked to see my XML request. I tried to print to screen the request and individual array elements in the fedexwebservices.php file that should result on the checkout_shipping.php page but nothing displays although it says that the array elements count is 6. Can anyone at all help with this one or at least help me with how to view the XML request that is going to FedEx so I can check it?

Share this post


Link to post
Share on other sites

In case anyone has had the same problem as the above... I managed to print the XML to my page using echo printRequestResponse($client); on line 266 of the fedexwebservices.php file. I then sent that to FedEx and this was their response:

 

this is a UK domestic shipment that you are rating. Only tracking and POD (proof of delivery) are supported in webservices for intra UK shipments. The account number also needs to be setup for UK domestic service.

 

So if you're based anywhere outside the US and you're getting this problem then this might be your issue.

Edited by shodnett

Share this post


Link to post
Share on other sites

ok, I tried it now with a US address and still no joy so the above is clearly not the only reason. FedEx analysed the XML and said that no service type was supplied. The XML is what OSC generated from this "FedEx - Web Services v9" module installed so I'm not sure why. I'm using OSC version "oscommerce-2.3.3.4". I don't have the UPS shipping module installed if that's what you meant? Any ideas?

Share this post


Link to post
Share on other sites

@@shodnett

 

This may sound odd,

Start by adding the UPS XML contribution's SQL to your database. It will cause no harm and will add a few entries that are referenced within the fedex script.

 

Run this

ALTER TABLE products
ADD products_length DECIMAL(6,2) DEFAULT '12' NOT NULL,
ADD products_width DECIMAL(6,2) DEFAULT '12' NOT NULL,
ADD products_height DECIMAL(6,2) DEFAULT '12' NOT NULL,
ADD products_ready_to_ship INT(1) DEFAULT '0' NOT NULL;
DROP TABLE IF EXISTS packaging;
CREATE TABLE packaging (
package_id int NOT NULL auto_increment,
package_name varchar(64) NOT NULL,
package_description varchar(255) NOT NULL,
package_length DECIMAL(6,2) default '5' NOT NULL,
package_width DECIMAL(6,2) default '5' NOT NULL,
package_height DECIMAL(6,2) default '5' NOT NULL,
package_empty_weight DECIMAL(6,2) DEFAULT '0' NOT NULL,
package_max_weight DECIMAL(6,2) DEFAULT '50' NOT NULL,
package_cost int(5) NOT NULL,
PRIMARY KEY (package_id)
);

 

Also, look for these lines in the fedex file

 

		 if($ShipmentRateDetail->ShipmentRateDetail->RateType=='PAYOR_LIST_PACKAGE')
//	 if($ShipmentRateDetail->ShipmentRateDetail->RateType==('PAYOR_LIST_PACKAGE' || 'PAYOR_LIST_SHIPMENT')) // try this if having international quoting errors

and switch around like

//			 if($ShipmentRateDetail->ShipmentRateDetail->RateType=='PAYOR_LIST_PACKAGE')
 if($ShipmentRateDetail->ShipmentRateDetail->RateType==('PAYOR_LIST_PACKAGE' || 'PAYOR_LIST_SHIPMENT')) // try this if having international quoting errors

 

See if either helps and post back.

Also make sure FedEx Ground is enabled, and then any others you wan't to show. Experiment with Enable Ready to Ship off and on in admin too.

 

I just set up a brand new unmodified 2.3.3.4 shop last week and it's working perfectly for me.


-Dave

Share this post


Link to post
Share on other sites

I just realized/noticed...

 

2.3.3.4 is 100% UTF8

it may be wise to remove all instances of

utf8_encode

 

from the fedexwebservices file. I just did the same with no negative consequence so far. It might help!

 

Thanks to john w for pointing out that using utf8_encode on a site already in utf8 can cause corruption.


-Dave

Share this post


Link to post
Share on other sites

Thanks to both of you for your suggestions. I've tried both sets of changes but sadly to no avail. It's interesting that no ServiceType is sent in the default XML structure that is set up in the module and when I spoke to FedEx they asked me to include that and try again which I did but which instantly returned an error response for FEDEX_GROUND or any Service Types I used. I didn't think I needed a ServiceType as I'm asking for all services available to be returned but once one is added it no longer returns a warning but an error.

Share this post


Link to post
Share on other sites

Thought this might help too. This is the XML code which is sent to FedEx prepared by the fedexwebservices.php file. Just for the purposes of posting it on this forum though I've removed the sensitive data and put descriptions of the text in those fields. Can anyone see anything obvious that's missing or wrong? I know the ServiceType field is missing but the issue on that is as explained above: <?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://fedex.com/ws/rate/v9">

<SOAP-ENV:Body>

<ns1:RateRequest>

<ns1:WebAuthenticationDetail>

<ns1:UserCredential>

<ns1:Key>Production Key supplied by Fedex</ns1:Key>

<ns1:Password>The password supplied in the email you receive from Fedex when you request the production meter number</ns1:Password>

</ns1:UserCredential>

</ns1:WebAuthenticationDetail>

<ns1:ClientDetail>

<ns1:AccountNumber>My clients Fedex account number (numbers only)</ns1:AccountNumber>

<ns1:MeterNumber>The production Meter number supplied by Fedex (numbers only)</ns1:MeterNumber>

</ns1:ClientDetail>

<ns1:TransactionDetail>

<ns1:CustomerTransactionId> *** Rate Request v9 using PHP ***</ns1:CustomerTransactionId>

</ns1:TransactionDetail>

<ns1:Version>

<ns1:ServiceId>crs</ns1:ServiceId>

<ns1:Major>9</ns1:Major>

<ns1:Intermediate>0</ns1:Intermediate>

<ns1:Minor>0</ns1:Minor>

</ns1:Version>

<ns1:ReturnTransitAndCommit>true</ns1:ReturnTransitAndCommit>

<ns1:RequestedShipment>

<ns1:ShipTimestamp>2014-03-15T18:23:33+00:00</ns1:ShipTimestamp>

<ns1:DropoffType>REGULAR_PICKUP</ns1:DropoffType>

<ns1:PackagingType>YOUR_PACKAGING</ns1:PackagingType>

<ns1:TotalInsuredValue>

<ns1:Currency>GBP</ns1:Currency>

</ns1:TotalInsuredValue>

<ns1:Shipper>

<ns1:Address>

<ns1:StreetLines>My clients first line of his address exactly as it appears in his Fedex account</ns1:StreetLines>

<ns1:StreetLines>

</ns1:StreetLines>

<ns1:City>My Clients city name exactly as it appears in his Fedex account</ns1:City>

<ns1:StateOrProvinceCode>

</ns1:StateOrProvinceCode>

<ns1:PostalCode>My Clients postcode exactly as it appears in his Fedex account</ns1:PostalCode>

<ns1:CountryCode>GB</ns1:CountryCode>

</ns1:Address>

</ns1:Shipper>

<ns1:Recipient>

<ns1:Address>

<ns1:StreetLines>Send to address line 1</ns1:StreetLines>

<ns1:StreetLines>Send to address line 2</ns1:StreetLines>

<ns1:City>City</ns1:City>

<ns1:PostalCode>US Postcode</ns1:PostalCode>

<ns1:CountryCode>US</ns1:CountryCode>

<ns1:Residential>true</ns1:Residential>

</ns1:Address>

</ns1:Recipient>

<ns1:ShippingChargesPayment>

<ns1:PaymentType>SENDER</ns1:PaymentType>

<ns1:Payor>

<ns1:AccountNumber>My Clients account number at Fedex (just numbers)</ns1:AccountNumber>

<ns1:CountryCode>GB</ns1:CountryCode>

</ns1:Payor>

</ns1:ShippingChargesPayment>

<ns1:RateRequestTypes>ACCOUNT</ns1:RateRequestTypes>

<ns1:PackageCount>1</ns1:PackageCount>

<ns1:PackageDetail>INDIVIDUAL_PACKAGES</ns1:PackageDetail>

<ns1:RequestedPackageLineItems>

<ns1:Weight>

<ns1:Units>KG</ns1:Units>

<ns1:Value>2</ns1:Value>

</ns1:Weight>

</ns1:RequestedPackageLineItems>

</ns1:RequestedShipment>

</ns1:RateRequest>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Share this post


Link to post
Share on other sites

could be a non-US thing. Your missing a state, your in KG rather than lbs... those might be the problem. The module was never tested for non usa use. The XML I send has LIST, not ACCOUNT, it pulls both rate sets but displays only whats chosen in admin,. Also note there is no destination post code listed... several issues in there.

 

My suggestion, If you can set up for USA to USA service - get it working.... then tweak to GB...

 

The response you receive will quite often contain error messages. Anything on the reply?


-Dave

Share this post


Link to post
Share on other sites

ok, I've found the issue, partly as a result of what you said and partly from a response from FedEx. So, thank you so much for your support. The reason is exactly as you said that the 'StateOrProvinceCode' => '', line of code which is in there for the shippers address is not there for the recipient's address in the fedexwebservices.php file. I'm guessing because it's mainly set up for use within the US then the postal code is sufficient without needing the state code too? I added that line in for the recipients address and populated it with the state code then I removed that state code from the postal code field (probably my misunderstanding in thinking that US postcodes are always prefixed with the state code but actually that's not true is it? The postcode for you guys is just numbers, is that right?). Anyway, with those tweaks it kicked straight in to life! Thank you so much for your help.

Share this post


Link to post
Share on other sites

One other quick note for anyone else not based in the US, make sure you check that your SHIPPING_ORIGIN_COUNTRY entry in the configuration table in the database is set to the correct country code as mine was set to US which I think is the default and that was having an impact too before I realised. Hope this helps anyone else in the same situation :-)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×