I am trying to get some data from a GoogleCheckout response. I am using a SimpleXmlElement and xpath to search for the data. One of the problems is that the response from xpath is an array of SimpleXmlElements - all I want is the string data. The other is that the response may contain multilpe instances of the TAG name - for example, <email> is shown at least twice but I only want a singe result.
Here is what I have so far
$notifyData = array(); $notifyData['buyerEmail'] = $data->xpath('buyer-billing-address//email')[0]; $notifyData['buyerName'] = $data->xpath('buyer-billing-address//contact-name'); $notifyData['transactionId'] = $data->xpath('/new-order-notification/google-order-number'); $notifyData['itemName'] = $data->xpath('//item-name'); $notifyData['amount'] = $data->xpath('//unit-price'); $notifyData['currency'] = $notifyData['amount'][0]['currency'];//$data->xpath('//@currency[1]'); here is the response from print_r() on $notifyData
Array ( [buyerEmail] => Array ( [0] => SimpleXMLElement Object ( [0] => [email protected] ) ) [buyerName] => Array ( [0] => SimpleXMLElement Object ( [0] => Mr Sandbox Buyer ) ) [transactionId] => Array ( [0] => SimpleXMLElement Object ( [0] => 271578474675716 ) ) [itemName] => Array ( [0] => SimpleXMLElement Object ( [0] => My Item ) ) [amount] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [currency] => USD ) [0] => 3.99 ) ) [currency] => SimpleXMLElement Object ( [0] => USD ) ) What i want is for the data to show like this after print_r()
Array ( [buyerEmail] => [email protected] ... [currency] => USD Here is an example of an xml response
<new-order-notification xmlns="http://checkout.google.com/schema/2" serial-number="654578974677716-00001-7"> <buyer-billing-address> <address1>19 sandbox st</address1> <address2></address2> <phone></phone> <email>[email protected]</email> <company-name></company-name> <contact-name>Mr Sandbox Buyer</contact-name> <fax></fax> <country-code>AU</country-code> <city>Buyers Town</city> <region>VIC</region> <postal-code>3460</postal-code> </buyer-billing-address> <timestamp>2010-10-24T04:25:41.723Z</timestamp> <google-order-number>298578974677716</google-order-number> <shopping-cart> <items> <item> <digital-content> <key is-encrypted="true">PWWoqHo+FtfTi5vHmquOFTFNb4DwNjInAxkW89PLxtU=</key> <description>Follow the instructions</description> <url>http://mysite.com</url> </digital-content> <item-name>my product</item-name> <item-description>my product</item-description> <unit-price currency="USD">3.99</unit-price> <quantity>1</quantity> </item> </items> </shopping-cart> <order-adjustment> <merchant-codes /> <total-tax currency="USD">0.0</total-tax> <adjustment-total currency="USD">0.0</adjustment-total> </order-adjustment> <buyer-id>634168749882822</buyer-id> <buyer-marketing-preferences> <email-allowed>true</email-allowed> </buyer-marketing-preferences> <buyer-shipping-address> <address1>19 sandbox st</address1> <address2></address2> <phone></phone> <email>[email protected]</email> <company-name></company-name> <contact-name>Mr Sandbox Buyer</contact-name> <fax></fax> <country-code>AU</country-code> <city>Buyers Town</city> <region>VIC</region> <postal-code>3460</postal-code> </buyer-shipping-address> <order-total currency="USD">3.99</order-total> <fulfillment-order-state>NEW</fulfillment-order-state> <financial-order-state>REVIEWING</financial-order-state> </new-order-notification>