The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

WebService::eBay

SYNOPSIS

This package provides an interface to use the eBay Trading API. For more information about the eBay Trading API, visit https://developer.ebay.com/devzone/xml/docs/reference/ebay/index.html

The "hello world" equivalent in the eBay API world is to send a call asking for the current eBay time. Here's an example of how to do that with this module:

 use WebService::eBay;
 
 my $response = WebService::eBay::APICall("GeteBayOfficialTime");
 print "$response->{Timestamp}\n";

But this isn't a great example for this module because the GeteBayOfficialTime call doesn't take any parameters. A simple one that does though is the EndItem call. Here's how you would do that in this module:

 my $listingNumber = '142306955';
 my $callDetails   = "<ItemID>$listingNumber</ItemID>
 <EndingReason>OtherListingError</EndingReason>";
 
 if ( WebService::eBay::APICall( "EndItem", $callDetails ) ) {
        print "\nDeleted $listingNumber from eBay\n";
 } else {
        print("\nUnable to end listing $listingNumber\n");
 }

DESCRIPTION

To use the eBay Trading API you need application keys and an authorization token. You can obtain these through your eBay developer account. You should create a file called "tokens" in the directory containing the program using this module. That file should look like this for the API sandbox and testing:

 APIURL https://api.sandbox.ebay.com/ws/api.dll
 SiteID 0
 DevName <Your Dev Name>
 AppName <Your App Name>
 CertName <Your Cert Name>
 AuthToken <Your Auth Token>
 Log true

and this for the Production keys.

 APIURL https://api.ebay.com/ws/api.dll
 SiteID 100
 DevName <Your Dev Name>
 AppName <Your App Name>
 CertName <Your Cert Name>
 AuthToken <Your Auth Token>
 

The last option "Log" is intended for testing and sandbox use as it logs all communication sent and received from the API, which includes your secret keys. To not use this option, leave the "Log" line out of the tokens file or set it to something other than 'true'.

SUBROUTINES

APICall

Sends an API call and returns the results as a hash. Optionally returns the raw XML. If the call encounters an HTTP error sending the call, it will try again twice before giving up. This is in accordance with the rules for the eBay API.

Parameters

CallName

The name of the API Call that you wish to make. For a list of API calls and their parameters, visit https://developer.ebay.com/devzone/xml/docs/reference/ebay/index.html

RequestDetails

The details of the call, in XML. You do not need to provide the RequesterCredentials or the WarningLevel, but you do have to provide the rest of the call. This is where that goes. The RequesterCredentials are always the same and the WarningLevel doesn't usually need to be changed. For information on what details your call needs, visit https://developer.ebay.com/devzone/xml/docs/reference/ebay/index.html

Some calls have no details, such as GeteBayOfficialTime.

Xml

Pass any value here for true (pass "undef" for false) and the sub will return the raw XML from the API response, instead of the hash.

FailOnWarning

Pass any value here for true (pass "undef" for false) and the sub will return false ("fail") if the API call returns a warning. The default is to return the hash (which contains the warning) if the API call returns a warning.

GeteBayTime

Returns eBay official time. Not local time.

Parameters

FormateBayDate

Returns the current date formatted for use in eBay API calls. Optionally will return a date offset from the current time, such as one hour from now or one day ago.

Parameters

Offset

Number of seconds to offset the current time. Example: FormateBayDate(3600) returns the time one hour from now. This function is usually called as FormateBayDate(86400) to obtain the next day's date.

XMLClean

Strips a string of characters recognized by XML code

Parameters

Line

The string of characters you want to process.

GetUUID

Returns a UUID formatted for eBay standards

Parameters

none

ebayTimeToSqlTimestamp

Converts an ebay time to a string properly formatted for insertion as an SQL timestamp.

Parameters

time

The time you want to convert