NAME
Shipment::FedEx
VERSION
version 0.01111360
SYNOPSIS
use Shipment::FedEx;
use Shipment::Address;
use Shipment::Package;
my $shipment = Shipment::FedEx->new(
from_address => Shipment::Address->new( ... ),
to_address => Shipment::Address->new( ... ),
packages => [ Shipment::Package->new( ... ), ],
);
foreach my $service ( $shipment->all_services ) {
print $service->id . "\n";
}
$shipment->rate( 'express' );
print $service->cost . "\n";
$shipment->ship( 'ground' );
$shipment->get_package(0)->label->save;
NAME
Shipment::FedEx - Interface to FedEx Shipping Web Services
ABOUT
This class provides an interface to the FedEx Web Services for Shipping. You must sign up for a developer test key in order to make use of this module.
https://www.fedex.com/wpor/web/jsp/drclinks.jsp?links=techresources/index.html
It is an extension of Shipment::Base.
It makes extensive use of SOAP::WSDL in order to create/decode xml requests and responses. The Shipment::FedEx::WSDL interface was created primarily using the wsdl2perl.pl script from SOAP::WSDL.
Class Attributes
meter, key, password
Credentials required to access FedEx Web Services
proxy_domain
This determines whether you will use the FedEx Web Services Testing Environment or the production (live) environment * wsbeta.fedex.com:443 (testing) * ws.fedex.com:443 (live)
label_stock_type
The label dimensions/type.
Default: 4x6
Type Maps
Shipment::Base type maps
Shipment::Base provides abstract types which need to be mapped to FedEx codes (i.e. bill_type of "sender" maps to FedEx "SENDER")
Collect billing
FedEx offers collect billing (without the need for a billing account #)
custom package types
FedEx provides package types in addition to the defaults in Shipment::Base * FEDEX_10KG_BOX * FEDEX_25KG_BOX
default currency
The default currency is USD
Class Methods
_build_services
This calls getRates from the Rate Services API
Each Service that is returned is added to services
The following service mapping is used: * ground => FEDEX_GROUND or INTERNATIONAL_GROUND * express => FEDEX_2_DAY or INTERNATIONAL_ECONOMY * priority => PRIORITY_OVERNIGHT or INTERNATIONAL_PRIORITY
This method ignores what is in $self->packages and uses a single package weighing 1 pound for rating. The idea is to list what services are available, but for accurate rate comparisons, the rate method should be used.
rate
This calls getRates from the Rate Services API
ship
This method calls processShipment from the Ship Services API
cancel
This method calls deleteShipment from the Ship Services API
If the tracking id is greater than 12 digits, it assumes that it is a Ground shipment.
Currently only supports deleting one package (tracking id) at a time - DeletionControl = 'DELETE_ONE_PACKAGE'
returns "SUCCESS" if successful
end_of_day
This method calls groundClose from the Close Services API
The manifest is a plain text file intended to be printed off on standard letter paper
AUTHOR
Andrew Baerg @ <andrew at pullingshots dot ca>
http://pullingshots.ca/
BUGS
Please contact me directly.
COPYRIGHT
Copyright (C) 2010 Andrew J Baerg, All Rights Reserved
NO WARRANTY
Absolutely, positively NO WARRANTY, neither express or implied, is offered with this software. You use this software at your own risk. In case of loss, no person or entity owes you anything whatsoever. You have been warned.
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
AUTHORS
Andrew Baerg <baergaj@cpan.org>
Al Newkirk <awncorp@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Andrew Baerg.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.