/** * Manages the 'return' and 'cancel' replies */ function complete() { $this->extend("EwayPayment_Handler_completion_start"); if (isset($_REQUEST['code']) && ($code = $_REQUEST['code'])) { $params = explode('-', $code); if (count($params) == 2) { $payment = EwayPayment::get()->byID(intval($params[0])); if ($payment && $payment->AuthorisationCode == $params[1]) { if (isset($_REQUEST['AccessPaymentCode'])) { $url = $payment->EwayConfirmationURL($_REQUEST['AccessPaymentCode']); $response = file_get_contents($url); if ($response) { $response = Convert::xml2array($response); if (isset($response['ResponseCode']) && $response['ResponseCode'] == '00') { $payment->Status = 'Success'; } else { $payment->Status = 'Failure'; } } else { $payment->Status = 'Failure'; } $payment->write(); $payment->redirectToOrder(); } } } } }