public function doContinue($data)
 {
     Session::set('Checkout.PaymentMethodID', $data['PaymentMethodID']);
     Session::set("Checkout.PostageID", $data["PostageID"]);
     $url = Controller::join_links(Director::absoluteBaseUrl(), Payment_Controller::config()->url_segment);
     return $this->controller->redirect($url);
 }
 /**
  * Retrieve and process order data from the request
  */
 public function callback($request)
 {
     $this->extend('onBeforeCallback');
     $data = $this->request->postVars();
     $status = "error";
     $order_id = 0;
     $payment_id = 0;
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $vars = array("SiteConfig" => SiteConfig::current_site_config(), "RedirectURL" => $error_url);
     // Check if CallBack data exists and install id matches the saved ID
     if (isset($data) && (isset($data['instId']) && isset($data['cartId']) && isset($data['transStatus']) && isset($data["callbackPW"])) && $this->payment_gateway->InstallID == $data['instId'] && $this->payment_gateway->ResponsePassword == $data["callbackPW"]) {
         $order_id = $data['cartId'];
         $payment_id = $data['transId'];
         $status = $data['transStatus'];
         if ($data['transStatus'] == 'Y') {
             $status = 'paid';
             $vars["RedirectURL"] = $success_url;
         } else {
             $status = 'failed';
         }
     } else {
         return $this->httpError(500);
     }
     $payment_data = ArrayData::array_to_object(array("OrderID" => $order_id, "PaymentProvider" => "WorldPay", "PaymentID" => $payment_id, "Status" => $status, "GatewayData" => $data));
     $this->setPaymentData($payment_data)->customise($vars);
     $this->extend('onAfterCallback');
     return $this->renderWith(array("Worldpay_callback"));
 }
 /**
  * Process the callback data from the payment provider
  */
 public function callback($request)
 {
     if (Director::isDev()) {
         $secret_key = StripePayment::config()->test_secret_key;
         $publish_key = StripePayment::config()->test_publish_key;
     } else {
         $secret_key = StripePayment::config()->live_secret_key;
         $publish_key = StripePayment::config()->live_publish_key;
     }
     Stripe::setApiKey($secret_key);
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $this->extend('onBeforeCallback');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $data = $this->request->postVars();
     $status = "error";
     // Get the credit card details submitted by the form
     $token = $data['stripeToken'];
     $order_no = Session::get("StripePayment.OrderNumber");
     $order = Estimate::get()->filter("OrderNumber", $order_no)->first();
     if ($order_no && $order) {
         // Create the charge on Stripe's servers - this will charge
         // the user's card
         try {
             $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', $order_no);
             $charge = StripeCharge::create(array("amount" => round($order->Total->Value * 100), "currency" => strtolower(Checkout::config()->currency_code), "source" => $token, "metadata" => array("Order" => $order_no)));
             $order->convertToOrder();
             $order->write();
             $order = Order::get()->byID($order->ID);
             $order->Status = "paid";
             $order->PaymentProvider = "Stripe";
             $order->PaymentNo = $charge->id;
             $order->write();
             return $this->redirect($success_url);
         } catch (Exception $e) {
             $order->Status = "failed";
             $order->write();
             return $this->redirect($error_url);
         }
     } else {
         return $this->redirect($error_url);
     }
 }
 public function index($request)
 {
     $this->extend('onBeforeIndex');
     // Setup payment gateway form
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $pw = $this->payment_gateway->SHA;
     $sha_data = "";
     // Setup the gateway URL
     if (Director::isDev()) {
         $gateway_url = "https://mdepayments.epdq.co.uk/ncol/test/orderstandard.asp";
     } else {
         $gateway_url = "https://payments.epdq.co.uk/ncol/prod/orderstandard.asp";
     }
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $template_url = Controller::join_links(Director::absoluteBaseURL(), "BarclaycardEpdqDynamicTemplate");
     // Get an array of details, so we can generate a hash and convert
     // to hidden fields
     $data = array("PSPID" => $this->payment_gateway->PSPID, "ORDERID" => $order->OrderNumber, "AMOUNT" => round($cart->TotalCost * 100), "CURRENCY" => Checkout::config()->currency_code, "LANGUAGE" => i18n::get_locale(), "CN" => $order->FirstName . " " . $order->Surname, "EMAIL" => $order->Email, "OWNERADDRESS" => $order->Address1, "OWNERTOWN" => $order->City, "OWNERZIP" => $order->PostCode, "OWNERCTY" => $order->Country, "TITLE" => $site->Title, "BGCOLOR" => $this->payment_gateway->Background, "TXTCOLOR" => $this->payment_gateway->Text, "TBLBGCOLOR" => $this->payment_gateway->TableBackground, "TBLTXTCOLOR" => $this->payment_gateway->TableText, "BUTTONBGCOLOR" => $this->payment_gateway->ButtonBackground, "BUTTONTXTCOLOR" => $this->payment_gateway->ButtonText, "ACCEPTURL" => $success_url, "DECLINEURL" => $error_url, "EXCEPTIONURL" => $error_url, "CANCELURL" => $error_url, "TP" => $template_url);
     // Account for the fact the phone number might not be set
     if ($order->PhoneNumber) {
         $data["OWNERTELNO"] = $order->PhoneNumber;
     }
     $fields = FieldList::create();
     ksort($data);
     // Generate our SHA Key and add fields
     foreach ($data as $k => $v) {
         $fields->push(HiddenField::create($k, null, $v));
         $sha_data .= sprintf("%s=%s%s", $k, $v, $pw);
     }
     $hashed_data = strtoupper(hash("sha1", $sha_data));
     // Finally add out hashed data
     $fields->push(HiddenField::create("SHASign", null, $hashed_data));
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'), FormAction::create('Submit', _t('Checkout.ConfirmPay', 'Confirm and Pay'))->addExtraClass('btn')->addExtraClass('btn-green'));
     $form = Form::create($this, 'Form', $fields, $actions)->addExtraClass('forms')->setFormMethod('POST')->setFormAction($gateway_url);
     $this->customise(array("Title" => _t('Checkout.Summary', "Summary"), "MetaTitle" => _t('Checkout.Summary', "Summary"), "Form" => $form, "Order" => $order));
     $this->extend("onAfterIndex");
     return $this->renderWith(array("BarclaysEpqd", "Payment", "Checkout", "Page"));
 }
 public function index($request)
 {
     $this->extend("onBeforeIndex");
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $key = $this->payment_gateway->ConfigKey;
     $merchant_id = Director::isDev() ? "TEST" : $this->payment_gateway->MerchantID;
     $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->payment_gateway->ID);
     $return_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $payment_details = array('username' => $this->payment_gateway->Username, 'password' => $this->payment_gateway->Password, 'biller_code' => $this->payment_gateway->BillerCode, 'merchant_id' => $merchant_id, 'receipt_address' => $order->Email, 'payment_amount' => number_format($cart->TotalCost, 2), 'payment_reference' => $order->OrderNumber, 'payment_reference_minimum_length' => 10, 'payment_reference_maximum_length' => 20, 'payment_reference_text' => _t("PayWay.PaymentReferenceText", "Order Number"), 'return_link_url' => $return_url, 'reply_link_url' => $callback_url, 'reply_link_email' => $this->payment_gateway->PaymentReplyEmail, 'reply_link_post_type' => 'extended');
     foreach ($cart->getItems() as $item) {
         $payment_details[$item->Title] = $item->Quantity . ',' . number_format($item->Price, 2);
     }
     if (!Checkout::config()->simple_checkout) {
         $payment_details[$order->PostageType] = number_format($cart->PostageCost, 2);
     }
     // Add tax (if needed) else just total
     if ($cart->TaxCost) {
         $payment_details[_t("PayWay.Tax", 'Tax')] = number_format($cart->TaxCost, 2);
     }
     // If we cannot get payway's token, generate a friendly error
     try {
         $token = $this->get_token($payment_details);
     } catch (Exception $e) {
         error_log("Exception caught: " . $e->getMessage());
         $content = "<p>";
         $content = _t("PayWay.UnableToPayContent", "Please return to the previous page and try again");
         $content = "</p>";
         $content = '<p><a href="' . $back_url . '" class="btn">Back</a></p>';
         $this->customise(array("Title" => _t("PayWay.UnableToPay", "Unable to take payment"), "MetaTitle" => _t("PayWay.UnableToPay", "Unable to take payment"), "Content" => $content));
         return $this->renderWith(array("Page"));
     }
     $hand_off_url = Controller::join_links($this->config()->gateway_url, "MakePayment");
     $hand_off_url .= "?biller_code=" . $this->payment_gateway->BillerCode;
     $hand_off_url .= "&token=" . urlencode($token);
     $this->extend('onAfterIndex');
     return $this->redirect($hand_off_url);
 }
 public function index($request)
 {
     $this->extend('onBeforeIndex');
     $site = SiteConfig::current_site_config();
     $order = $this->getOrderData();
     $cart = ShoppingCart::get();
     $key = $this->payment_gateway->ConfigKey;
     $sofort = new SofortMultipayPayment($key);
     $sofort->setAmount(number_format($cart->TotalCost, 2));
     $sofort->setCurrencyCode(Checkout::config()->currency_code);
     $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->payment_gateway->ID);
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', $order->OrderNumber);
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $back_url = Controller::join_links(Director::absoluteBaseURL(), Checkout_Controller::config()->url_segment, "finish");
     $sofort->setSuccessUrl($success_url, true);
     $sofort->setAbortUrl($error_url);
     $sofort->setNotificationUrl($callback_url);
     $desc_string = "";
     foreach ($cart->getItems() as $item) {
         $desc_string .= $item->Title . ' x ' . $item->Quantity . ', ';
     }
     $sofort->setReason($desc_string);
     $sofort->sendRequest();
     $fields = new FieldList();
     $i = 1;
     $actions = FieldList::create(LiteralField::create('BackButton', '<a href="' . $back_url . '" class="btn btn-red checkout-action-back">' . _t('Checkout.Back', 'Back') . '</a>'));
     $form = Form::create($this, 'Form', $fields, $actions)->addExtraClass('forms')->setFormMethod('GET');
     if ($sofort->getPaymentUrl()) {
         $actions->add(FormAction::create('Submit', _t('Checkout.ConfirmPay', 'Confirm and Pay'))->addExtraClass('btn')->addExtraClass('btn-green'));
         $form->setFormAction($sofort->getPaymentUrl());
         // Set the Payment No to our order data (accessable by
         // onAfterIndex)
         $order->PaymentID = $sofort->getTransactionId();
     } else {
         $actions->add(LiteralField::create('BackButton', '<strong class="error">' . _t('Sofort.TransactionError', 'Error with transaction') . '</strong>'));
     }
     $this->customise(array("Title" => _t('Checkout.Summary', "Summary"), "MetaTitle" => _t('Checkout.Summary', "Summary"), "Form" => $form, "Order" => $order));
     $this->extend("onAfterIndex");
     return $this->renderWith(array("Sofort", "Payment", "Checkout", "Page"));
 }
 public function getCMSFields()
 {
     $fields = parent::getCMSFields();
     $fields->removeByName('ParentConfigID');
     // Setup Payment Gateway type
     $payments = ClassInfo::subclassesFor('CommercePaymentMethod');
     // Remove parent class from list
     unset($payments['CommercePaymentMethod']);
     // Check if any payment types have been hidden and unset
     foreach ($payments as $payment_type) {
         if ($payment_type::$hidden) {
             unset($payments[$payment_type]);
         }
     }
     $classname_field = DropdownField::create('ClassName', 'Type of Payment', $payments)->setHasEmptyDefault(true)->setEmptyString('Select Gateway');
     $fields->addFieldToTab('Root.Main', $classname_field);
     if ($this->ID) {
         $fields->addFieldToTab("Root.Main", TextField::create('Summary', 'Summary message to appear on website'));
         $fields->addFieldToTab("Root.Main", TextField::create('URL', 'Payment gateway URL'));
         $fields->addFieldToTab("Root.Main", CheckboxField::create('Default', 'Default payment method?'));
         $fields->addFieldToTab("Root.Main", TextareaField::create('GatewayMessage', 'Message to appear when user user is directed to payment provider'));
         $fields->addFieldToTab("Root.Main", HTMLEditorField::create("PaymentInfo", "Message to appear on payment summary page"));
         // Setup response URL field
         $callback_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "callback", $this->ID);
         // Setup completed URL
         $complete_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "complete");
         // Setup error URL
         $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, "complete", "error");
         $url_field = ToggleCompositeField::create("PaymentURLS", "Payment integration URLs", FieldList::create(ReadonlyField::create('ResponseURL', 'Response URL')->setValue($callback_url), ReadonlyField::create('CompletedURL', 'Completed URL')->setValue($complete_url), ReadonlyField::create('ErrorURL', 'Error URL')->setValue($error_url)));
         $fields->addFieldToTab("Root.Main", $url_field);
     } else {
         $fields->removeByName('URL');
         $fields->removeByName('Summary');
         $fields->removeByName('Default');
         $fields->removeByName('GatewayMessage');
         $fields->removeByName('PaymentInfo');
     }
     return $fields;
 }
 /**
  * Retrieve and process order data from the request
  */
 public function callback()
 {
     $data = $this->request->postVars();
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     $vars = array("SiteConfig" => SiteConfig::current_site_config(), "RedirectURL" => $error_url);
     // Check if CallBack data exists and install id matches the saved ID
     if (isset($data) && (isset($data['instId']) && isset($data['cartId']) && isset($data['transStatus']) && isset($data["callbackPW"])) && $this->payment_gateway->InstallID == $data['instId'] && $this->payment_gateway->ResponsePassword == $data["callbackPW"]) {
         $order = Order::get()->filter('OrderNumber', $data['cartId'])->first();
         $order_status = $data['transStatus'];
         if ($order) {
             if ($order_status == 'Y') {
                 $order->Status = 'paid';
                 $vars["RedirectURL"] = $success_url;
             } else {
                 $order->Status = 'failed';
             }
             // Store all the data sent from the gateway in a json
             $order->GatewayData = json_encode($data);
             $order->write();
         }
     }
     return $this->renderWith(array("Payment_WorldPay"), $vars);
 }
 /**
  * Process the callback data from the payment provider
  */
 public function callback()
 {
     $data = $this->request->postVars();
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     // Check if CallBack data exists and install id matches the saved ID
     if (isset($data) && isset($data['custom']) && isset($data['payment_status'])) {
         $order = Order::get()->filter("OrderNumber", $data['custom'])->first();
         if ($order) {
             $request = 'cmd=_notify-validate';
             foreach ($data as $key => $value) {
                 $request .= '&' . $key . '=' . urlencode(html_entity_decode($value, ENT_QUOTES, 'UTF-8'));
             }
             if (Director::isDev()) {
                 $paypal_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
             } else {
                 $paypal_url = "https://www.paypal.com/cgi-bin/webscr";
             }
             $curl = curl_init($paypal_url);
             curl_setopt($curl, CURLOPT_POST, true);
             curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
             curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($curl, CURLOPT_HEADER, false);
             curl_setopt($curl, CURLOPT_TIMEOUT, 30);
             curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
             $response = curl_exec($curl);
             if (!$response) {
                 return false;
             }
             if ((strcmp($response, 'VERIFIED') == 0 || strcmp($response, 'UNVERIFIED') == 0) && isset($data['payment_status'])) {
                 switch ($data['payment_status']) {
                     case 'Canceled_Reversal':
                         $order->Status = "canceled";
                         break;
                     case 'Completed':
                         $order->Status = "paid";
                         break;
                     case 'Denied':
                         $order->Status = "failed";
                         break;
                     case 'Expired':
                         $order->Status = "failed";
                         break;
                     case 'Failed':
                         $order->Status = "failed";
                         break;
                     case 'Pending':
                         $order->Status = "pending";
                         break;
                     case 'Processed':
                         $order->Status = "pending";
                         break;
                     case 'Refunded':
                         $order->Status = "canceled";
                         break;
                     case 'Reversed':
                         $order->Status = "canceled";
                         break;
                     case 'Voided':
                         $order->Status = "canceled";
                         break;
                 }
             }
             curl_close($curl);
             // Store all the data sent from the gateway in a json
             $order->GatewayData = json_encode($data);
             $order->PaymentID = $data["txn_id"];
             $order->write();
         }
     }
     return array();
 }
 /**
  * Process the callback data from the payment provider
  */
 public function callback($request)
 {
     $this->extend('onBeforeCallback');
     $data = $this->request->postVars();
     $status = "error";
     $order_id = 0;
     $payment_id = 0;
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     // Check if CallBack data exists and install id matches the saved ID
     if (isset($data) && isset($data['custom']) && isset($data['payment_status'])) {
         $order_id = $data['custom'];
         $paypal_request = 'cmd=_notify-validate';
         $final_response = "";
         // If the transaction ID is set, keep it
         if (array_key_exists("txn_id", $data)) {
             $payment_id = $data["txn_id"];
         }
         $listener = new IpnListener();
         if (Director::isDev()) {
             $listener->use_sandbox = true;
         }
         try {
             $verified = $listener->processIpn();
         } catch (Exception $e) {
             error_log("Exception caught: " . $e->getMessage());
             return $this->httpError(500);
         }
         if ($verified) {
             // IPN response was "VERIFIED"
             switch ($data['payment_status']) {
                 case 'Canceled_Reversal':
                     $status = "canceled";
                     break;
                 case 'Completed':
                     $status = "paid";
                     break;
                 case 'Denied':
                     $status = "failed";
                     break;
                 case 'Expired':
                     $status = "failed";
                     break;
                 case 'Failed':
                     $status = "failed";
                     break;
                 case 'Pending':
                     $status = "pending";
                     break;
                 case 'Processed':
                     $status = "pending";
                     break;
                 case 'Refunded':
                     $status = "refunded";
                     break;
                 case 'Reversed':
                     $status = "canceled";
                     break;
                 case 'Voided':
                     $status = "canceled";
                     break;
             }
         } else {
             error_log("Invalid payment status");
             return $this->httpError(500);
         }
     } else {
         error_log("No payment details set");
         return $this->httpError(500);
     }
     $payment_data = ArrayData::array_to_object(array("OrderID" => $order_id, "PaymentProvider" => "PayPal", "PaymentID" => $payment_id, "Status" => $status, "GatewayData" => $data));
     $this->setPaymentData($payment_data);
     $this->extend('onAfterCallback');
     return $this->httpError(200);
 }
 /**
  * Retrieve and process order data from the request
  *
  * @var $data request data
  * @var $success_data initial success vars
  * @var $error_data initial success vars
  */
 public function callback()
 {
     $controller = Controller::curr();
     $data = $this->request->getVars();
     $successs_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     // Check if CallBack data exists and install id matches the saved ID
     if (isset($data) && isset($data['crypt'])) {
         // Clear Sagepay '@' symbol (denotes encrypted data)
         if (substr($data['crypt'], 0, 1) == "@") {
             $data['crypt'] = substr($data['crypt'], 1);
         }
         // Now decode the Crypt field and extract the results
         $crypt_decoded = StringDecryptor::create($data['crypt'])->setHash($this->payment_gateway->EncryptedPassword)->setEncryption('MCRYPT')->decrypt()->get();
         $values = $this->get_token($crypt_decoded);
         $order = Order::get()->filter(array('OrderNumber' => $values['VendorTxCode'], 'Status' => 'incomplete'))->first();
         $order_status = $values['Status'];
         if ($order) {
             $order->Status = $order_status == 'OK' || $order_status == 'AUTHENTICATED' ? 'paid' : 'failed';
             $order->PaymentID = $values['VPSTxId'];
             // Store all the data sent from the gateway in a json
             $order->GatewayData = json_encode($values);
             $order->write();
             if ($order_status == 'OK' || $order_status == 'AUTHENTICATED') {
                 return $controller->redirect($successs_url);
             } else {
                 return $controller->redirect($error_url);
             }
         } else {
             return $controller->redirect($error_url);
         }
     }
     return $controller->redirect($error_url);
 }
 /**
  * Retrieve and process order data from the request
  */
 public function callback()
 {
     $vars = array();
     $data = $this->request->postVars();
     $success_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete');
     $error_url = Controller::join_links(Director::absoluteBaseURL(), Payment_Controller::config()->url_segment, 'complete', 'error');
     // Check if CallBack data exists and install id matches the saved ID
     if (isset($data) && isset($data['VendorTxCode']) && isset($data['Status'])) {
         $order = Order::get()->filter(array('OrderNumber' => $data['VendorTxCode'], 'Status' => 'incomplete'))->first();
         $order_status = $data['Status'];
         if ($order && trim($order->PaymentID) == trim($data['VPSTxId'])) {
             $order->Status = $order_status == 'OK' || $order_status == 'AUTHENTICATED' ? 'paid' : 'failed';
             // Store all the data sent from the gateway in a json
             $order->GatewayData = json_encode($data);
             $order->write();
             if ($order_status == 'OK' || $order_status == 'AUTHENTICATED') {
                 $vars['Status'] = "OK";
                 $vars['StatusDetail'] = _t('Commerce.OrderComplete', "Order Complete");
                 $vars['RedirectURL'] = $success_url;
             }
         } else {
             $vars['Status'] = "INVALID";
             $vars['StatusDetail'] = _t('Commerce.OrderError', "An error occured, Order ID's do not match");
             $vars['RedirectURL'] = $error_url;
         }
     } else {
         $vars['Status'] = "ERROR";
         $vars['StatusDetail'] = _t('Commerce.OrderError', "An error occured, Order ID's do not match");
         $vars['RedirectURL'] = $error_url;
     }
     return $this->renderWith(array("Payment_SagePayServer"), $vars);
 }