Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

FedEx - Web Services v9


greasemonkey

Recommended Posts

New version posted v9.4.1

http://addons.oscommerce.com/info/7977

 

v9.4.1 by Roaddoctor

Changes since v9.3 4/28/2012

 

- Added "Ship-Separate" functionality (for previous FedEx Real Time Quotes users), Mod will also recognize the "product-ready-to-ship" field (for previous UPS XML users).

- Added separate surcharges for ground, express, international ground, international express.

- Further improve Ground surcharge control by separating Ground Service surcharges from Ground Home Delivery surcharges

- Improved the rate presentation with item count, weight, and transit days for ground services.

- Several more minor enhancements and fixes

 

Please keep support questions here in the forum. Please post any issues or problems, it still may need a bit more tweaking...

 

-Dave

-Dave

Link to comment
Share on other sites

just a minor correction of some explanation text in admin side -

disregard the incorrect "Enable ready-to-ship" explantion text for now, or to correct now, prior to installing the module in admin:

 

in /catalog/includes/modules/fedexwebservices.php, REPLACE Line 453 with:

 

   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Ready to Ship', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_READY_TO_SHIP', 'false', 'Enable products_ship_sep or products_ready_to_ship field (required to identify products which ship separately', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");   

-Dave

Link to comment
Share on other sites

@@Roaddoctor Great News! I have some questions and information as if regards to my installation.

  1. In my installation there are two (2) separate fedexwebservices.php files; on located in the admin .../csadmin/includes/modules/shipping/fedexwebservices.php and the other in the frontend .../includes/modules/shipping/fedexwebservices.php. Should they both be replaced with your new 9.4.1?
  2. In step 4.3 - the only line that comes close to
    		  $sql_data_array = array('products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),	
    

    is

    	  $products_quantity = tep_db_prepare_input($_POST['products_quantity']);
    	  if ($products_quantity != $products_old['products_quantity']) $sql_data_array['products_quantity'] = $products_quantity;
    

    . Also there are 39 instances of "products_quantity" in categories.php file.

Any advice would be appreciated. Thanks.

WhatsTheBigIdea.com, Inc.

Bright Ideas for the Web, Print and beyond!

 

100 Dock Street

Saugerties, NY 12477

(845)247-0909

Link to comment
Share on other sites

  $sql_data_array = array(); //declare the array and add to it anything changed
  $products_date_available = tep_db_prepare_input($_POST['products_date_available']);
  if ($products_date_available != $products_old['products_date_available']) $sql_data_array['products_date_available'] = $products_date_available;
//    $products_quantity = tep_db_prepare_input($_POST['products_quantity']);
//	 if ($products_quantity != $products_old['products_quantity']) $sql_data_array['products_quantity'] = $products_quantity;
  $sql_data_array = array('products_ship_sep' =>
							 (isset($HTTP_POST_VARS['products_ship_sep'])? '1':'0'),
						    'products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']));
    if ($products_quantity != $products_old['products_quantity']) $sql_data_array['products_quantity'] = $products_quantity;
  $products_model = tep_db_prepare_input($_POST['products_model']);
  if ($products_model != $products_old['products_model']) {
  $sql_data_array['products_model'] = $products_model;
  }else{
  if (strlen($products_model) != strlen($products_old['products_model'])) {
  $sql_data_array['products_model'] = $products_model;
 }
  }

??

WhatsTheBigIdea.com, Inc.

Bright Ideas for the Web, Print and beyond!

 

100 Dock Street

Saugerties, NY 12477

(845)247-0909

Link to comment
Share on other sites

@@Roaddoctor Great News! I have some questions and information as if regards to my installation.

 

  1. In my installation there are two (2) separate fedexwebservices.php files; on located in the admin .../csadmin/includes/modules/shipping/fedexwebservices.php and the other in the frontend .../includes/modules/shipping/fedexwebservices.php. Should they both be replaced with your new 9.4.1?
  2. In step 4.3 - the only line that comes close to
    						  $sql_data_array = array('products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']),	
    

    is

    					  $products_quantity = tep_db_prepare_input($_POST['products_quantity']);
    					  if ($products_quantity != $products_old['products_quantity']) $sql_data_array['products_quantity'] = $products_quantity;
    

    . Also there are 39 instances of "products_quantity" in categories.php file.

Any advice would be appreciated. Thanks.

 

Dave - you mentioned that your tyring to adapt this module to CRELoaded 6.0 ... I wouldnt know where to begin or what to advise. This module is writtten for osc 2.2rc2a and should work just fine with osc 2.3+ as well.

 

Step 4.3 is just the code for adding the product-ship-seperate field to your products page. You will need to refer to 2.2Rc2a files and then compare to yours and fit it in nicely.

Edited by Roaddoctor

-Dave

Link to comment
Share on other sites

  $sql_data_array = array(); //declare the array and add to it anything changed
  $products_date_available = tep_db_prepare_input($_POST['products_date_available']);
  if ($products_date_available != $products_old['products_date_available']) $sql_data_array['products_date_available'] = $products_date_available;
//	$products_quantity = tep_db_prepare_input($_POST['products_quantity']);
//	 if ($products_quantity != $products_old['products_quantity']) $sql_data_array['products_quantity'] = $products_quantity;
  $sql_data_array = array('products_ship_sep' =>
							 (isset($HTTP_POST_VARS['products_ship_sep'])? '1':'0'),
							'products_quantity' => tep_db_prepare_input($HTTP_POST_VARS['products_quantity']));
	if ($products_quantity != $products_old['products_quantity']) $sql_data_array['products_quantity'] = $products_quantity;
  $products_model = tep_db_prepare_input($_POST['products_model']);
  if ($products_model != $products_old['products_model']) {
  $sql_data_array['products_model'] = $products_model;
  }else{
  if (strlen($products_model) != strlen($products_old['products_model'])) {
  $sql_data_array['products_model'] = $products_model;
 }
  }

??

 

what is the question?

-Dave

Link to comment
Share on other sites

This is the error I am still getting according to error_log.

 

[30-Apr-2012 06:17:33 UTC] PHP Deprecated: Function ereg() is deprecated in /home/badbags/public_html/store/includes/classes/shopping_cart.php on line 269

[30-Apr-2012 06:17:33 UTC] PHP Fatal error: Call to a member function MoveNext() on a non-object in /home/badbags/public_html/store/includes/modules/shipping/fedexwebservices.php on line 51

 

I am running v2.2 rc2

 

Does it need to be rc2a ?

Link to comment
Share on other sites

For security reasons, by all means you need to update to at least 2.2rc2a, 2.3 would be much better. The first error is that eregi is deprecated. really just a notice, but you need to address those.... theres tons of help on the forums on the subjuct.

http://www.oscommerce.com/community/contributions,7394

 

Get to at least 2.2 rc2a + all security fixes. Then try again

-Dave

Link to comment
Share on other sites

Is anyone using the new module with Google Checkout and using Merchant Calculated shipping?

 

If so, could you please post your shipping_methods.php file that is working for you?

 

Thanks!

-Dave

Link to comment
Share on other sites

Two small fixes to catalog/includes/modules/shipping/fedexwebservices.php

 

A missed text fix

 

FIND

  $show_box_weight = " (Total items: " . $shipping_num_boxes . ' pcs. Total weight: '.number_format($shipping_weight * $shipping_num_boxes,2).' '.strtolower(MODULE_SHIPPING_FEDEX1_WEIGHT).')';

 

REPLACE WITH

  $show_box_weight = " (Total items: " . $shipping_num_boxes . ' pcs. Total weight: '.number_format($shipping_weight * $shipping_num_boxes,2).' '.strtolower(MODULE_SHIPPING_FEDEX_WEB_SERVICES_WEIGHT).'s.)';

 

 

For fatal divide by 0 error with google checkout:

 

FIND

  $shipping_num_boxes = $new_shipping_num_boxes;

 

REPLACE WITH

If (!$shipping_num_boxes || $shipping_num_boxes == 0) {
 $shipping_num_boxes = 1;
}

-Dave

Link to comment
Share on other sites

u seamed to know a lot about SOAP! Can u help with suggestion on that? I downloaded FedEx module and when I ran a test it failed. The reason is that my host iPAge does not have SOAP. DO u know any other FedEx modules that would work just with PHP? They do have PHP. I really don;t want to change hosts but I need FedEx to work. tks! Alex

Link to comment
Share on other sites

Oooops - this should be:

 

For fatal divide by 0 error with google checkout:

 

FIND

  $shipping_num_boxes = $new_shipping_num_boxes;

 

ADD AFTER

If (!$shipping_num_boxes || $shipping_num_boxes == 0) {
 $shipping_num_boxes = 1;
}

-Dave

Link to comment
Share on other sites

u seamed to know a lot about SOAP! Can u help with suggestion on that? I downloaded FedEx module and when I ran a test it failed. The reason is that my host iPAge does not have SOAP. DO u know any other FedEx modules that would work just with PHP? They do have PHP. I really don;t want to change hosts but I need FedEx to work. tks! Alex

 

Actually, I don't know much about SOAP. All I know is you have to have it for any version of Fdx Web Services to work.

 

.... new host time or ask them to add it.... should not be a big deal to a good host

-Dave

Link to comment
Share on other sites

I was hoping the Fedex would of built in the "Extended Delivery Area Surcharge" into their web service, but I didn't see it anywhere in the development documentation at Fedex and with my testing, It seems it was left out. In the older modules, I had to create a table and load up all the zip codes with the extended delivery area surcharges.

 

From the documentation here.

 

 

http://images.fedex.com/us/services/pdf/DAS_Contiguous_US_2012.txt

http://images.fedex.com/us/services/pdf/DAS_Contiguous_US_Extended_2012.txt

 

Then modify the web service to tack on the extra $$ when the zip code matches. Every Time, Fedex increases their surcharges or changes the zip codes, I would have to reload the tables with the new information. So I'm not losing money on shipping.

 

What complicates matters even more is that Fedex bases the Fuel Surcharge on the ((Price + Extended Delivery Surcharge) * .08 )

 

So when you pull back the rates for the web service, you'll need to add on the Extended delivery surcharge + (Extended delivery surcharge * .08)

 

I never heard much chatter about this over the years, is everyone doing the same thing I've been doing? Or is everyone just taking the hit on every package that gets sent out to those zip codes. Or am I missing something?

Unlock The Inbox

www.unlocktheinbox.com

Link to comment
Share on other sites

Is anyone using the new module with Google Checkout and using Merchant Calculated shipping?

 

If so, could you please post your shipping_methods.php file that is working for you?

 

Thanks!

 

Anyone using this module succesfully with Google Checkout? PLEASE contact me. Thanks!

-Dave

Link to comment
Share on other sites

Dis-regard my last post, It's pulling back the extended surcharges today, last night it wasn't. :unsure:

 

I'm not so sure it is. I think it would require the more complex full address verification mode of rating to work properly. Not every address in a given zip code is nescessarily RES DAS or EXT DAS. Reviewing some of my recent invoice charges vs quoted, I would have to say this is working inconsistently at best.

 

Perhaps if you could post to the uploads, all the details and specifics of your described workaround as a short term fix, it could help others

-Dave

Link to comment
Share on other sites

I just switched from the old fedex module to this new web services module and I wanted to put in a few notes that might help some others.

 

1) If you were using the previous FedEx module that supported the "products ship separately", and you are using v9.4.1 of this Web Services module, that also supports the "products ship separately", then you do not have to modify the 2 categories.php files in the admin section, and you do not have to modify your database. All of the changes made for both of these modules are the same.

 

2) If you are running your own Apache server and you get a fatal error on the shipping pages, make sure that you have enabled php_soap.dll module in your PHP.INI file, and also make sure you have enabled the php_openssl.dll module. Also make sure that you have ssleay32.dll and libeay32.dll in your windows\system32 directory. I didn't have the OpenSSL module enabled and the web services module wasn't able to connect to the FedEx HTTPS server because of it. See the following link for more information.

 

http://webponce.com/rants/2008/04/https-support-for-soap-in-php5-under-windows/

Link to comment
Share on other sites

I must say, after waiting until the 11th hour, I DL'd this contribution and copied the files to my server. After getting my Key/PW from Fedex, adding my acct number - BINGO. It works.

 

Cudo's to ROADOCTOR for his efforts and everyone else who contributed before.

 

I now have realtime FedEx Quotes running, but now the bigger question:

 

Is there any way to get this contrib to work with the FedEx Automated Labels contrib?

John Skurka

Link to comment
Share on other sites

This mod works. If you are testing locally using something like xampp, you have to ensure your openssl is all set. This will get rid of the wrapper https error people have. If you get transaction error, just edit the wsdl/RateService_v9.wsdl. At bottom

 

replace : <s1:address location="https://gateway.fedex.com/web-services/"/>

 

with: <s1:address location="https://wsbeta.fedex.com:443/web-services/"/>

 

Gateway is the production server so duh it works with a production key. If you have a test key (dev test), you need to post the response to the sandbox. Hope this helps someone. The mod does work just poor documentation.

Link to comment
Share on other sites

I suspect there may be a rounding issue somewhere in this contribution.

 

I had added a 5% handling fee to all shipments, and when I tried to process an order for a customer, my gateway came back with an error. I processed the order by hand, and when I added up product subtotal, shipping, and sales tax manually, the grand total came back $0.01 lower than what OSC reported as the total. I went back and removed the 5%, and everything added up.

 

Can someone please check? I would - but I have no idea where to even start.

Edited by DriWashSolutions

John Skurka

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...