Business::Shipping::UPS_XML - UPS XML Rate Requester
use Business::Shipping::UPS_XML; my $userid = 'jsmith'; my $userid_pass = 'topsecret'; my $access_key = '1DC98F0EB3A13E45'; my $origin_country = 'CA'; my $origin_zip = 'L4J8J2'; my $service_code = '03'; my $ups = new Business::Shipping::UPS_XML($userid,$userid_pass,$access_key,$origin_country); my $width = 10; my $height = 10; my $length = 10; my $units = 'IN'; my $weight = 2; $ups->set_dimensions( $width, $height, $length, $unit_of_measure, $weight); my $width = 15; my $height = 2; my $length = 10; my $units = 'IN'; my $weight = 2.3; $ups->set_dimensions( $width, $height, $length, $unit_of_measure, $weight); my $dest_country = 'US'; my $dest_zip = '83711'; ($maxcost, $zone, $error) = $ups->getUPS( $service_code, $origin_zip, $dest_zip, $dest_country);
This module uses the XML version of the UPS Rates & Service Selection Tool to get UPS rates for a given package and delivery destination. I wrote this after spending several hours trying to install various XML parsing modules and their dependancies. This module has it's own built in parser so no additional XML modules are needed.
One advantage to this module is it properly calculates shipments to, from and withing Canada. The old cgi UPS rate queries don't allow Canadian zip codes.
To use this module you need a online tools userid and password along with an access key. See the UPS OnLine Tools section of www.ups.com for details.
The methods described in this section are available for all
The new method is the constructor. The following input parameter are all required and must be provided in the following order:
1. Userid from ups.com web site. 2. Password from ups.com web site. 3. Access key from the ups.com web site. 4. The ISO abreviation for the country the shipment originates. my $ups = new UPS_XML('jsmith', 'topsecret', '1FC98F0EB3F13C45', 'CA');
Use this method if you need rates based on dimensions for one or more packages. To get rates for multiple packages, execute the method once for each package.
If you only need a rate based on the combined weight of one shipment, you don't need this method.
$ups->set_dimensions( 10, 5, 8, 'IN', 2.3 ); $ups->set_dimensions( 4, 4, 5, 'IN', 1.1 );
This method returns the rate for the provided service code, origin zip code, destination zip code, destination country and weight. If you use the set_dimensions method, the weight provided here is ignored.
getUPS returns the rate, zone, error code and currency the rate is in. After this method is executed, the dimensions provided by the set_dimensions method are cleared.
This module understand the following service codes:
UPS Express 01 UPS Next Day Air 01 UPS Expedited 02 UPS 2nd Day Air 02 UPS Ground 03 UPS Worldwide Express 07 UPS Worldwide Expedited 08 UPS Standard 11 UPS 3 Day Select 12 UPS Express Saver 13 UPS Next Day Air Saver 13 UPS Express Early AM 14 UPS Next Day Early AM 14 UPS Worldwide Express Plus 54 UPS 2nd Day Air A.M. 59 UPS Express NAI 64 UPS Express Saver (US) 65 UPS Express Saver (Eur) 65 ($maxcost, $zone, $error, $currency) = $ups->getUPS( '03', 'L4J8J2', '83711', 'US', 3);
Duane Hinkley, <email@example.com>
Copyright (c) 2003-2004 Down Home Web Design, Inc. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself
If you have any questions, comments or suggestions please feel free to contact me.