Reputation: 6027
For the life of me I can't figure out why I can't access any of the properties (or even figure out what they are) in this soap packet. I can't use anything that Mercury is returning to me. I have read through several other similar questions with no luck. I am sure this is just a product of my ignorance, but any help would be way appreciated.
$transactionInfo = new MercuryPaymentHandler($paymentID);
$returnValue = $transactionInfo->verifyPayment();
$xml = new SimpleXMLElement($returnValue);
var_dump(get_object_vars($xml));
returns:
array(0) { }
But this:
$transactionInfo = new MercuryPaymentHandler($paymentID);
$returnValue = $transactionInfo->verifyPayment();
$xml = new SimpleXMLElement($returnValue);
echo $xml->asXML();
returns:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<VerifyPaymentResponse xmlns="http://www.mercurypay.com/">
<VerifyPaymentResult>
<ResponseCode>0</ResponseCode>
<Status>Approved</Status>
<StatusMessage>AP</StatusMessage>
<DisplayMessage>Your transaction has been approved.</DisplayMessage>
<AvsResult/>
<CvvResult>M</CvvResult>
<AuthCode>000027</AuthCode>
<Token>ItIu8ayb9ZyMcBjHUkyHS0krnFVf6esnfs6tULuAo2giERIQACMQAgyc</Token>
<RefNo>0028</RefNo>
<Invoice>48</Invoice>
<AcqRefData>KbMCC2110080622 </AcqRefData>
<CardType>M/C</CardType><MaskedAccount>xxxxxxxx6781</MaskedAccount>
<Amount>7</Amount>
<TaxAmount>0</TaxAmount>
<TransPostTime>2012-06-22T21:10:08.65</TransPostTime>
<CardholderName>Test-User</CardholderName>
<AVSAddress/>
<AVSZip/>
<TranType>Sale</TranType>
<PaymentIDExpired>true</PaymentIDExpired>
<CustomerCode/>
<Memo>Mighty Wash 2.0</Memo>
<AuthAmount>7</AuthAmount>
<VoiceAuthCode/>
<ProcessData>|00|600550672000</ProcessData>
<OperatorID/>
<TerminalName/>
</VerifyPaymentResult>
</VerifyPaymentResponse>
</soap:Body>
</soap:Envelope>
What gives?
Update
I never figured this out using PHPs native class, but it was way easy with CakePHPs XML class.
Upvotes: 0
Views: 142
Reputation:
Upvotes: 1
Reputation: 8264
The problem is that, internally, SimpleXMLElement
is not stored as a trivial object. Basically, you have to know what properties to access and it composes the result on the fly from its internal structures. In your case, you could use something like this: http://php.net/manual/en/simplexmlelement.xpath.php (see the examples) to extract data efficiently. Also, to strictly answer your question, here is what you could use: http://www.php.net/manual/en/simplexmlelement.attributes.php
Upvotes: 1