#! /usr/bin/perl use strict; use warnings; use Data::Dumper; use Getopt::Long; use File::Spec; use eBay::API::XML::DataType::ItemType; use eBay::API::XML::DataType::CategoryType; use eBay::API::XML::Call::VerifyAddItem; use eBay::API::XML::DataType::Enum::CountryCodeType; use eBay::API::XML::DataType::Enum::CurrencyCodeType; use eBay::API::XML::DataType::Enum::ListingDurationCodeType; use eBay::API::XML::DataType::Enum::BuyerPaymentMethodCodeType; # Parse command line my %options = (); my @getopt_args = ( 'h', # print usage 't=s', # authToken 's=s', # siteId ); GetOptions(\%options, @getopt_args); usage() if $options{'h'}; my $sAuthToken = $options{'t'}; my $sSiteId = $options{'s'} || 0; usage() if !($sAuthToken ); # End parse command line my $sCountryCode = eBay::API::XML::DataType::Enum::CountryCodeType::US; my $sCurrencyCode = eBay::API::XML::DataType::Enum::CurrencyCodeType::USD; # 1. set item parameters my $pItem = eBay::API::XML::DataType::ItemType->new(); $pItem->setCountry($sCountryCode); $pItem->setCurrency($sCurrencyCode); $pItem->setDescription('NewSchema item description'); $pItem->setListingDuration(eBay::API::XML::DataType::Enum::ListingDurationCodeType::Days_7); $pItem->setLocation('San Jose, CA'); $pItem->setPaymentMethods( [eBay::API::XML::DataType::Enum::BuyerPaymentMethodCodeType::PersonalCheck] ); $pItem->setQuantity(1); $pItem->setRegionID(0); $pItem->setStartPrice(1.0); $pItem->setTitle('NewSchema item title '); my $pCat = eBay::API::XML::DataType::CategoryType->new(); $pCat->setCategoryID(62053); # 62053 - Video Games, Games for US site $pItem->setPrimaryCategory($pCat); # 2. instantiate VerifyAddItem call my $pCall = eBay::API::XML::Call::VerifyAddItem->new(); $pCall->setItem($pItem); $pCall->setSiteID( $sSiteId ); $pCall->setAuthToken($sAuthToken); # 3. execute the call $pCall->execute(); # 5. look for errors my $hasErrors = $pCall->hasErrors(); if ($hasErrors) { my $raErrors = $pCall->getErrors(); foreach my $pError ( @$raErrors ) { my $sErrorCode = $pError->getErrorCode(); my $sShortMessage = $pError->getShortMessage(); my $sLongMessage = $pError->getLongMessage(); print "\n"; print "ErrorCode=$sErrorCode, ShortMessage=$sShortMessage\n"; if ($sErrorCode eq '10001' ) { # Invalid country print "\t Please verify that submitted category exists for site $sSiteId.\n"; } my @aErrorParameters = $pError->getErrorParameters(); foreach my $pErrorParameter ( @aErrorParameters) { my $sParamID = $pErrorParameter->getParamID(); my $sValue = $pErrorParameter->getValue(); print "\tParamID=$sParamID, Value=$sValue\n"; } print "\n"; } } else { my $sItemId = $pCall->getItemID()->getValue(); print "sItemId=$sItemId\n"; my @aFees = $pCall->getResponseDataType()->getFees()->getFee(); foreach my $pFee (@aFees) { my $sFeeName = $pFee->getName(); my $sFeeValue = $pFee->getFee()->getValue(); my $sFeeCurrencyID = $pFee->getFee()->getCurrencyID(); if ($sFeeValue > 0 ) { print "$sFeeName = $sFeeValue ($sFeeCurrencyID)\n"; } } } sub usage { my $progname = $0; $progname =~ s,.*[\\/],,; # use basename only $progname =~ s/\.\w*$//; # strip extension, if any die <<"EOT"; Usage: $progname [-options] -t user's authToken -s siteId of site against a call is being executed -h Print this message EOT }