Jump to content



Photo
* * * * * 2 votes

FedEx - Web Services v9


  • Please log in to reply
628 replies to this topic

#1 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 11 May 2011 - 05:15

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?

#2 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 11 May 2011 - 12:41

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?

#3 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 11 May 2011 - 19:35

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, $<img src='http://forums.oscommerce.com/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='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;
		}
}


#4   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 17 May 2011 - 17:08

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.
Kym
We support qdPM Open Framework Project Management

#5 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 17 May 2011 - 17:24

You have to create an account (if you haven't already) and then go to "technicall resources" http://www.fedex.com.../solutions.html

I had to call... and get them to walk me through the 15 links it took to find it. 877-339-2774

#6   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 17 May 2011 - 17:25

People should note that this is a phpV5 solution. Soap needs phpV5.
Kym
We support qdPM Open Framework Project Management

#7   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 17 May 2011 - 17:59

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?
Kym
We support qdPM Open Framework Project Management

#8 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 17 May 2011 - 18:12

I got a product key and passcode with no issues.

#9   djp-at

djp-at
  • Members
  • 13 posts
  • Real Name:Darryl

Posted 18 May 2011 - 19:09

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!

#10   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 18 May 2011 - 20:10

Well that means it has bugs which is different to not working. If it is bringing back correct rates from FedEx then the rest can be fixed.
Kym
We support qdPM Open Framework Project Management

#11   djp-at

djp-at
  • Members
  • 13 posts
  • Real Name:Darryl

Posted 18 May 2011 - 20:22

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!

#12   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 18 May 2011 - 20:29

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.
Kym
We support qdPM Open Framework Project Management

#13 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 18 May 2011 - 20:37

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

#14   djp-at

djp-at
  • Members
  • 13 posts
  • Real Name:Darryl

Posted 18 May 2011 - 20:40

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!

#15   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 18 May 2011 - 20:44

That is a common bug and I've seen it in other shipping modules.

We can fix it but at the moment we can't even get a production key. I've had to email their support. Stay tuned.
Kym
We support qdPM Open Framework Project Management

#16   djp-at

djp-at
  • Members
  • 13 posts
  • Real Name:Darryl

Posted 18 May 2011 - 20:49

any idea on what function would be doing this? or where i can start to look at fixing it?
Professionally Done Module Install's
Custom Modules
Support USA Coder's. And Get The Job Done Right!

#17 ONLINE   greasemonkey

greasemonkey
  • Members
  • 403 posts
  • Real Name:Scott
  • Gender:Male

Posted 18 May 2011 - 21:01

I've had to email their support.


Try calling them... They were great when I called.

#18   FlyingKites

FlyingKites

    Projects Director

  • Partner
  • 1,441 posts
  • Real Name:Kym
  • Gender:Female
  • Location:New York

Posted 25 May 2011 - 14:53

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, 25 May 2011 - 15:00.

Kym
We support qdPM Open Framework Project Management

#19   ozeworks

ozeworks
  • Members
  • 5 posts
  • Real Name:ozEworks, Inc
  • Gender:Not Telling
  • Location:New York

Posted 26 May 2011 - 17:05

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, 26 May 2011 - 17:08.


#20   dsolutions

dsolutions
  • Members
  • 65 posts
  • Real Name:Evan
  • Gender:Male
  • Location:Texas

Posted 01 June 2011 - 16:39

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.