public function submit() { $data = $this->post(); //process payment $pmHandle = $data['payment-method']; $pm = StorePaymentMethod::getByHandle($pmHandle); if ($pm === false) { //There was no payment method enabled somehow. //so we'll force invoice. $pm = StorePaymentMethod::getByHandle('invoice'); } if ($pm->getMethodController()->external == true) { $pmsess = Session::get('paymentMethod'); $pmsess[$pm->getPaymentMethodID()] = $data['payment-method']; Session::set('paymentMethod', $pmsess); $order = StoreOrder::add($data, $pm, null, 'incomplete'); Session::set('orderID', $order->getOrderID()); $this->redirect('/checkout/external'); } else { $payment = $pm->submitPayment(); if ($payment['error'] == 1) { $pmsess = Session::get('paymentMethod'); $pmsess[$pm->getPaymentMethodID()] = $data['payment-method']; Session::set('paymentMethod', $pmsess); $errors = $payment['errorMessage']; Session::set('paymentErrors', $errors); $customer = new StoreCustomer(); if ($customer->isGuest()) { $this->redirect("/checkout/?guest=1#payment"); } else { $this->redirect("/checkout/failed#payment"); } } else { $transactionReference = $payment['transactionReference']; StoreOrder::add($data, $pm, $transactionReference); $this->redirect('/checkout/complete'); } } }