Assign a variable to TransactionArray.Transaction.TransactionID where user ID =?
Hello,
I want to be able to find and assign a PHP variable to the Transaction ID where the UserID is a specified user though Ebays XML API.
Here is the structure of the replies I get from the XML API; http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/io_GetItemTransactions.html
Now, I want to assign a variable to "TransactionArray.Transaction.TransactionID" where the "TransactionArray.Transaction.Buyer.UserID" is a specified user (theventsell in this example).
I tried with this code;
<?php
require_once('functions.php');
require_once('variables.php');
error_reporting(E_ALL);
//SiteID must also be set in the Request's XML
//SiteID = 0 (US) - UK = 3, Canada = 2, Australia = 15, ....
//SiteID Indicates the eBay site to associate the call with
$siteID = 0;
//the call being made:
$verb = 'GetItemTransactions';
//Regulates versioning of the XML interface for the API
$compatabilityLevel = 433;
//get an array of strings containing the required headers
$headers = buildEbayHeaders($devID, $appID, $certID, $compatabilityLevel, $siteID, $verb);
///Build the request Xml string
$requestXmlBody = 'xml version=\"1.0\" encoding=\"utf-8\"';
$requestXmlBody .= '<GetItemTransactionsRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">';
$requestXmlBody .= \"<RequesterCredentials><eBayAuthToken>$userToken</eBayAuthToken></RequesterCredentials>\";
$requestXmlBody .= '<ItemID>110013682918</ItemID>';
$requestXmlBody .= '<ModTimeFrom>2006-12-25T18:28:52.799Z</ModTimeFrom>';
$requestXmlBody .= '<ModTimeTo>2007-01-10T18:28:52.799Z</ModTimeTo>';
$requestXmlBody .= '</GetItemTransactionsRequest>';
$responseXml = sendHttpRequest($requestXmlBody, $serverUrl, $headers);
if(stristr($responseXml, 'HTTP 404') || $responseXml == '')
die('<P>Error sending request');
//Xml string is parsed and creates a DOM Document object
$responseDoc = domxml_open_mem($responseXml);
//get any error nodes
$errors = $responseDoc->get_elements_by_tagname('Errors');
//if there are error nodes
if(count($errors) > 0)
{
echo '<P><B>eBay returned the following error(s):</B>';
//display each error
//Get error code, ShortMesaage and LongMessage
$code = $errors[0]->get_elements_by_tagname('ErrorCode');
$shortMsg = $errors[0]->get_elements_by_tagname('ShortMessage');
$longMsg = $errors[0]->get_elements_by_tagname('LongMessage');
//Display code and shortmessage
echo '<P>', $code[0]->get_content(), ' : ', str_replace(\">\", \">\", str_replace(\"<\", \"<\", $shortMsg[0]->get_content()));
//if there is a long message (ie ErrorLevel=1), display it
if(count($longMsg) > 0)
echo '<BR>', str_replace(\">\", \">\", str_replace(\"<\", \"<\", $longMsg[0]->get_content()));
}
else //no errors
{
//get results nodes
$transactionNodes = $responseDoc->get_elements_by_tagname('Transaction');
echo $transactionNodes;
//get the node containing the time and display its contents
$eBayTime = $responseDoc->get_elements_by_tagname('Transaction');
echo '<P><B>The answer is ', $eBayTime[0]->get_content(), ' GMT</B>';
}
?>
And got this when I runned it;
Array
The answer is 2.950.00.0falsenY+sHZ2PrBmdj6wVnY+sEZ2PrA2dj6wFk4CkAZKDqQydj6x9nY+seQ==oskare200@hotmail.com0falseNonetruetruefalse2006-01-01T19:59:59.000ZUSConfirmedtheventbuytrue2006-12-28T22:34:43.000ZNoVATTaxTest UseraddresscitystateNone(180) 011-1111 ext.: 1951253101053eBayfalsetrue0.0NotOfferedfalsefalse0.0falseUSPSPriority0.00.01false23Flatfalsefalse2.952.952006-12-31T11:12:49.000ZNone1NoPaymentFailureCheckoutIncomplete2006-12-31T11:12:49.000ZNoneIncompletefalse50062629452.95false0.0USPSPriority0.0eBay GMT
So it seams like what I get back is an array, the problem is that I don't know how to select and assign a variable to "TransactionArray.Transaction.TransactionID" where the "TransactionArray.Transaction.Buyer.UserID" is a specified user (theventsell in this example). Is it possible to do so and how can I do it?
If it is to any help, here is the results I get from print_r($transactionNodes);
Quote: ArrayArray ( [0] => domelement Object ( [type] => 1 [tagname] => Transaction [0] => 6 [1] => 144378264 ) [1] => domelement Object ( [type] => 1 [tagname] => Transaction [0] => 7 [1] => 143887560 ) )
Best Regards
Oskar R
oskare100 posted this at 21:17 — 1st January 2007.
They have: 6 posts
Joined: Dec 2006
Hello again,
Basicly, in other words, what I want to do is to find the "TransactionArray.Transaction.TransactionID" for the buyer "TransactionArray.Transaction.Buyer.UserID". It is just an XML response, is there really no one who can help me with this? I'm not even sure you need to know anything about XML to be able to help me, just have better knowledge of PHP than I. I really need help because the script I'm writing on wount work without this part and I can't figure out how to do it myself.
Thanks in advance,
/Oskar
JeevesBond posted this at 09:53 — 2nd January 2007.
He has: 3,956 posts
Joined: Jun 2002
Well, am no expert on the PHP XML functions but will try to help if I can.
Firstly: -
Doesn't seem to be showing the whole picture. Notice that the array elements are all [incode]domelement Object[/incode] and what is returned by the [incode]$eBayTime[0]->get_content()[/incode] function is loads more than print_r shows.
Secondly: -
Is this what was shown in your browser? My guess would be that if you look at the code of the page generated, you'll see that's XML. So hopefully you'll be able to get the userid with another [incode]get_elements_by_tagname()[/incode]
So what we need to know next is what that XML is... Hope this makes sense, and that I'm grasping what you're trying to do.
a Padded Cell our articles site!
oskare100 posted this at 12:25 — 2nd January 2007.
They have: 6 posts
Joined: Dec 2006
Hello,
I know how to just select a buyer.userid but the XML returns an array with several buyer.userids and I need to find the transactionID where the userid I have = buyer.userid. In other words, I need to get the transactionid from an auction with several buyers (in other words several transactionid's because it is one transactionid per buyer) where the buyerid = the buyerid I have.
Thanks in advance,
/Oskar
JeevesBond posted this at 08:49 — 3rd January 2007.
He has: 3,956 posts
Joined: Jun 2002
Think I understand what you need now. Try this: -
<?php
foreach ($transactionNodes as $singlenode) {
$buyerobject = $singlenode->get_elements_by_tagname(\"Buyer\");
$userid = $buyerobject[0]->get_elements_by_tagname(\"UserID\");
if ($userid[0]->getcontent() == $ourbuyerid) {
// Am assuming we know the buyer id we're looking for
// (and is stored in $ourbuyerid)
$transactionid = $buyerobject->get_elements_by_tagname(\"TransactionID\");
}
}
echo \"<p>TransactionID = $\" . $transactionid[0]->getcontent() . \"$</p>\";
?>
I have no idea whether this will work or not (probably the latter), but should point you in the right direction. From the results of [incode]print_r($transactionNodes);[/incode] in your first post am assuming $transactionNodes is an array of 'domelement' objects, and that's the array you're trying to get the Buyer information from.
Hope this helps, let us know the results either way. Sorry I can't test this at all, it would be too difficult to replicate your environment!
a Padded Cell our articles site!
Want to join the discussion? Create an account or log in if you already have one. Joining is fast, free and painless! We’ll even whisk you back here when you’ve finished.