/library/Ecart/Method/Payment/Model/Card/Abstract.php
https://code.google.com/p/ecartcommerce/ · PHP · 149 lines · 78 code · 10 blank · 61 comment · 8 complexity · caa82c1987bfd8acfa45fdfcfa0e6538 MD5 · raw file
- <?php
- /**
- * Ecart
- *
- * This file is part of Ecart.
- *
- * Ecart is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Ecart is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Ecart. If not, see <http://www.gnu.org/licenses/>.
- *
- * @category Ecart
- * @package Ecart_Checkout
- * @copyright Copyright 2008-2009 E-Cart LLC
- * @license GNU Public License V3.0
- */
- /**
- *
- * @category Ecart
- * @package Ecart_Checkout
- * @subpackage Method
- * @author Ecart Core Team <core@ecartcommerce.com>
- * @abstract
- */
- abstract class Ecart_Method_Payment_Model_Card_Abstract extends Ecart_Method_Payment_Model_Abstract
- {
- /**
- * Save credit card object and custom attributes
- * @see (form.phtml, setPaymentAction)
- * @return bool
- * @param array $data
- */
- public function saveData($data)
- {
- $is_valid = true;
- if (isset($data[$this->_code . '-CcNumber'])) {
- $is_valid = $this->setCreditCard(
- $data[$this->_code . '-CcType'],
- $data[$this->_code . '-CcOwner'],
- $data[$this->_code . '-CcNumber'],
- $data[$this->_code . '-CcExpiresYear'],
- $data[$this->_code . '-CcExpiresMonth'],
- isset($data[$this->_code . '-CcCvv']) ? $data[$this->_code . '-CcCvv'] : null
- );
- unset($data[$this->_code . '-CcType']);
- unset($data[$this->_code . '-CcOwner']);
- unset($data[$this->_code . '-CcNumber']);
- unset($data[$this->_code . '-CcExpiresYear']);
- unset($data[$this->_code . '-CcExpiresMonth']);
- unset($data[$this->_code . '-CcCvv']);
- }
- return $is_valid ? parent::saveData($data) : false;
- }
-
- /**
- * Set payment storage credit card attributes
- * @return bool
- * @param string $ccType
- * @param string $ccOwner
- * @param string $ccNumber
- * @param string $ccExpiresYear
- * @param string $ccExpiresMonth
- * @param string $ccCvv
- * @param string $cc_issue_year[optional]
- * @param string $cc_expires_month[optional]
- */
- public function setCreditCard($ccType, $ccOwner, $ccNumber, $ccExpiresYear,
- $ccExpiresMonth, $ccCvv, $ccIssueYear = null, $ccIssueMonth = null)
- {
- if (empty($ccType) || empty($ccNumber)
- || empty($ccExpiresYear) || empty($ccExpiresMonth) ) {
-
- Ecart::message()->addError(
- Ecart::translate('checkout')->__(
- 'Set full Credit Card Information'
- ));
- return false;
- }
-
- $validator = new Zend_Validate_CreditCard();
- $allowedCcTypes = $this->getCCTypes();
- $validator->setType($allowedCcTypes);
-
- if (!$validator->isValid($ccNumber)) {
- foreach ($validator->getMessages() as $message) {
- Ecart::message()->addError($message);
- }
- return false;
- }
-
- return $this->getCreditCard()
- ->setCcType($ccType)
- ->setCcOwner($ccOwner)
- ->setCcNumber($ccNumber)
- ->setCcExpiresYear($ccExpiresYear)
- ->setCcExpiresMonth($ccExpiresMonth)
- ->setCcIssueYear($ccIssueYear)
- ->setCcIssueMonth($ccIssueMonth)
- ->setCcCvv($ccCvv) instanceof Ecart_CreditCard;
- }
-
- /**
- * Retruns Payment Credit Card object
- * @return Ecart_CreditCard
- */
- public function getCreditCard()
- {
- if (!$this->hasCreditCard()) {
- $this->getStorage()->cc = new Ecart_CreditCard();
- }
- return $this->getStorage()->cc;
- }
-
- /**
- * Checks is CreditCard object was created
- * @return boolean
- */
- public function hasCreditCard()
- {
- return $this->getStorage()->cc instanceof Ecart_CreditCard;
- }
-
- /**
- * Returns allowed credit cards types
- * @return array
- */
- public function getCCTypes()
- {
- $usedTypes = $this->_config->creditCard->toArray();
- $allTypes = Ecart_Collect_CreditCard::collect();
- $ret = array();
- foreach ($allTypes as $typeKey => $typeName) {
- if (in_array($typeKey, $usedTypes)) {
- $ret[$typeKey] = $typeName;
- }
- }
- return $ret;
- }
- }