init()
user_error()
validate()
rate_request()
log_level()
Business::Shipping - Rates and tracking for UPS and USPS
Version 2.4.0
use Business::Shipping; my $rate_request = Business::Shipping->rate_request( shipper => 'UPS_Offline', service => 'Ground Residential', from_zip => '98683', to_zip => '98270', weight => 5.00, ); $rate_request->execute() or die $rate_request->user_error(); print $rate_request->rate();
Business::Shipping currently supports three shippers:
As of January, 2007, UPS has only released the data tables in binary Excel format. These have not been converted to the text files necessary for use in this module. A script is distributed with the module for automatically updating the fuel surcharge every month.
Gets rates for all the services in one request:
my $rr_shop = Business::Shipping->rate_request( service => 'shop', shipper => 'UPS_Online', from_zip => '98682', to_zip => '98270', weight => 5.00, user_id => '', password => '', access_key => '', ); $rr_shop->execute() or die $rr_shop->user_error(); foreach my $shipper ( @$results ) { print "Shipper: $shipper->{name}\n\n"; foreach my $rate ( @{ $shipper->{ rates } } ) { print " Service: $rate->{name}\n"; print " Charges: $rate->{charges_formatted}\n"; print " Delivery: $rate->{deliv_date_formatted}\n" if $rate->{ deliv_date_formatted }; print "\n"; } }
Add these options to your rate request for C.O.D.:
cod: enable C.O.D.
cod_funds_code: The code that indicates the type of funds that will be used for the COD payment. Required if CODCode is 1, 2, or 3. Valid Values: 0 = All Funds Allowed. 8 = cashier's check or money order, no cash allowed.
cod_value: The COD value for the package. Required if COD option is present. Valid values: 0.01 - 50000.00
cod_code: The code associated with the type of COD. Values: 1 = Regular COD, 2 = Express COD, 3 = Tagless COD
For example:
cod => 1, cod_value => 400.00, cod_funds_code => 0,
perl -MCPAN -e 'install Bundle::Business::Shipping'
See doc/INSTALL.
See INSTALL.
Any::Moose (any) Config::IniFiles (any) Log::Log4perl (any)
For UPS offline rate estimation:
Business::Shipping::DataFiles (any)
The following modules are used by online rate estimation and tracking. See INSTALL.
Cache::FileCache (any) Crypt::SSLeay (any) LWP::UserAgent (any) XML::DOM (any) XML::Simple (2.05)
Be careful to read, understand, and comply with the terms of use for the provider that you will use.
No signup required. Business::Shipping::DataFiles
has all of rate tables,
which are usually updated only once per year.
We recommend that you run the following script to update your fuel surcharge every first monday of the month.
bin/Business-Shipping-UPS_Offline-update-fuel-surcharge.pl
icustomercare@usps.com
) or phone: 1-800-344-7779.
Log4perl is used for logging error, debug, etc. messages. For simple
manipulation of the current log level, use the Business::Shipping->log_level()
class method (below). For more advanced logging/debugging options, see
config/log4perl.conf.
To preload all modules, call Business::Shipping with this syntax:
use Business::Shipping { preload => 'All' };
To preload the modules for just one shipper:
use Business::Shipping { preload => 'USPS_Online' }; Without preloading, some modules will be loaded at runtime. Normally, runtime loading is the best mode of operation. However, there are some circumstances when preloading is advantagous. For example:
init()
Generic attribute setter.
user_error()
Log and store errors that should be visibile to the user.
validate()
Confirms that the object is valid. Checks that required attributes are set.
rate_request()
This method is used to request shipping rate information from online providers or offline tables. A hash is accepted as input. The acceptable values are determined by the shipper class, but the following are common to all:
The name of the shipper to use. Must correspond to a module by the name of:
Business::Shipping::SHIPPER
. For example, UPS_Online
.
A valid service name for the provider. See the corresponding module documentation for a list of services compatible with the shipper.
The origin zipcode.
The origin state in two-letter code format or full-name format. Required for UPS_Offline.
The destination zipcode.
The destination country. Required for international shipments only.
Weight of the shipment, in pounds, as a decimal number.
There are some additional common values:
A user_id, if required by the provider. USPS_Online and UPS_Online require this, while UPS_Offline does not.
A password, if required by the provider. USPS_Online and UPS_Online require this, while UPS_Offline does not.
Shipper name backwards-compatibility
1. Really old: "UPS" or "USPS" (assumes Online::) 2. Semi-old: "Online::UPS", "Offline::UPS", or "Online::USPS" 3. Current: "UPS_Online", "UPS_Offline", or "USPS_Online"
log_level()
Simple alternative to editing the config/log4perl.conf file. Sets the log level for all Business::Shipping objects.
Takes a scalar that can be 'trace', 'debug', 'info', 'warn', 'error', or 'fatal'.
Important modules that are related to Business::Shipping:
Other Perl modules that are simliar to Business::Shipping:
=head1 Use of this software
Please let the author know how you are using Business::Shipping.
UserTag/business-shipping.tag
.
http://www.kavod.com/Business-Shipping/
CPAN web site: http://search.cpan.org/~dbrowning/Business-Shipping/
Backpan (old releases): http://backpan.cpan.org/authors/id/D/DB/DBROWNING/
This module is supported by the author. Please report any bugs or feature
requests to bug-business-shipping@rt.cpan.org
, or through the web interface
at http://rt.cpan.org. The author will be notified, and then you'll
automatically be notified of progress on your bug as the author makes changes.
See the doc/Todo
file for a comprehensive list of known bugs.
Many people have contributed to this software, please see the CREDITS
file.
Daniel Browning, db@kavod.com, http://www.kavod.com/
Copyright 2003-2011 Daniel Browning <db@kavod.com>. All rights reserved. This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. See LICENSE for more info.