public function parse($rawData)
{
try {
$xml = new SimpleXMLElement($rawData);
} catch (Exception $e) {
throw new BadResponseError('Unexpected response received from provider. Response: ' . $rawData);
}
$code = (string) $xml->STATUS;
$message = (string) $xml->MESSAGE;
$points = $xml->POINTS ? (int) $xml->POINTS : false;
$amount = $xml->AMOUNT ? (double) $xml->AMOUNT : false;
$currency = $xml->CURRENCY ? (string) $xml->CURRENCY : false;
$bank = $xml->BANK ? (string) $xml->BANK : false;
$cardProgramName = $xml->CARD_PROGRAM_NAME ? (string) $xml->CARD_PROGRAM_NAME : false;
switch ($code) {
case 'SUCCESS':
$status = ResponseAbstract::STATUS_APPROVED;
break;
case 'INPUT_ERROR':
$status = ResponseAbstract::STATUS_INPUT_ERROR;
break;
case 'FAILED':
default:
$status = ResponseAbstract::STATUS_FAILED;
break;
}
return new LoyaltyInquiryResponse($status, $code, $message, $points, $amount, $currency, $bank, $cardProgramName);
}