Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

FedEx - Web Services v9


greasemonkey

Recommended Posts

Hi All, I have been having a hard time getting Fedex rate quotes. It would seem Fedex has stopped giving new meter ID's for the the legacy API mod Real Time Quotes (according to fedex tech support).

 

So... I have been working with FedEx - Web Services v9, however I'm receiving the following error:

 

Warning: SoapClient::SoapClient() [soapclient.soapclient]: I/O warning : failed to load external entity "/home/*****/public_html/shopincludes/wsdl/RateService_v9.wsdl" in /home/*****/public_html/shop/includes/modules/shipping/fedexwebservices.php on line 67

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from '/home/*****/public_html/shopincludes/wsdl/RateService_v9.wsdl' : failed to load external entity "/home/*****/public_html/shopincludes/wsdl/RateService_v9.wsdl" in /home/******/public_html/shop/includes/modules/shipping/fedexwebservices.php:67 Stack trace: #0 /home/******/public_html/shop/includes/modules/shipping/fedexwebservices.php(67): SoapClient->SoapClient('/home/******/...', Array) #1 /home/******/public_html/shop/includes/classes/shipping.php(83): fedexwebservices->quote('') #2 /home/******/public_html/shop/checkout_shipping.php(151): shipping->quote() #3 {main} thrown in /home/******/public_html/shop/includes/modules/shipping/fedexwebservices.php on line 67

 

SOAP is enabled on my server... Any idea's?

Link to comment
Share on other sites

Ok, I got it working by change lines 59 & 64 to the absolute path... I presume this is something to do with my config files?

 

So, the only problem I'm having now is fuctional... The buttons to enable/disable shipping services do not seem to work.

 

Anyone out there working with this mod?

Link to comment
Share on other sites

Testing is still going on with this contribution... I can't believe I seem to be the only one using (or having problems) with this mod. The 2 problems I have so far are:

 

1) the configure buttons to enable/disable shipping services in admin do not work

 

2) when checking out a customer can choose any Fedex service (Priority Express for example), however, as they proceed to checkout_payment and get to checkout_confirmation the service changes back to Ground (no matter what service was used in checkout_shipping)

 

Hoping someone out there can help... Below is my code for catalog/includes/modules/shipping/fedexwebservices.php

 

<?php
class fedexwebservices {
var $code, $title, $description, $icon, $sort_order, $enabled, $tax_class, $fedex_key, $fedex_pwd, $fedex_act_num, $fedex_meter_num, $country;

//Class Constructor
 function fedexwebservices() {
   global $order, $customer_id;

   @define('MODULE_SHIPPING_FEDEX_WEB_SERVICES_INSURE', 0); 
   $this->code             = "fedexwebservices";
   $this->title            = MODULE_SHIPPING_FEDEX_WEB_SERVICES_TEXT_TITLE;
   $this->description      = MODULE_SHIPPING_FEDEX_WEB_SERVICES_TEXT_DESCRIPTION;
   $this->sort_order       = MODULE_SHIPPING_FEDEX_WEB_SERVICES_SORT_ORDER;
   $this->handling_fee     = (float)MODULE_SHIPPING_FEDEX_WEB_SERVICES_HANDLING_FEE;
   $this->icon 						= DIR_WS_ICONS . 'shipping_fedex.gif'; 
   $this->enabled = ((MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATUS == 'true') ? true : false);

   $this->tax_class        = MODULE_SHIPPING_FEDEX_WEB_SERVICES_TAX_CLASS;
   $this->fedex_key        = MODULE_SHIPPING_FEDEX_WEB_SERVICES_KEY;
   $this->fedex_pwd        = MODULE_SHIPPING_FEDEX_WEB_SERVICES_PWD;
   $this->fedex_act_num    = MODULE_SHIPPING_FEDEX_WEB_SERVICES_ACT_NUM;
   $this->fedex_meter_num  = MODULE_SHIPPING_FEDEX_WEB_SERVICES_METER_NUM;
   if (defined("SHIPPING_ORIGIN_COUNTRY")) {
     if ((int)SHIPPING_ORIGIN_COUNTRY > 0) {
       $countries_array = $this->get_countries(SHIPPING_ORIGIN_COUNTRY, true);
       $this->country = $countries_array['countries_iso_code_2'];
     } else {
       $this->country = SHIPPING_ORIGIN_COUNTRY;
     }
   } else {
     $this->country = STORE_ORIGIN_COUNTRY;
   }
   if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_FEDEX_WEB_SERVICES_ZONE > 0) ) {
     $check_flag = false;
     $check_query = tep_db_query ("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_FEDEX_WEB_SERVICES_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id");
     while( $check = tep_db_fetch_array($check_query)) {
       if ($check ['zone_id'] < 1) {
         $check_flag = true;
         break;
       } elseif ($check ['zone_id'] == $order->delivery['zone_id']) {
         $check_flag = true;
         break;
       }
       $check->MoveNext();
     }

     if ($check_flag == false) {
       $this->enabled = false;
     }
   }
 }

 //Class Methods

 function quote($method = '') {
   /* FedEx integration starts */
   global $shipping_weight, $shipping_num_boxes, $order;

   require_once('/home/flournet/public_html/shop/includes/library/fedex-common.php5');
   //if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_SERVER == 'test') {
     //$request['Version'] = array('ServiceId' => 'crs', 'Major' => '7', 'Intermediate' => '0', 'Minor' => '0');
     //$path_to_wsdl = DIR_WS_INCLUDES . "wsdl/RateService_v7_test.wsdl";
   //} else {
   $path_to_wsdl = "/home/flournet/public_html/shop/includes/wsdl/RateService_v9.wsdl";
   //}
   ini_set("soap.wsdl_cache_enabled", "0");
   $client = new SoapClient($path_to_wsdl, array('trace' => 1));
   $this->types = array();
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_PRIORITY == 'true') {
     $this->types[] = 'INTERNATIONAL_PRIORITY';
     $this->types[] = 'EUROPE_FIRST_INTERNATIONAL_PRIORITY';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_ECONOMY == 'true') {
     $this->types[] = 'INTERNATIONAL_ECONOMY';
   }  
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_STANDARD_OVERNIGHT == 'true') {
     $this->types[] = 'STANDARD_OVERNIGHT';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_FIRST_OVERNIGHT == 'true') {
     $this->types[] = 'FIRST_OVERNIGHT';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_PRIORITY_OVERNIGHT == 'true') {
     $this->types[] = 'PRIORITY_OVERNIGHT';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_2DAY == 'true') {
     $this->types[] = 'FEDEX_2_DAY';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_GROUND == 'true') {
     $this->types[] = 'FEDEX_GROUND';
     $this->types[] = 'GROUND_HOME_DELIVERY';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_GROUND == 'true') {
     $this->types[] = 'INTERNATIONAL_GROUND';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_EXPRESS_SAVER == 'true') {
     $this->types[] = 'FEDEX_EXPRESS_SAVER';
   }
   if (MODULE_SHIPPING_FEDEX_WEB_SERVICES_FREIGHT == 'true') {
     $this->types[] = 'FEDEX_FREIGHT';
     $this->types[] = 'FEDEX_NATIONAL_FREIGHT';
     $this->types[] = 'FEDEX_1_DAY_FREIGHT';
     $this->types[] = 'FEDEX_2_DAY_FREIGHT';
     $this->types[] = 'FEDEX_3_DAY_FREIGHT';
     $this->types[] = 'INTERNATIONAL_ECONOMY_FREIGHT';
     $this->types[] = 'INTERNATIONAL_PRIORITY_FREIGHT';
   }                      

    $this->types[] = 'SMART_POST';

   // customer details      
   $street_address = $order->delivery['street_address'];
   $street_address2 = $order->delivery['suburb'];
   $city = $order->delivery['city'];
   $state = tep_get_zone_code($order->delivery['country']['id'], $order->delivery['zone_id'], '');
   if ($state == "QC") $state = "PQ";
   $postcode = str_replace(array(' ', '-'), '', $order->delivery['postcode']);
   $country_id = $order->delivery['country']['iso_code_2'];

//    $totals = $order->info['subtotal'] = $_SESSION['cart']->show_total();
   $this->_setInsuranceValue($totals);

   $request['WebAuthenticationDetail'] = array('UserCredential' =>
                                         array('Key' => $this->fedex_key, 'Password' => $this->fedex_pwd));
   $request['ClientDetail'] = array('AccountNumber' => $this->fedex_act_num, 'MeterNumber' => $this->fedex_meter_num);
   $request['TransactionDetail'] = array('CustomerTransactionId' => ' *** Rate Request v9 using PHP ***');
//		$request['RequestedShipment']['SmartPostDetail'] = array(
//				'Indicia' => 'MEDIA_MAIL',
//				'AncillaryEndorsement' => 'CARRIER_LEAVE_IF_NO_RESPONSE',
//				'SpecialServices' => 'USPS_DELIVERY_CONFIRMATION',
//				'HubId' => '5254',
//				'CustomerManifestId' => 1101);
//		$request['RequestedShipment']['ServiceType'] = 'SMART_POST';

   $request['Version'] = array('ServiceId' => 'crs', 'Major' => '9', 'Intermediate' => '0', 'Minor' => '0');
   $request['ReturnTransitAndCommit'] = true;
   $request['RequestedShipment']['DropoffType'] = $this->_setDropOff(); // valid values REGULAR_PICKUP, REQUEST_COURIER, ...
   $request['RequestedShipment']['ShipTimestamp'] = date('c');
   //if (tep_not_null($method) && in_array($method, $this->types)) {
     //$request['RequestedShipment']['ServiceType'] = $method; // valid values STANDARD_OVERNIGHT, PRIORITY_OVERNIGHT, FEDEX_GROUND, ...
   //}
   $request['RequestedShipment']['PackagingType'] = 'YOUR_PACKAGING'; // valid values FEDEX_BOX, FEDEX_PAK, FEDEX_TUBE, YOUR_PACKAGING, ...
   $request['RequestedShipment']['TotalInsuredValue']=array('Ammount'=> $this->insurance, 'Currency' => $_SESSION['currency']);
   $request['WebAuthenticationDetail'] = array('UserCredential' => array('Key' => $this->fedex_key, 'Password' => $this->fedex_pwd));                     
   $request['ClientDetail'] = array('AccountNumber' => $this->fedex_act_num, 'MeterNumber' => $this->fedex_meter_num);
   //print_r($request['WebAuthenticationDetail']);
   //print_r($request['ClientDetail']);
   //exit;                    
   $request['RequestedShipment']['Shipper'] = array('Address' => array(
                                                    'StreetLines' => array(MODULE_SHIPPING_FEDEX_WEB_SERVICES_ADDRESS_1,
																									  MODULE_SHIPPING_FEDEX_WEB_SERVICES_ADDRESS_2), // Origin details
                                                    'City' => MODULE_SHIPPING_FEDEX_WEB_SERVICES_CITY,
                                                    'StateOrProvinceCode' => MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATE,
                                                    'PostalCode' => MODULE_SHIPPING_FEDEX_WEB_SERVICES_POSTAL,
                                                    'CountryCode' => $this->country));          
   $request['RequestedShipment']['Recipient'] = array('Address' => array (  // customer info
																									 'StreetLines' => array($street_address, $street_address2),
																									 'City' => $city,
																									 'StateOrProvinceCode' => $state,
																									 'PostalCode' => $postcode,
																									 'CountryCode' => $country_id,
																									 'Residential' => ($order->delivery['company'] != '' ? false : true))); 
   //print_r($request['RequestedShipment']['Recipient'])  ;
   //exit;                     
   $request['RequestedShipment']['ShippingChargesPayment'] = array('PaymentType' => 'SENDER',
                                                                   'Payor' => array('AccountNumber' => $this->fedex_act_num, // Replace 'XXX' with payor's account number
                                                                   'CountryCode' => $this->country));
   $request['RequestedShipment']['RateRequestTypes'] = 'LIST'; 
   $request['RequestedShipment']['PackageCount'] = $shipping_num_boxes;
   $request['RequestedShipment']['PackageDetail'] = 'INDIVIDUAL_PACKAGES';
   $request['RequestedShipment']['RequestedPackageLineItems'] = array();
   if ($shipping_weight == 0) $shipping_weight = 0.1;
   for ($i=0; $i<$shipping_num_boxes; $i++) {
     $request['RequestedShipment']['RequestedPackageLineItems'][] = array('Weight' => array('Value' => $shipping_weight,
                                                                                            'Units' => MODULE_SHIPPING_FEDEX_WEB_SERVICES_WEIGHT));
   }
   //echo '<!-- shippingWeight: ' . $shipping_weight . ' ' . $shipping_num_boxes . ' -->';                                                                                                                                             
   //echo '<!-- ';
   //echo '<pre>';
   //print_r($request);
   //echo '</pre>';
   //echo ' -->';
   $response = $client->getRates($request);
   //echo '<!-- '; 
   //echo '<pre>';
   //print_r($response);
   //echo '</pre>';
   //echo ' -->';
   if ($response->HighestSeverity != 'FAILURE' && $response->HighestSeverity != 'ERROR' && is_array($response->RateReplyDetails) || is_object($response->RateReplyDetails)) {
     if (is_object($response->RateReplyDetails)) {
       $response->RateReplyDetails = get_object_vars($response->RateReplyDetails);
     }
     //echo '<pre>';
     //print_r($response->RateReplyDetails);
     //echo '</pre>';
     switch (SHIPPING_BOX_WEIGHT_DISPLAY) {
       case (0):
       $show_box_weight = '';
       break;
       case (1):
       $show_box_weight = ' (' . $shipping_num_boxes . ' ' . TEXT_SHIPPING_BOXES . ')';
       break;
       case (2):
       $show_box_weight = ' (' . number_format($shipping_weight * $shipping_num_boxes,2) . TEXT_SHIPPING_WEIGHT . ')';
       break;
       default:
       $show_box_weight = ' (' . $shipping_num_boxes . ' x ' . number_format($shipping_weight,2) . TEXT_SHIPPING_WEIGHT . ')';
       break;
     }      
     $this->quotes = array('id' => $this->code,
                           'module' => $this->title . $show_box_weight);

     $methods = array();
     foreach ($response->RateReplyDetails as $rateReply) {
       if (true || in_array($rateReply->ServiceType, $this->types) && ($method == '' || str_replace('_', '', $rateReply->ServiceType) == $method)) {
         $cost = $rateReply->RatedShipmentDetails[0]->ShipmentRateDetail->TotalNetCharge->Amount;
         $cost = (float)round(preg_replace('/[^0-9.]/', '',  $cost), 2);
         $methods[] = array('id' => str_replace('_', '', $rateReply->ServiceType),
                            'title' => ucwords(strtolower(str_replace('_', ' ', $rateReply->ServiceType))),
                            'cost' => $cost + $this->handling_fee);
       }
     }
	function cmp($a, $B) {
		if ($a['cost'] == $b['cost']) {
				return 0;
		}
		return ($a['cost'] < $b['cost']) ? -1 : 1;
	}			

	usort($methods, 'cmp');
     $this->quotes['methods'] = $methods;

     if ($this->tax_class > 0) {
       $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
     } 
   } else {
     $message = 'Error in processing transaction.<br /><br />'; 
     foreach ($response -> Notifications as $notification) {           
       if(is_array($response -> Notifications)) {              
         $message .= $notification->Severity;
         $message .= ': ';           
         $message .= $notification->Message . '<br />';
       } else {
         $message .= $notification . '<br />';
       }
     }
     $this->quotes = array('module' => $this->title,
                           'error'  => $message);
   }
   if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);
   //echo '<!-- Quotes: ';
   //print_r($this->quotes);
   //print_r($_SESSION['shipping']);
   //echo ' -->';
   return $this->quotes;
 }

 function _setInsuranceValue($order_amount){
   if ($order_amount > (float)MODULE_SHIPPING_FEDEX_WEB_SERVICES_INSURE) {
     $this->insurance = sprintf("%01.2f", $order_amount);
   } else {
     $this->insurance = 0;
   }
 }

 function objectToArray($object) {
   if( !is_object( $object ) && !is_array( $object ) ) {
     return $object;
   }
   if( is_object( $object ) ) {
     $object = get_object_vars( $object );
   }
   return array_map( 'objectToArray', $object );
 }

 function _setDropOff() {
   switch(MODULE_SHIPPING_FEDEX_WEB_SERVICES_DROPOFF) {
     case '1':
       return 'REGULAR_PICKUP';
       break;
     case '2':
       return 'REQUEST_COURIER';
       break;
     case '3':
       return 'DROP_BOX';
       break;
     case '4':
       return 'BUSINESS_SERVICE_CENTER';
       break;
     case '5':
       return 'STATION';
       break;
   }
 }

 function check(){
   if(!isset($this->_check)){
     $check_query  = tep_db_query("SELECT configuration_value FROM ". TABLE_CONFIGURATION ." WHERE configuration_key = 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATUS'");
     $this->_check = tep_db_num_rows ($check_query);
   }
   return $this->_check;
 }

 function install() {
   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 FedEx Web Services','MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATUS','true','Do you want to offer FedEx shipping?','6','0','tep_cfg_select_option(array(\'true\',\'false\'),',now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('FedEx Web Services Key', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_KEY', '', 'Enter FedEx Web Services Key', '6', '3', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('FedEx Web Services Password', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_PWD', '', 'Enter FedEx Web Services Password', '6', '3', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('FedEx Account Number', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ACT_NUM', '', 'Enter FedEx Account Number', '6', '3', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('FedEx Meter Number', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_METER_NUM', '', 'Enter FedEx Meter Number', '6', '4', now())");
   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 ('Weight Units', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_WEIGHT', 'LB', 'Weight Units:', '6', '10', 'tep_cfg_select_option(array(\'LB\', \'KG\'), ', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('First line of street address', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ADDRESS_1', '', 'Enter the first line of your ship-from street address, required', '6', '20', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Second line of street address', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ADDRESS_2', '', 'Enter the second line of your ship-from street address, leave blank if you do not need to specify a second line', '6', '21', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('City name', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_CITY', '', 'Enter the city name for the ship-from street address, required', '6', '22', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('State or Province name', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATE', '', 'Enter the 2 letter state or province name for the ship-from street address, required for Canada and US', '6', '23', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Postal code', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_POSTAL', '', 'Enter the postal code for the ship-from street address, required', '6', '24', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Phone number', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_PHONE', '', 'Enter a contact phone number for your company, required', '6', '25', now())");
   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 ('Drop off type', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_DROPOFF', '1', 'Dropoff type (1 = Regular pickup, 2 = request courier, 3 = drop box, 4 = drop at BSC, 5 = drop at station)?', '6', '30', 'tep_cfg_select_option(array(\'1\',\'2\',\'3\',\'4\',\'5\'),', now())");
   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 Express Saver', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_EXPRESS_SAVER', 'true', 'Enable FedEx Express Saver', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 Standard Overnight', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_STANDARD_OVERNIGHT', 'true', 'Enable FedEx Express Standard Overnight', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 First Overnight', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_FIRST_OVERNIGHT', 'true', 'Enable FedEx Express First Overnight', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 Priority Overnight', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_PRIORITY_OVERNIGHT', 'true', 'Enable FedEx Express Priority Overnight', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 2 Day', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_2DAY', 'true', 'Enable FedEx Express 2 Day', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 International Priority', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_PRIORITY', 'true', 'Enable FedEx Express International Priority', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 International Economy', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_ECONOMY', 'true', 'Enable FedEx Express International Economy', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 Ground', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_GROUND', 'true', 'Enable FedEx Ground', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 International Ground', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_GROUND', 'true', 'Enable FedEx International Ground', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   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 Freight', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_FREIGHT', 'true', 'Enable FedEx Freight', '6', '10', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Handling Fee', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_HANDLING_FEE', '', 'Add a handling fee or leave blank', '6', '25', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '98', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '25', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
   tep_db_query ("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_FEDEX_WEB_SERVICES_SORT_ORDER', '0', 'Sort order of display.', '6', '99', now())"); 
 }

 function remove() {
   tep_db_query ("DELETE FROM ". TABLE_CONFIGURATION ." WHERE configuration_key in ('". implode("','",$this->keys()). "')");
 }

 function keys() {
   return array('MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATUS',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_KEY',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_PWD',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ACT_NUM',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_METER_NUM',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_WEIGHT',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ADDRESS_1',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ADDRESS_2',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_CITY',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_STATE',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_POSTAL',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_PHONE',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_DROPOFF',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_EXPRESS_SAVER',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_STANDARD_OVERNIGHT',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_FIRST_OVERNIGHT',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_PRIORITY_OVERNIGHT',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_2DAY',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_PRIORITY',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_ECONOMY',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_GROUND',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_INTERNATIONAL_GROUND',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_FREIGHT',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_TAX_CLASS',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_HANDLING_FEE',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_ZONE',
                'MODULE_SHIPPING_FEDEX_WEB_SERVICES_SORT_ORDER'
                );
 }

  function get_countries($countries_id = '', $with_iso_codes = false) {
		$countries_array = array();
		if (tep_not_null($countries_id)) {
			if ($with_iso_codes == true) {
				$countries = tep_db_query("select countries_name, countries_iso_code_2, countries_iso_code_3 from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "' order by countries_name");
				$countries_values = tep_db_fetch_array($countries);
				$countries_array = array('countries_name' => $countries_values['countries_name'],
																 'countries_iso_code_2' => $countries_values['countries_iso_code_2'],
																 'countries_iso_code_3' => $countries_values['countries_iso_code_3']);
			} else {
				$countries = tep_db_query("select countries_name from " . TABLE_COUNTRIES . " where countries_id = '" . (int)$countries_id . "'");
				$countries_values = tep_db_fetch_array($countries);
				$countries_array = array('countries_name' => $countries_values['countries_name']);
			}
		} else {
			$countries = tep_db_query("select countries_id, countries_name from " . TABLE_COUNTRIES . " order by countries_name");
			while ($countries_values = tep_db_fetch_array($countries)) {
				$countries_array[] = array('countries_id' => $countries_values['countries_id'],
																	 'countries_name' => $countries_values['countries_name']);
			}
		}

		return $countries_array;
	}
}

Link to comment
Share on other sites

We're trying to switch from the old module to this. We have an account and meter ID but we're trying to work out how to get the Webservices Key and Password.

 

WE can't find it on the FedEx site.

Link to comment
Share on other sites

Thanks.

 

I tried to get a production key but it keeps telling me the billing address does not match the address on the account even though I have cut and paste it from one to the other. Did you get a production key or a test key?

Link to comment
Share on other sites

this module does not work..

 

i have installed it normally, and i have also converted it to work with multi-vendor system..

 

No matter what you choose, it will select "First Overnight" and add it to your total..

 

also, the modules to turn certain services off, also dont work

Professionally Done Module Install's

Custom Modules

Support USA Coder's. And Get The Job Done Right!

Link to comment
Share on other sites

Well technically no its not, because its not working.. it forces everyone to use overnight shipping, sure the rate return is working, but i would say it not allowing you to choose the service you want would consider the addon broken...

 

 

and i never said it couldnt be fixed, i am working on fixing it now.

Professionally Done Module Install's

Custom Modules

Support USA Coder's. And Get The Job Done Right!

Link to comment
Share on other sites

Your posts are not making it clear what the actual issue is. Are you saying the only service send back from FedEx is Overnight Shipping or all relevant services are returned with pricing but, despite the service the customer selects, checkout assumes Overnight shipping.

Link to comment
Share on other sites

Hi Kym, I would be greatful if you can work out the bugs... As Darryl mentioned... the mod seems to have 2 bugs;

 

1) the radio buttons to disable services do not work... I even tried commenting out services but they are still returned. In speaking with Fedex techs support - if you do not specifically request (via this mod) quotes on ONLY specific services ALL rates are returned. Sorry this is WAY beyond my skills... But hopefully gives you a start.

 

2) no matter which service is selected by a customer the mod seems to default back to the least expensive (not specifically First Overnight).

 

Other than the 2 issues above... and no intergration with Fedex Automatic Labels... it seems to work and return rates.

 

Scott

Link to comment
Share on other sites

yes it returns all rates correctly, but does not carry on the selected shipping method to confirm payment, i guess in greasemonkey's finding's its only letting them select ground, but in my case it will only use first overnight..

Professionally Done Module Install's

Custom Modules

Support USA Coder's. And Get The Job Done Right!

Link to comment
Share on other sites

Ok we finally got a key and a password and we've tested it and we see the problem with it defaulting to first option (Home Delivery) regardless of what is picked.

 

ALso see the issue with Admin

 

So we will fix these bugs and report back here on it.

 

It will take a couple of days as we're busy on other things

Edited by FlyingKites
Link to comment
Share on other sites

Ok we loaded a new version

 

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

 

You just need to replace the main module file fedexwebservices.php.

 

I also updated the language file to add instructions on getting a key.

Edited by ozeworks

osCommerce Official Partner
www.ozEworks.com

Link to comment
Share on other sites

This module is working great for me, but the rates that are showing are not the list rates. Is this something that can be added to this module? The old version that is going to be retired eventually has this capability. Thanks.

Link to comment
Share on other sites

The module does not control the rates. FedEx controls the rates.

 

The rates shown are the rates for your specific account with FedEx. Plus any handling fee you might have set in the module itself.

 

So what exactly do you mean by "list rates"?

Link to comment
Share on other sites

Kym-

 

With the old fedex module, you could show list rates or your rates. List rates are the rates that are given to the public that do not include the shippers discount set by fedex.

 

Hope that helps clarify.

 

I did read in the developer manual that by default Fedex shows the price including discounts so i was just wondering if there was a setting that did not include discounts.

 

Thanks.

 

Dsolutions

 

 

The module does not control the rates. FedEx controls the rates.

 

The rates shown are the rates for your specific account with FedEx. Plus any handling fee you might have set in the module itself.

 

So what exactly do you mean by "list rates"?

Link to comment
Share on other sites

There is no flag to control what rates are offered in this module.

 

Someone would have to program it to do that assuming that the new API does in fact allow it.

 

You can always add on a handling fee.

 

However given shipping charges is one of the top #3 reasons for abandoned carts, I'd recommend you pass on any savings you can.

Link to comment
Share on other sites

After trying almost everything I can think of,

 

Im still recieveing:

Fatal error: Class 'SoapClient' not found in /hermes/bosweb25b/b600/ipg.theholydivercom/includes/modules/shipping/fedexwebservices.php on line 67

 

My host told me it has to be a script error somewhere, b/c they are compatible with SOAP. I use ipage

 

any ideas?????

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