/**
  * Validate and data and set form errors accordingly.
  */
 public function validateValues(array &$element, array &$data)
 {
     $data['credit_card_number'] = preg_replace('/\\s+/', '', $data['credit_card_number']);
     require_once dirname(__FILE__) . '/../creditcard_validation.inc.php';
     $credit_card_validator = new \CreditCardValidator();
     $validation_result = $credit_card_validator->isValidCreditCard($data['credit_card_number'], '', TRUE);
     if (!$validation_result->valid) {
         $this->formError($element['credit_card_number'], t('%card is not a valid credit card number.', array('%card' => $data['credit_card_number'])));
     } elseif ($validation_result->issuer != $data['issuer']) {
         $this->formError($element['credit_card_number'], t('Credit card number %card doesn\'t appear to be from issuer %issuer.', array('%card' => $data['credit_card_number'], '%issuer' => self::$issuers[$data['issuer']])));
     }
     // Validate secure code (CVC).
     if (!$credit_card_validator->isValidCardValidationCode($data['secure_code'], $data['issuer'])) {
         $msg = t('The %secure_code_label %code is not valid.', array('%card' => $data['secure_code'], '%secure_code_label' => self::$cvc_label[$data['issuer']]));
         $this->formError($element['secure_code'], $msg);
     }
     // Validate expiry date.
     if ($data['expiry_date'] = $this->parseDate($data['expiry_date'])) {
         if ($data['expiry_date']->getTimestamp() < time()) {
             $this->formError($element['expiry_date'], t('The credit card has expired.'));
         }
     } else {
         $this->formError($element['expiry_date'], t('Please enter a valid expiration date'));
     }
 }
 /**
  * Retorna el la franquicia a la que pertenece un numero de TC
  */
 public function getFranquicia($cart_number, $pasarela)
 {
     require_once _PS_MODULE_DIR_ . 'payulatam/creditcards.class.php';
     $arraypaymentMethod = array("VISA" => 'VISA', 'DISCOVER' => 'DINERS', 'AMERICAN EXPRESS' => 'AMEX', 'MASTERCARD' => 'MASTERCARD');
     $arraypaymentMethod2 = array("VISA" => 'VISA', 'DISCOVER' => 'DINERS', 'AMERICAN EXPRESS' => 'AmEx', 'MASTERCARD' => 'MasterCard', 'DinersClub' => 'DinersClub', 'UnionPay' => 'UnionPay');
     $CCV = new CreditCardValidator();
     $CCV->Validate($cart_number);
     $key = $CCV->GetCardName($CCV->GetCardInfo()['type']);
     if ($CCV->GetCardInfo()['status'] == 'invalid') {
         return json_encode(array('ERROR' => 'El numero de la tarjeta no es valido.'));
     }
     switch ($pasarela) {
         case 'payulatam':
             return array_key_exists(strtoupper($key), $arraypaymentMethod) ? $arraypaymentMethod[strtoupper($key)] : 'N/A';
             break;
         default:
             return array_key_exists(strtoupper($key), $arraypaymentMethod2[strtoupper($key)]) ? $arraypaymentMethod2[strtoupper($key)] : 'N/A';
             break;
     }
 }