public static function ParseFromXml($xmlString) { if (is_null($xmlString)) { return null; } if (is_string($xmlString) == false) { return null; } StatusNotification::AutoSaveRequestResponseData($xmlString); $xml = simplexml_load_string($xmlString); // Cria o objeto do Xml $xml->AmountPaidInCents = null; $statusNotification = new StatusNotification(); $statusNotification->AmountInCents = (int) $xml->AmountInCents; if (isset($xml->AmountPaidInCents) && (string) $xml->AmountPaidInCents != '') { $statusNotification->AmountPaidInCents = (int) $xml->AmountPaidInCents; } if (isset($xml->OrderKey) && (string) $xml->OrderKey != '') { $statusNotification->OrderKey = (string) $xml->OrderKey; } $statusNotification->OrderReference = (string) $xml->OrderReference; $statusNotification->OrderStatus = (string) $xml->OrderStatus; if (isset($xml->BoletoTransaction)) { $xmlBoleto = $xml->BoletoTransaction; $boletoTrans = null; if (!StatusNotification::IsNullOrEmptyXml($xmlBoleto)) { $boletoTrans = new BoletoTransactionNotification(); $boletoTrans->AmountInCents = (int) $xmlBoleto->AmountInCents; if (isset($xmlBoleto->AmountPaidInCents) && !StatusNotification::IsNullOrEmptyXml($xmlBoleto->AmountPaidInCents)) { $boletoTrans->AmountPaidInCents = (int) $xmlBoleto->AmountPaidInCents; } $boletoTrans->BoletoExpirationDate = (string) $xmlBoleto->BoletoExpirationDate; $boletoTrans->NossoNumero = (string) $xmlBoleto->NossoNumero; $boletoTrans->StatusChangedDate = (string) $xmlBoleto->StatusChangedDate; if (isset($xmlBoleto->TransactionKey) && !StatusNotification::IsNullOrEmptyXml($xmlBoleto->TransactionKey)) { $boletoTrans->TransactionKey = (string) $xmlBoleto->TransactionKey; } $boletoTrans->TransactionReference = (string) $xmlBoleto->TransactionReference; $boletoTrans->PreviousBoletoTransactionStatus = (string) $xmlBoleto->PreviousBoletoTransactionStatus; $boletoTrans->BoletoTransactionStatus = (string) $xmlBoleto->BoletoTransactionStatus; } $statusNotification->BoletoTransaction = $boletoTrans; } if (isset($xml->CreditCardTransaction)) { $xmlCC = $xml->CreditCardTransaction; $ccTrans = null; if (!StatusNotification::IsNullOrEmptyXml($xmlCC)) { $ccTrans = new CreditCardTransactionNotification(); $ccTrans->Acquirer = (string) $xmlCC->Acquirer; if (isset($xmlCC->AmountInCents) && !StatusNotification::IsNullOrEmptyXml($xmlCC->AmountInCents)) { $ccTrans->AmountInCents = (int) $xmlCC->AmountInCents; } if (isset($xmlCC->AuthorizedAmountInCents) && !StatusNotification::IsNullOrEmptyXml($xmlCC->AuthorizedAmountInCents)) { $ccTrans->AuthorizedAmountInCents = (int) $xmlCC->AuthorizedAmountInCents; } if (isset($xmlCC->CapturedAmountInCents) && !StatusNotification::IsNullOrEmptyXml($xmlCC->CapturedAmountInCents)) { $ccTrans->CapturedAmountInCents = (int) $xmlCC->CapturedAmountInCents; } $ccTrans->CreditCardBrand = (string) $xmlCC->CreditCardBrand; if (isset($xmlCC->RefundedAmountInCents) && !StatusNotification::IsNullOrEmptyXml($xmlCC->RefundedAmountInCents)) { $ccTrans->RefundedAmountInCents = (int) $xmlCC->RefundedAmountInCents; } $ccTrans->StatusChangedDate = (string) $xmlCC->StatusChangedDate; $ccTrans->TransactionIdentifier = (string) $xmlCC->TransactionIdentifier; $ccTrans->TransactionKey = (string) $xmlCC->TransactionKey; $ccTrans->TransactionReference = (string) $xmlCC->TransactionReference; $ccTrans->UniqueSequentialNumber = (string) $xmlCC->UniqueSequentialNumber; if (isset($xmlCC->VoidedAmountInCents) && !StatusNotification::IsNullOrEmptyXml($xmlCC->VoidedAmountInCents)) { $ccTrans->VoidedAmountInCents = (int) $xmlCC->VoidedAmountInCents; } $ccTrans->PreviousCreditCardTransactionStatus = (string) $xmlCC->PreviousCreditCardTransactionStatus; $ccTrans->CreditCardTransactionStatus = (string) $xmlCC->CreditCardTransactionStatus; } $statusNotification->CreditCardTransaction = $ccTrans; } if (isset($xml->OnlineDebitTransaction)) { $xmlOnlineDebit = $xml->OnlineDebitTransaction; $onlineDebitTrans = null; if (!StatusNotification::IsNullOrEmptyXml($xmlOnlineDebit)) { $onlineDebitTrans = new OnlineDebitTransactionNotification(); if (isset($xmlOnlineDebit->AmountInCents) && !StatusNotification::IsNullOrEmptyXml($xmlOnlineDebit->AmountInCents)) { $onlineDebitTrans->AmountInCents = (int) $xmlOnlineDebit->AmountInCents; } if (isset($xmlOnlineDebit->AmountPaidInCents) && !StatusNotification::IsNullOrEmptyXml($xmlOnlineDebit->AmountPaidInCents)) { $onlineDebitTrans->AmountPaidInCents = (int) $xmlOnlineDebit->AmountPaidInCents; } $onlineDebitTrans->StatusChangedDate = (string) $xmlOnlineDebit->StatusChangedDate; $onlineDebitTrans->TransactionKey = (string) $xmlOnlineDebit->TransactionKey; $onlineDebitTrans->TransactionReference = (string) $xmlOnlineDebit->TransactionReference; $onlineDebitTrans->PreviousOnlineDebitTransactionStatus = (string) $xmlOnlineDebit->PreviousCreditCardTransactionStatus; $onlineDebitTrans->OnlineDebitTransactionStatus = (string) $xmlOnlineDebit->CreditCardTransactionStatus; } $statusNotification->OnlineDebitTransaction = $onlineDebitTrans; } return $statusNotification; }