Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Help With International Shipment Weights Error


Guest

Recommended Posts

Hello

 

I been working the past few days on setting up the USPS Shipping Module with the USPS Methods contribution installed. I installed it successfully and everything is seems to be working correctly except when calculating weights for international packages.

 

I calculate weights in my store as 1.5 LBS, instead of 1 lbs 8 oz... Or 0.13 lbs instead of 2 oz. I installed the update by Michelle to convert these weight to the correct format for the USPS API servers.

 

Weights are correctly being displayed for domestic packages, and I have no problems with the domestic side of things. USPS is correctly reporting back correct shipping rates.

 

The problem only occurs when an international customer is checking out through my oscommerce store. During checkout, when the customer is selecting a shipping method, the USPS module gives the following error:

 

-2147218050 - Please enter a valid weight in ounces.

 

I am on the USPS production server... I even called to double check.. I tried searching these forums for this specific error, but could find no prior post pretaining to this specific error.. Google returned one result from a hosting provider, but they didnt provide a solution.

 

Tare Weight is set to 0

Percentage increase is set to 0

Postal code and country of origin are correctly defined in Admin>Configuration>Packaging/Shipping

 

I've exhausted every mean thus far to resolve this issue without posting, but have yet to successfully resolve this issue. I would really appreciate if someone could help me with this.

 

I believe the problem is in /catalog/includes/modules/shipping/usps.php around line 78 but I dont have the expertise to identify the exact problem.. I've posted the code in usps.php below:

 

 <?php

/*

 $Id: usps.php,v 1.47 2003/04/08 23:23:42 dgw_ Exp $

 ++++ modified as USPS Methods 2.7 03/26/04 by Brad Waite and Fritz Clapp ++++

 ++++ incorporating USPS revisions to service names ++++

 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com

 

 Copyright (c) 2003 osCommerce

 

 Released under the GNU General Public License

*/

 

 class usps {

   var $code, $title, $description, $icon, $enabled, $countries;

 

// class constructor

   function usps() {

     global $order;

 

     $this->code = 'usps';

     $this->title = MODULE_SHIPPING_USPS_TEXT_TITLE;

     $this->description = MODULE_SHIPPING_USPS_TEXT_DESCRIPTION;

     $this->sort_order = MODULE_SHIPPING_USPS_SORT_ORDER;

     $this->icon = DIR_WS_ICONS . 'shipping_usps.gif';

     $this->tax_class = MODULE_SHIPPING_USPS_TAX_CLASS;

     $this->enabled = ((MODULE_SHIPPING_USPS_STATUS == 'True') ? true : false);

 

 

 

     if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_USPS_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_USPS_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;

         }

       }

 

       if ($check_flag == false) {

         $this->enabled = false;

       }

     }

 

     $this->types = array('Express' => 'EXPRESS', 'First Class' => 'First-Class Mail', 'Priority' => 'Priority', 'Parcel' => 'Parcel', 'BPM' => 'Bound Printed Material', 'Library' => 'Library', 'Media' => 'Media Mail');

 

     $this->intl_types = array('GXG Document' => 'Global Express Guaranteed Document Service',

                               'GXG Non-Document' => 'Global Express Guaranteed Non-Document Service',

                               'Express' => 'Global Express Mail (EMS)',

                               'Priority Lg' => 'Global Priority Mail - Flat-rate Envelope (Large)',

                               'Priority Sm' => 'Global Priority Mail - Flat-rate Envelope (Small)',

                               'Priority Var' => 'Global Priority Mail - Variable Weight (Single)',

                               'Airmail Letter' => 'Airmail Letter-post',

                               'Airmail Parcel' => 'Airmail Parcel Post',

                               'Surface Letter' => 'Economy (Surface) Letter-post',

                               'Surface Post' => 'Economy (Surface) Parcel Post');

 

     $this->countries = $this->country_list();

   }

 

// class methods

   function quote($method = '') {

     global $order, $shipping_weight, $shipping_num_boxes, $transittime;

 

     if ( tep_not_null($method) && (isset($this->types[$method]) || in_array($method, $this->intl_types)) ) {

       $this->_setService($method);

     }

 

     $this->_setContainer('None');

     $this->_setSize('REGULAR');

 

 

 

     // usps doesnt accept zero weight

     // Fix the pounds and ounces generation code. John Christopher 01/12/05

  $shipping_weight = ($shipping_weight < 0.1 ? 0.1 : $shipping_weight);

 

     $getounces = ($shipping_weight - floor($shipping_weight));

  $convounces = ($getounces / 0.0625);

  $ounces = ($convounces);

 

     if($ounces >= 14)

     {

       $shipping_pounds = (floor($shipping_weight) + 1);

 $shipping_ounces = 0;

     }

     else

     {

       $shipping_pounds = floor($shipping_weight);

 $shipping_ounces = $ounces;

     }  

  // End John Christopher

 

  //This wasn't cumulative

  //$shipping_ounces = round(16 * ($shipping_weight - floor($shipping_weight)));

 

  // Added by Kevin Chen ([email protected]); Fixes the Parcel Post Bug July 1, 2004

  // Refer to http://www.usps.com/webtools/htm/Domestic-Rates.htm documentation

     if($shipping_pounds > 35 || $shipping_ounces < 6){

     $this->_setMachinable('False');

       }

     else{

     $this->_setMachinable('True');

     }

     // End Kevin Chen July 1, 2004

 

 

 

 

 

     $this->_setWeight($shipping_pounds, $shipping_ounces);

     

     if (in_array('Display weight', explode(', ', MODULE_SHIPPING_USPS_OPTIONS))) {

       $shiptitle = ' (' . $shipping_num_boxes . ' x ' . $shipping_weight . 'lbs)';

     } else {

       $shiptitle = '';

     }

     

 

     $uspsQuote = $this->_getQuote();

     

 

     if (is_array($uspsQuote)) {

       if (isset($uspsQuote['error'])) {

         $this->quotes = array('module' => $this->title,

                               'error' => $uspsQuote['error']);

       } else {

         $this->quotes = array('id' => $this->code,

                               'module' => $this->title . $shiptitle);

 

         $methods = array();

         $size = sizeof($uspsQuote);

         for ($i=0; $i<$size; $i++) {

           list($type, $cost) = each($uspsQuote[$i]);

 

           $title = ((isset($this->types[$type])) ? $this->types[$type] : $type);

           if(in_array('Display transit time', explode(', ', MODULE_SHIPPING_USPS_OPTIONS)))    $title .= $transittime[$type];

 

           $methods[] = array('id' => $type,

                              'title' => $title,

                              'cost' => ($cost + MODULE_SHIPPING_USPS_HANDLING) * $shipping_num_boxes);

         }

 

         $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 {

       $this->quotes = array('module' => $this->title,

                             'error' => MODULE_SHIPPING_USPS_TEXT_ERROR);

     }

 

     if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

 

     return $this->quotes;

   }

 

   function check() {

     if (!isset($this->_check)) {

       $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_USPS_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 USPS Shipping', 'MODULE_SHIPPING_USPS_STATUS', 'True', 'Do you want to offer USPS 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 ('Enter the USPS User ID', 'MODULE_SHIPPING_USPS_USERID', 'NONE', 'Enter the USPS USERID assigned to you.', '6', '0', now())");

     tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Enter the USPS Password', 'MODULE_SHIPPING_USPS_PASSWORD', 'NONE', 'See USERID, above.', '6', '0', 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 ('Which server to use', 'MODULE_SHIPPING_USPS_SERVER', 'production', 'An account at USPS is needed to use the Production server', '6', '0', 'tep_cfg_select_option(array(\'test\', \'production\'), ', 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_USPS_HANDLING', '0', 'Handling fee for this shipping method.', '6', '0', 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_USPS_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', '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, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_USPS_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '0', '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, date_added) values ('Sort Order', 'MODULE_SHIPPING_USPS_SORT_ORDER', '0', 'Sort order of display.', '6', '0', 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 ('Domestic Shipping Methods', 'MODULE_SHIPPING_USPS_TYPES', 'Express, Priority, First Class, Parcel, BPM, Library, Media,', 'Select the domestic services to be offered:', '6', '14', 'tep_cfg_select_multioption(array(\'Express\', \'Priority\', \'First Class\', \'Parcel\',\'BPM\',\'Library\',\'Media\'), ',  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 ('Int\'l Shipping Methods', 'MODULE_SHIPPING_USPS_TYPES_INTL', 'GXG Document, GXG Non-Document, Express, Priority Lg, Priority Sm, Priority Var, Airmail Letter, Airmail Parcel, Surface Letter, Surface Post', 'Select the international services to be offered:', '6', '15', 'tep_cfg_select_multioption(array(\'GXG Document\', \'GXG Non-Document\', \'Express\', \'Priority Lg\', \'Priority Sm\', \'Priority Var\', \'Airmail Letter\', \'Airmail Parcel\', \'Surface Letter\', \'Surface Post\'), ',  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 ('USPS Options', 'MODULE_SHIPPING_USPS_OPTIONS', 'Display weight, Display transit time', 'Select from the following the USPS options.', '6', '16', 'tep_cfg_select_multioption(array(\'Display weight\', \'Display transit time\'), ',  now())");

   }

 

   function remove() {

     tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");

   }

 

   function keys() {

     return array('MODULE_SHIPPING_USPS_STATUS', 'MODULE_SHIPPING_USPS_USERID', 'MODULE_SHIPPING_USPS_PASSWORD', 'MODULE_SHIPPING_USPS_SERVER', 'MODULE_SHIPPING_USPS_HANDLING', 'MODULE_SHIPPING_USPS_TAX_CLASS', 'MODULE_SHIPPING_USPS_ZONE', 'MODULE_SHIPPING_USPS_SORT_ORDER', 'MODULE_SHIPPING_USPS_OPTIONS', 'MODULE_SHIPPING_USPS_TYPES', 'MODULE_SHIPPING_USPS_TYPES_INTL');

   }

 

   function _setService($service) {

     $this->service = $service;

   }

 

   function _setWeight($pounds, $ounces=0) {

     $this->pounds = $pounds;

     $this->ounces = $ounces;

   }

 

   function _setContainer($container) {

     $this->container = $container;

   }

 

   function _setSize($size) {

     $this->size = $size;

   }

 

   function _setMachinable($machinable) {

     $this->machinable = $machinable;

   }

 

   function _getQuote() {

     global $order, $transittime;

 

 

 

     if(in_array('Display transit time', explode(', ', MODULE_SHIPPING_USPS_OPTIONS))) $transit = TRUE;

 

     if ($order->delivery['country']['id'] == SHIPPING_ORIGIN_COUNTRY) {

       $request  = '<RateRequest USERID="' . MODULE_SHIPPING_USPS_USERID . '" PASSWORD="' . MODULE_SHIPPING_USPS_PASSWORD . '">';

       $services_count = 0;

 

       if (isset($this->service)) {

         $this->types = array($this->service => $this->types[$this->service]);

       }

 

       $dest_zip = str_replace(' ', '', $order->delivery['postcode']);

       if ($order->delivery['country']['iso_code_2'] == 'US') $dest_zip = substr($dest_zip, 0, 5);

 

       reset($this->types);

       $allowed_types = explode(", ", MODULE_SHIPPING_USPS_TYPES);

 

       while (list($key, $value) = each($this->types)) {

 

  if ( !in_array($key, $allowed_types) ) continue;

 

         $request .= '<Package ID="' . $services_count . '">' .

                     '<Service>' . $key . '</Service>' .

                     '<ZipOrigination>' . SHIPPING_ORIGIN_ZIP . '</ZipOrigination>' .

                     '<ZipDestination>' . $dest_zip . '</ZipDestination>' .

                     '<Pounds>' . $this->pounds . '</Pounds>' .

                     '<Ounces>' . $this->ounces . '</Ounces>' .

                     '<Container>' . $this->container . '</Container>' .

                     '<Size>' . $this->size . '</Size>' .

                     '<Machinable>' . $this->machinable . '</Machinable>' .

                     '</Package>';

     

     if($transit){

           $transitreq  = 'USERID="' . MODULE_SHIPPING_USPS_USERID .

                        '" PASSWORD="' . MODULE_SHIPPING_USPS_PASSWORD . '">' .

                        '<OriginZip>' . STORE_ORIGIN_ZIP . '</OriginZip>' .

                        '<DestinationZip>' . $dest_zip . '</DestinationZip>';

 

           switch ($key) {

             case 'Express':  $transreq[$key] = 'API=ExpressMail&XML=' .

                              urlencode( '<ExpressMailRequest ' . $transitreq . '</ExpressMailRequest>');

                              break;

             case 'Priority': $transreq[$key] = 'API=PriorityMail&XML=' .

                              urlencode( '<PriorityMailRequest ' . $transitreq . '</PriorityMailRequest>');

                              break;

             case 'Parcel':   $transreq[$key] = 'API=StandardB&XML=' .

                              urlencode( '<StandardBRequest ' . $transitreq . '</StandardBRequest>');

                              break;

             default:         $transreq[$key] = '';

                              break;

           }

         }

 

         $services_count++;

       }

       $request .= '</RateRequest>';

 

 

 

       $request = 'API=Rate&XML=' . urlencode($request);

     } else {

       $request  = '<IntlRateRequest USERID="' . MODULE_SHIPPING_USPS_USERID . '" PASSWORD="' . MODULE_SHIPPING_USPS_PASSWORD . '">' .

                   '<Package ID="0">' .

                   '<Pounds>' . $this->pounds . '</Pounds>' .

                   '<Ounces>' . $this->ounces . '</Ounces>' .

                   '<MailType>Package</MailType>' .

                   '<Country>' . $this->countries[$order->delivery['country']['iso_code_2']] . '</Country>' .

                   '</Package>' .

                   '</IntlRateRequest>';

 

       

 $request = 'API=IntlRate&XML=' . urlencode($request);

     }

 

 

 

     switch (MODULE_SHIPPING_USPS_SERVER) {

       case 'production': $usps_server = 'production.shippingapis.com';

                          $api_dll = 'shippingapi.dll';

                          break;

       case 'test':

       default:           $usps_server = 'testing.shippingapis.com';

                          $api_dll = 'ShippingAPITest.dll';

                          break;

     }

     

 

     $body = '';

 

     $http = new httpClient();

     

     if ($http->Connect($usps_server, 80))

     {

       $http->addHeader('Host', $usps_server);

       $http->addHeader('User-Agent', 'osCommerce');

       $http->addHeader('Connection', 'Close');

 

       

       if ($http->Get('/' . $api_dll . '?' . $request)) $body = $http->getBody();

 //  mail('[email protected]','USPS rate quote response',$body,'From: <[email protected]>');

       if ($transit && is_array($transreq) && ($order->delivery['country']['id'] == STORE_COUNTRY))

       {

         while (list($key, $value) = each($transreq))

         {

           if ($http->Get('/' . $api_dll . '?' . $value)) $transresp[$key] = $http->getBody();

         }

       }

 

       $http->Disconnect();

 

     }

     else

     {

      return false;

     }

     

 

     $response = array();

     while (true) {

       if ($start = strpos($body, '<Package ID=')) {

         $body = substr($body, $start);

         $end = strpos($body, '</Package>');

         $response[] = substr($body, 0, $end+10);

         $body = substr($body, $end+9);

       } else {

         break;

       }

     }

 

     $rates = array();

     if ($order->delivery['country']['id'] == SHIPPING_ORIGIN_COUNTRY) {

       if (sizeof($response) == '1') {

         if (ereg('<Error>', $response[0])) {

           $number = ereg('<Number>(.*)</Number>', $response[0], $regs);

           $number = $regs[1];

           $description = ereg('<Description>(.*)</Description>', $response[0], $regs);

           $description = $regs[1];

 

           return array('error' => $number . ' - ' . $description);

         }

       }

 

       $n = sizeof($response);

       for ($i=0; $i<$n; $i++) {

         if (strpos($response[$i], '<Postage>')) {

           $service = ereg('<Service>(.*)</Service>', $response[$i], $regs);

           $service = $regs[1];

           $postage = ereg('<Postage>(.*)</Postage>', $response[$i], $regs);

           $postage = $regs[1];

 

           $rates[] = array($service => $postage);

 

           if ($transit) {

             switch ($service) {

               case 'Express':     $time = ereg('<MonFriCommitment>(.*)</MonFriCommitment>', $transresp[$service], $tregs);

                                   $time = $tregs[1];

                                   if ($time == '' || $time == 'No Data') {

                                     $time = '1 - 2 ' . MODULE_SHIPPING_USPS_TEXT_DAYS;

                                   } else {

                                     $time = 'Tomorrow by ' . $time;

                                   }

                                   break;

               case 'Priority':    $time = ereg('<Days>(.*)</Days>', $transresp[$service], $tregs);

                                   $time = $tregs[1];

                                   if ($time == '' || $time == 'No Data') {

                                     $time = '2 - 3 ' . MODULE_SHIPPING_USPS_TEXT_DAYS;

                                   } elseif ($time == '1') {

                                     $time .= ' ' . MODULE_SHIPPING_USPS_TEXT_DAY;

                                   } else {

                                     $time .= ' ' . MODULE_SHIPPING_USPS_TEXT_DAYS;

                                   }

                                   break;

               case 'Parcel':      $time = ereg('<Days>(.*)</Days>', $transresp[$service], $tregs);

                                   $time = $tregs[1];

                                   if ($time == '' || $time == 'No Data') {

                                     $time = '4 - 7 ' . MODULE_SHIPPING_USPS_TEXT_DAYS;

                                   } elseif ($time == '1') {

                                     $time .= ' ' . MODULE_SHIPPING_USPS_TEXT_DAY;

                                   } else {

                                     $time .= ' ' . MODULE_SHIPPING_USPS_TEXT_DAYS;

                                   }

                                   break;

               case 'First Class': $time = '2 - 5 ' . MODULE_SHIPPING_USPS_TEXT_DAYS;

                                   break;

               default:            $time = '';

                                   break;

             }

             if ($time != '') $transittime[$service] = ' (' . $time . ')';

           }

         }

       }

     } else {

       if (ereg('<Error>', $response[0])) {

         $number = ereg('<Number>(.*)</Number>', $response[0], $regs);

         $number = $regs[1];

         $description = ereg('<Description>(.*)</Description>', $response[0], $regs);

         $description = $regs[1];

 

         return array('error' => $number . ' - ' . $description);

       } else {

         $body = $response[0];

         $services = array();

         while (true) {

           if ($start = strpos($body, '<Service ID=')) {

             $body = substr($body, $start);

             $end = strpos($body, '</Service>');

             $services[] = substr($body, 0, $end+10);

             $body = substr($body, $end+9);

           } else {

             break;

           }

         }

         $allowed_types = array();

         foreach( explode(", ", MODULE_SHIPPING_USPS_TYPES_INTL) as $value ) $allowed_types[$value] = $this->intl_types[$value];

 

         $size = sizeof($services);

         for ($i=0, $n=$size; $i<$n; $i++) {

           if (strpos($services[$i], '<Postage>')) {

             $service = ereg('<SvcDescription>(.*)</SvcDescription>', $services[$i], $regs);

             $service = $regs[1];

             $postage = ereg('<Postage>(.*)</Postage>', $services[$i], $regs);

             $postage = $regs[1];

             $time = ereg('<SvcCommitments>(.*)</SvcCommitments>', $services[$i], $tregs);

             $time = $tregs[1];

             $time = preg_replace('/Weeks$/', MODULE_SHIPPING_USPS_TEXT_WEEKS, $time);

             $time = preg_replace('/Days$/', MODULE_SHIPPING_USPS_TEXT_DAYS, $time);

             $time = preg_replace('/Day$/', MODULE_SHIPPING_USPS_TEXT_DAY, $time);

 

             if( !in_array($service, $allowed_types) ) continue;

             if (isset($this->service) && ($service != $this->service) ) {

               continue;

             }

 

             $rates[] = array($service => $postage);

      if ($time != '') $transittime[$service] = ' (' . $time . ')';

           }

         }

       }

     }

 

     return ((sizeof($rates) > 0) ? $rates : false);

   }

 

   function country_list() {

     $list = array('AF' => 'Afghanistan',

                   'AL' => 'Albania',

                   'DZ' => 'Algeria',

                   'AD' => 'Andorra',

                   'AO' => 'Angola',

                   'AI' => 'Anguilla',

                   'AG' => 'Antigua and Barbuda',

                   'AR' => 'Argentina',

                   'AM' => 'Armenia',

                   'AW' => 'Aruba',

                   'AU' => 'Australia',

                   'AT' => 'Austria',

                   'AZ' => 'Azerbaijan',

                   'BS' => 'Bahamas',

                   'BH' => 'Bahrain',

                   'BD' => 'Bangladesh',

                   'BB' => 'Barbados',

                   'BY' => 'Belarus',

                   'BE' => 'Belgium',

                   'BZ' => 'Belize',

                   'BJ' => 'Benin',

                   'BM' => 'Bermuda',

                   'BT' => 'Bhutan',

                   'BO' => 'Bolivia',

                   'BA' => 'Bosnia-Herzegovina',

                   'BW' => 'Botswana',

                   'BR' => 'Brazil',

                   'VG' => 'British Virgin Islands',

                   'BN' => 'Brunei Darussalam',

                   'BG' => 'Bulgaria',

                   'BF' => 'Burkina Faso',

                   'MM' => 'Burma',

                   'BI' => 'Burundi',

                   'KH' => 'Cambodia',

                   'CM' => 'Cameroon',

                   'CA' => 'Canada',

                   'CV' => 'Cape Verde',

                   'KY' => 'Cayman Islands',

                   'CF' => 'Central African Republic',

                   'TD' => 'Chad',

                   'CL' => 'Chile',

                   'CN' => 'China',

                   'CX' => 'Christmas Island (Australia)',

                   'CC' => 'Cocos Island (Australia)',

                   'CO' => 'Colombia',

                   'KM' => 'Comoros',

                   'CG' => 'Congo (Brazzaville),Republic of the',

                   'ZR' => 'Congo, Democratic Republic of the',

                   'CK' => 'Cook Islands (New Zealand)',

                   'CR' => 'Costa Rica',

                   'CI' => 'Cote d\'Ivoire (Ivory Coast)',

                   'HR' => 'Croatia',

                   'CU' => 'Cuba',

                   'CY' => 'Cyprus',

                   'CZ' => 'Czech Republic',

                   'DK' => 'Denmark',

                   'DJ' => 'Djibouti',

                   'DM' => 'Dominica',

                   'DO' => 'Dominican Republic',

                   'TP' => 'East Timor (Indonesia)',

                   'EC' => 'Ecuador',

                   'EG' => 'Egypt',

                   'SV' => 'El Salvador',

                   'GQ' => 'Equatorial Guinea',

                   'ER' => 'Eritrea',

                   'EE' => 'Estonia',

                   'ET' => 'Ethiopia',

                   'FK' => 'Falkland Islands',

                   'FO' => 'Faroe Islands',

                   'FJ' => 'Fiji',

                   'FI' => 'Finland',

                   'FR' => 'France',

                   'GF' => 'French Guiana',

                   'PF' => 'French Polynesia',

                   'GA' => 'Gabon',

                   'GM' => 'Gambia',

                   'GE' => 'Georgia, Republic of',

                   'DE' => 'Germany',

                   'GH' => 'Ghana',

                   'GI' => 'Gibraltar',

                   'GB' => 'Great Britain and Northern Ireland',

                   'GR' => 'Greece',

                   'GL' => 'Greenland',

                   'GD' => 'Grenada',

                   'GP' => 'Guadeloupe',

                   'GT' => 'Guatemala',

                   'GN' => 'Guinea',

                   'GW' => 'Guinea-Bissau',

                   'GY' => 'Guyana',

                   'HT' => 'Haiti',

                   'HN' => 'Honduras',

                   'HK' => 'Hong Kong',

                   'HU' => 'Hungary',

                   'IS' => 'Iceland',

                   'IN' => 'India',

                   'ID' => 'Indonesia',

                   'IR' => 'Iran',

                   'IQ' => 'Iraq',

                   'IE' => 'Ireland',

                   'IL' => 'Israel',

                   'IT' => 'Italy',

                   'JM' => 'Jamaica',

                   'JP' => 'Japan',

                   'JO' => 'Jordan',

                   'KZ' => 'Kazakhstan',

                   'KE' => 'Kenya',

                   'KI' => 'Kiribati',

                   'KW' => 'Kuwait',

                   'KG' => 'Kyrgyzstan',

                   'LA' => 'Laos',

                   'LV' => 'Latvia',

                   'LB' => 'Lebanon',

                   'LS' => 'Lesotho',

                   'LR' => 'Liberia',

                   'LY' => 'Libya',

                   'LI' => 'Liechtenstein',

                   'LT' => 'Lithuania',

                   'LU' => 'Luxembourg',

                   'MO' => 'Macao',

                   'MK' => 'Macedonia, Republic of',

                   'MG' => 'Madagascar',

                   'MW' => 'Malawi',

                   'MY' => 'Malaysia',

                   'MV' => 'Maldives',

                   'ML' => 'Mali',

                   'MT' => 'Malta',

                   'MQ' => 'Martinique',

                   'MR' => 'Mauritania',

                   'MU' => 'Mauritius',

                   'YT' => 'Mayotte (France)',

                   'MX' => 'Mexico',

                   'MD' => 'Moldova',

                   'MC' => 'Monaco (France)',

                   'MN' => 'Mongolia',

                   'MS' => 'Montserrat',

                   'MA' => 'Morocco',

                   'MZ' => 'Mozambique',

                   'NA' => 'Namibia',

                   'NR' => 'Nauru',

                   'NP' => 'Nepal',

                   'NL' => 'Netherlands',

                   'AN' => 'Netherlands Antilles',

                   'NC' => 'New Caledonia',

                   'NZ' => 'New Zealand',

                   'NI' => 'Nicaragua',

                   'NE' => 'Niger',

                   'NG' => 'Nigeria',

                   'KP' => 'North Korea (Korea, Democratic People\'s Republic of)',

                   'NO' => 'Norway',

                &

Link to comment
Share on other sites

I am also having a problem with the USPS shipping module. I display the weights of my products as decimal values because the scale I own reports weights this way.

 

Yesterday I received an order from Australia (I am in the US) and one of the shipping methods listed for the customer is Global Priority Mail for $6.00. When the customer selects this shipping method, the order total page displays Global Express Guaranteed Document Service for $53.00.

 

Something is amiss here. I'm not sure if it's the same problem or not.

 

I am an experienced programmer that has created a few modifications to my cart, but I'm not sure I can figure this one out on my own. I am going to try to look through the code to see if something pops out, but I won't bet on finding anything anytime soon.

 

Can someone who's a bit more experienced help out here? How about the osCommerce team? Is there someone out there that helped write this module?

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