NAME

Business::US::USPS::WebTools::TrackConfirm - track a shipment using the USPS Web Tools

SYNOPSIS

use Business::US::USPS::WebTools::TrackConfirm;

my $tracker = Business::US::USPS::WebTools::TrackConfirm->new( {
	UserID   => $ENV{USPS_WEBTOOLS_USERID},
	Password => $ENV{USPS_WEBTOOLS_PASSWORD},
	Testing  => 1,
	} );

my $hash = $tracker->track(
	);

if( $tracker->is_error )
	{
	warn "Oh No! $tracker->{error}{description}\n";
	}
else
	{
	print join "\n", map { "$_: $hash->{$_}" }
		qw(FirmName Address1 Address2 City State Zip5 Zip4);
	}

DESCRIPTION

*** THIS IS ALPHA SOFTWARE ***

This module implements the Track & Confirm web service from the US Postal Service. It is a subclass of Business::US::USPS::WebTools.

track( KEY, VALUE, ... )

The track method takes the following keys, which come directly from the USPS web service interface:

TrackID	  The tracking number

It returns an anonymous hash with the data from the response. Although the USPS API allows to make multiple queries in a single request, this method one queries one.

If you want to see if something went wrong, check:

$tracker->is_error;

See the is_error documentation in Business::US::USPS::WebTools for more details on error information.

tracking_number_regex

Returns the regex that checks a tracking number. I have it in its own method so you can easily override it if I got it wrong.

The USPS shows the valid forms at

	https://tools.usps.com/go/TrackConfirmAction!input.action

	USPS Tracking®	                      9400 1000 0000 0000 0000 00
	Priority Mail®	                      9205 5000 0000 0000 0000 00
	Certified Mail®	                      9407 3000 0000 0000 0000 00
	Collect on Delivery	                  9303 3000 0000 0000 0000 00
	Global Express Guaranteed®	          82 000 000 00
	Priority Mail Express International™  EC 000 000 000 US
	Priority Mail Express™	              9270 1000 0000 0000 0000 00
                                          EA 000 000 000 US
	Priority Mail International®          CP 000 000 000 US
	Registered Mail™                      9208 8000 0000 0000 0000 00
	Signature Confirmation™               9202 1000 0000 0000 0000 00
is_valid_tracking_number( ID )

Returns a normalized version of the tracking number if ID looks like a tracking number, based on the regex from tracking_number_regex. Returns false otherwise.

Normalizing ID merely removes all whitespace. Sometimes the USPS shows the numbers with whitespace.

service_type( ID )

Returns the service type, based on the examples shown by the USPS and shown in tracking_number_regex. I know this is wrong because I have tracking numbers that don't have the same leading characters for Priority Mail International.

TO DO

SEE ALSO

Business::US::USPS::WebTools

The WebTools API is documented on the US Postal Service's website:

https://www.usps.com/business/web-tools-apis/track-and-confirm-api.htm

SOURCE AVAILABILITY

This source is in GitHub:

https://github.com/briandfoy/business-us-usps-webtools

AUTHOR

brian d foy, <bdfoy@cpan.org>

COPYRIGHT AND LICENSE

Copyright © 2006-2016, brian d foy <bdfoy@cpan.org>. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.