/** * Action card page for direct payment */ public function actionCard() { $message = ''; // Check if form was submitted if (count(filter_input_array(INPUT_POST))) { $useToken = filter_input(INPUT_POST, 'useToken'); $giftAid = filter_input(INPUT_POST, 'giftAid'); $card = array('cardType' => filter_input(INPUT_POST, 'cardType'), 'cardNumber' => filter_input(INPUT_POST, 'cardNumber'), 'cardHolder' => filter_input(INPUT_POST, 'cardHolder'), 'startDate' => filter_input(INPUT_POST, 'startDate'), 'expiryDate' => filter_input(INPUT_POST, 'expiryDate'), 'cv2' => filter_input(INPUT_POST, 'cv2'), 'giftAid' => !!$giftAid); $cardDetails = new SagepayCardDetails(); $this->_populateCardDetails($cardDetails, $card); // Check cardType if ($card['cardType'] == 'PAYPAL') { $errors = array(); } else { $errors = $cardDetails->validate(); } $hMessage = new HelperMessage(); $message = $hMessage->getAllMessages($errors, array('cardNumber' => 'Card Number', 'cardHolder' => 'Card Holder Name', 'startDate' => 'Start Date', 'expiryDate' => 'Expiry Date', 'cv2' => 'Card Verification Value')); // Check if card data was failed if ($errors) { $this->error = true; $message = "Sorry, the following problems were found: " . $message; } else { if ($useToken) { $account = HelperCommon::getStore('account'); $sagepayToken = new SagepayToken($this->sagepayConfig); $token = $sagepayToken->register($card); if (!$token) { $this->helperError('Card Details are invalid ', url(array('direct', 'card'))); exit; } ModelAbstract::factory('Card')->insert(array('last4digits' => SagepayUtil::getLast4Digits(filter_input(INPUT_POST, 'cardNumber')), 'token' => $token, 'customer_id' => $account['id'])); $account['token'] = $token; HelperCommon::setStore('account', $account); $card = array('cardType' => '', 'cardNumber' => '', 'cardHolder' => '', 'startDate' => '', 'expiryDate' => '', 'cv2' => filter_input(INPUT_POST, 'cv2'), 'giftAid' => $giftAid); } HelperCommon::setStore('card', $card); $this->redirect('direct', 'confirm'); } } // render view card $view = new HelperView('direct/card'); $view->setData(array('env' => $this->sagepayConfig->getEnv(), 'vendorName' => $this->sagepayConfig->getVendorName(), 'integrationType' => $this->integrationType, 'error' => $this->error, 'message' => $message, 'allowGiftAid' => $this->sagepayConfig->getAllowGiftAid())); $view->render(); }