public function show($id = null) { $cart = $this->getCart($id); foreach ($cart->items() as $item) { if ($item->paid) { $item->destroy(); } elseif (is_a($item, 'EventSignup') && $item->is_soldout()) { $item->destroy(); } elseif (is_a($item, "EventService")) { if (!$item->event_signup->paid || !$item->service->available()) { $item->destroy(); } } } if (count($cart->items(true)) == 0) { $cart->destroy(); Site::Flash("There is nothing to pay for in this cart."); Redirect("bookings"); } $cart->check_discounts(); $terms = Content::find_by_permalink("terms"); $gateway = PaymentGateway::getActive(); $this->assign('gateway', $gateway); $this->assign('baseURI', $this->getBaseURI()); $this->assign('cart', $cart); $this->assign("terms", $terms); $this->title = "My Bookings :: Payment Options"; $this->render("cart/show.tpl"); }
public function getPaymentTransaction($baseuri = null) { // Try and find a valid payment transaction for this cart $id = mysql_real_escape_string($this->id); $hash = mysql_real_escape_string($this->hash); $amount = round($this->cost(true, false) / 100, 2); $escapedAmount = mysql_real_escape_string($amount); $transaction = PaymentTransaction::find("paymenttransactions.cart_id = '{$id}' AND paymenttransactions.amount = '{$escapedAmount}' AND paymenttransactions.status IN ('ptsNew', 'ptsTaken') AND paymentgateways.enabled = 1"); if (!$transaction) { $transaction = new PaymentTransaction(); $transaction->amount = $amount; $transaction->hash = $this->hash; $transaction->cart = $this; $transaction->cart_id = $this->id; $transaction->paymentgateway = PaymentGateway::getActive(); $transaction->paymentgateway_id = $transaction->paymentgateway->id; $transaction->baseuri = $baseuri; if (!$transaction->save()) { throw new Error500('Unable to create payment transaction'); } } return $transaction; }
public function pay($id = null) { $signup = self::load_signup($id); // Check signup here if (!$signup->paid and $signup->is_soldout()) { Site::Flash("error", "The ticket you have chosen has sold out"); Redirect("bookings/{$signup->id}"); } if ($signup->event->enddate < time()) { Site::Flash("error", "This event has now finished, it is not possible to pay for your booking"); Redirect("bookings/{$signup->id}"); } $services = $signup->check_services(); $signup->event_services(); $cart = Cart::create_from_signup($signup); if ($cart) { $cart->check_discounts(); $this->assign("cart", $cart); $this->assign("signup", $signup); $this->assign("services", $services); $this->assign('eventpage', true); $terms = EventContent::find_by_permalink($signup->event, "terms"); $this->assign("terms", $terms); $gateway = PaymentGateway::getActive(); $this->assign('gateway', $gateway); $this->assign('baseURI', $this->getBaseURI()); $this->title = "My Bookings :: {$signup->event->name} :: Pay"; $this->render("event_signup/pay.tpl"); } else { Site::Flash("error", "There is nothing to pay for in this booking"); Redirect("bookings/{$signup->id}"); } }