Jump to content

Shipping via FEDEX


Hollmers

Recommended Posts

Have tried several of the shipping methods, i.e. USPS, Flat Shipping, and now FEDEX.  USPS AND THE FLAT SHIPPING DO NOT SEEM TO WORK.

Same problem with Fedex.  Get the following error message

The following errors were detected:
Unfortunately there are no suitable shipping methods available for your order. This may be because the total weight of your order is too high or we cannot ship to your country. Please contact a member of our staff for any further inquiries.

All product have a weight but nothing seems to see the weight of the product.  See attached

Also,  how to a change the default color the the optional color of green displayed on the bottom of the screen.

Take a look: http://asbach-chocomates.com

Thank you

 

shopping_basket_3lb .pdf

Link to comment
Share on other sites

Regarding the message about being overweight, this is, unfortunately, a very misleading indication.

More accurately, it means that of all the shipping modules enabled, for various reasons, none were able to compute a shipping charge.

Typically the case, USPS and FedEx require one have a user account with permission to make real-time rate requests to their online API. This is more than an account with USPS or FedEx, but a separate, companion account to access the API. (USPS will email you user/pass credentials that they want you to use. Perhaps similar with FedEx.)

The Flat Rate shipping should work, if enabled. Be sure to not use any currency symbol - just digits and the period.

My browser reports that the internet does not yet know about the web address given.

Link to comment
Share on other sites

Sorry about the type.  The site is http://asbach-chocolates.com

I am a 'seasonal' shipper with Fedex and have a regular FedEx account.  The required fields are filled in with the required data obtained from FedEx.  See attached.

The US has been authorized as a Zone.  Are you saying that I need toi contact FEDEX for a separate API to populate the CubeCart shopping cart?

Please review and advise.

Thank you

Fedex_Input_Details.pdf

Link to comment
Share on other sites

In the FedEx shipping module folder, there is a file named shipping.class.php. Open this file for editing. (Use the File Editor available as a tool in your hosting account control panel, or some other programmer's text editor.)

Near the bottom of the file, you will find some statements that begin with:
trigger_error('FedEx Error:

At the end of these statements you have either:
E_USER_ERROR);
or
E_USER_WARNING);

Make sure these statements (three of them) have the E_USER_WARNING); ending.

I would like for you to implement the code changes as described here:
https://github.com/cubecart/v6/issues/1430

In admin, Store Settings, Advanced tab, enable Debugging and enter your IP address in the adjacent field (www.whatismyip.com).

Finally, in /classes/debug.class.php, near line 425, find:

Find:
case E_USER_WARNING:
  $type = 'Warning';
  $log = false;
break;

Change to:
case E_USER_WARNING:
  $type = 'Warning';
  $log = true;
break;

Then, when checking out and you do not get a rate from FedEx, look at the bottom of the page for any mention of a reason. There may also be any reason why logged in admin, Error Log, System Error Log tab.

 

Link to comment
Share on other sites

However, looking at the module settings screen, I see a couple of (probably) bad entries.

The Origin Info is asking for the State two-letter code, not the complete spelled out name, and is asking for the two-letter Country code, not the complete spelled out name.

Try SC and US.

 

Link to comment
Share on other sites

The only folder located in the shipping subdirectory was a folder from a prior installation of "All_in_One_Shipping" which I had uninstalled again since it did not work.  Apparently the 'uninstall procedure' does not remove all what it had installed prior.

There was no FedEx folder. I had used the "Auto Install/Upgrade Token", but it apparently did not create the FedEx folder.  Did a manual download and installed FedEx in the "Shipping" subdirectory.

The text "E_USER_ERROR" was not to be found.  Apparently already changed in the latest version.  I found three references that were already changed to "E_USER_WARNING".

I looked at the code you want me to implement, i.e.

bhsmither commented on Dec 28, 2016 • edited
Please consider:

public function calculate() {

  function findReasons($soapClient) {
    // Admin needs to enable debugging to see the Request/Response
    // from testing the checkout to get a FedEx Request/Response
    if(!is_object($soapClient)) return false;
    $GLOBALS['debug']->debugMessage("FedEx Request :<br>", htmlentities($soapClient->__getLastRequest()), "<br>");
    $GLOBALS['debug']->debugMessage("FedEx Response :<br>", htmlentities($soapClient->__getLastResponse()), "<br>");
  }

  $path_to_wsdl = CC_ROOT_DIR.'/modules/shipping/FedEx/wsdl/RateService_v13.wsdl';

      } else {
        findReasons($this->_client);
        trigger_error('FedEx Error: No shipping quotes could be obtained for '.$this->_basket['delivery_address']['postcode'].', '.$this->_basket['delivery_address']['country_iso'], E_USER_WARNING); // E_USER_ERROR);
      }

But I don't know where to insert this code exactly in the file.

Debug is set and you can place an order.  Hopefully you can make sense of the details provided at the bottom of the screen.  All other changes you suggested have been made.

Please review and advise.  Again the site is "http://asbach-chocolates.com

Thanks

Link to comment
Share on other sites

"There was no FedEx folder."

Inconceivable. If not, there wouldn't have been an admin control panel to have entered your account settings. Unless the folder was not in the /modules/shipping/ folder, but in a different folder under /modules/.

We can look into the edits to the module's code I mentioned earlier, but please, for now, make the changes in the FedEx control panel as mentioned and see what happens.

Although debug is enabled, by having only your IP address in the adjacent field, only you get to see it. See the Personal Message for my IP.

 

Link to comment
Share on other sites

I made all the changes you requested.  United States changed to US.  South Carolina to SC.

Attached is an pdf file of the directory structure.  Fedex is in the shipping subdirectory.

Please advise where you want me to install the code you provided.  Kindly provide a line text that I can search for underneath wich I should insert the following code.

public function calculate() {

  function findReasons($soapClient) {
    // Admin needs to enable debugging to see the Request/Response
    // from testing the checkout to get a FedEx Request/Response
    if(!is_object($soapClient)) return false;
    $GLOBALS['debug']->debugMessage("FedEx Request :<br>", htmlentities($soapClient->__getLastRequest()), "<br>");
    $GLOBALS['debug']->debugMessage("FedEx Response :<br>", htmlentities($soapClient->__getLastResponse()), "<br>");
  }

  $path_to_wsdl = CC_ROOT_DIR.'/modules/shipping/FedEx/wsdl/RateService_v13.wsdl';

      } else {
        findReasons($this->_client);
        trigger_error('FedEx Error: No shipping quotes could be obtained for '.$this->_basket['delivery_address']['postcode'].', '.$this->_basket['delivery_address']['country_iso'], E_USER_WARNING); // E_USER_ERROR);
      }

CubeCart_Directory.pdf

Link to comment
Share on other sites

A couple of questions:

In the directory map provided, there is a /modules/ folder inside the /modules/ folder. What is in here?

In the FedEx settings screen, are there any entries on the Allowed Zones or Disabled Zones? If so, delete them.

Using a programmer's text editor, open the file /modules/shipping/FedEx/shipping.class.php:

Near line 216, find:

} else {
	trigger_error('FedEx Error: No shipping quotes could be obtained for '.$this->_basket['delivery_address']['postcode'].', '.$this->_basket['delivery_address']['country_iso'], E_USER_WARNING);
				}
Change to:

} else {
    findReasons($this->_client);
    trigger_error('FedEx Error: No shipping quotes could be obtained for '.$this->_basket['delivery_address']['postcode'].', '.$this->_basket['delivery_address']['country_iso'], E_USER_WARNING);
				}



Near line 123, find:

public function calculate() {

After that, ADD:

function findReasons($soapClient) {
	if(!is_object($soapClient)) return false;
	$GLOBALS['debug']->debugMessage("Request :<br>", htmlentities($soapClient->__getLastRequest()), "<br>");
	$GLOBALS['debug']->debugMessage("Response :<br>", htmlentities($soapClient->__getLastResponse()), "<br>");
}

 

Link to comment
Share on other sites

If the Allowed and Disabled Zones tabs are empty, then we need to do some deep investigation.

I see that the FedEx module's settings are getting called, but nothing is being done with them.

So:

Earlier, you added:

findReasons($this->_client);

just above one of the trigger_error statements.

Please add:

findReasons($this->_client);

just above the other two instances of trigger_error.

 

Link to comment
Share on other sites

Allowed and disallowed zones are empty.

Edited the file once more and the secion where the trigger_error statements were, now look like this

} else {
                        findReasons($this->_client);
                    trigger_error('FedEx Error: No shipping quotes could be obtained for '.$this->_basket['delivery_address']['postcode'].', '.$this->_basket['delivery_address']['country_iso'], E_USER_WARNING);
                }
              
            } else {
                findReasons($this->_client);
               trigger_error('FedEx Error: '.$response->Notifications->Message, E_USER_WARNING);

            } 
             
        
        } catch (SoapFault $exception) {
            findReasons($this->_client);
          trigger_error('FedEx Error: invalid request', E_USER_WARNING);       
        }
        
        return (isset($package)) ? $package : false;
    }
                }
 

Did the FedEx module work for other users of CubeCart?  I cannot imagine that I am the only users!

Link to comment
Share on other sites

In the debug section shown at the bottom of the page, among the PHP Notices is this one:

[Warning] /classes/cubecart.class.php:1700 - Shipping not setup or allow no shipping not enabled

Line 1700 is executed if Cart->loadShippingModules() returns false.

loadShippingModules will return false for a variety of reasons, but probably because no shipping products could be matched to what you have selected in the settings screen.

In the FedEx settings screen, General tab, Carrier/Service Matrix table, as an experiment, select all available services. Save.

 

Link to comment
Share on other sites

Last simple edit before we get all medieval on this:

In the module's shipping.class.php, find:

			$response = $this->_client->getRates($request);

			if ($response->HighestSeverity != 'FAILURE' && $response->HighestSeverity != 'ERROR')

Change to:

			$response = $this->_client->getRates($request);
			findReasons($this->_client);
			if ($response->HighestSeverity != 'FAILURE' && $response->HighestSeverity != 'ERROR')

 

Link to comment
Share on other sites

The latest edit should have given us the request and response in the debug section.

That it didn't probably means there was no actual request made.

Feel free to send me a private message with your email address, and we will do some deeper analysis.

 

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
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...