Exemplo n.º 1
0
 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');
         }
     }
 }