0byt3m1n1-V2
Path:
/
home
/
academiac
/
www
/
administrator
/
components
/
com_virtuemart
/
helpers
/
[
Home
]
File: creditcard.php
<?php /** * * Data module for shop credit cards * * @package VirtueMart * @subpackage CreditCard * @author RickG * @author Valerie Isaksen * @link http://www.virtuemart.net * @copyright Copyright (c) 2004 - 2010 VirtueMart Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php * VirtueMart is free software. This version may have been modified pursuant * to the GNU General Public License, and as distributed it includes or * is derivative of works licensed under the GNU General Public License or * other free or open source software licenses. * @version $Id: creditcard.php 6350 2012-08-14 17:18:08Z Milbo $ */ // Check to ensure this file is included in Joomla! defined('_JEXEC') or die('Restricted access'); if (!class_exists('VmModel')) require(JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'vmmodel.php'); /** * Model class for shop credit cards * * @package VirtueMart * @subpackage CreditCard * @author RickG * @author Valérie Isakesn */ class Creditcard { /** * Validates the Payment Method (Credit Card Number) * Adapted From CreditCard Class * Copyright (C) 2002 Daniel Fr�z Costa * * Documentation: * * Card Type Prefix Length Check digit * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * MasterCard 51-55 16 mod 10 * Visa 4 13, 16 mod 10 * AMEX 34, 37 15 mod 10 * Dinners Club/Carte Blanche 300-305, 36, 38 14 mod 10 * Discover 6011 16 mod 10 * enRoute 2014, 2149 15 any * JCB 3 16 mod 10 * JCB 2131, 1800 15 mod 10 * * More references: * http://www.beachnet.com/~hstiles/cardtype.hthml. * http://www.braemoor.co.uk/software/creditcard.shtml * http://en.wikipedia.org/wiki/Credit_card_number * * @param string $creditcard_code * @param string $cardnum * @return boolean */ function validate_credit_card_number($creditcard_code, $cardnum) { $this->number = self::_strtonum($cardnum); /* if(!$this->detectType($this->number)) { $this->errno = CC_ETYPE; $d['error'] = $this->errno; return false; } */ if (empty($this->number) || !self::mod10($this->number)) { //JError::raiseWarning('', JText::_('COM_VIRTUEMART_CC_ENUMBER')); // $this->errno = CC_ENUMBER; // $d['error'] = $this->errno; return false; } return true; } /* * _strtonum private method * return formated string - only digits */ function _strtonum($string) { $nstr = ""; for ($i = 0; $i < strlen($string); $i++) { if (!is_numeric($string{$i})) continue; $nstr = "$nstr" . $string{$i}; } return $nstr; } /* * mod10 method - Luhn check digit algorithm * return 0 if true and !0 if false */ function mod10($card_number) { $digit_array = array(); $cnt = 0; //Reverse the card number $card_temp = strrev($card_number); //Multiple every other number by 2 then ( even placement ) //Add the digits and place in an array for ($i = 1; $i <= strlen($card_temp) - 1; $i = $i + 2) { //multiply every other digit by 2 $t = substr($card_temp, $i, 1); $t = $t * 2; //if there are more than one digit in the //result of multipling by two ex: 7 * 2 = 14 //then add the two digits together ex: 1 + 4 = 5 if (strlen($t) > 1) { //add the digits together $tmp = 0; //loop through the digits that resulted of //the multiplication by two above and add them //together for ($s = 0; $s < strlen($t); $s++) { $tmp = substr($t, $s, 1) + $tmp; } } else { // result of (* 2) is only one digit long $tmp = $t; } //place the result in an array for later //adding to the odd digits in the credit card number $digit_array [$cnt++] = $tmp; } $tmp = 0; //Add the numbers not doubled earlier ( odd placement ) for ($i = 0; $i <= strlen($card_temp); $i = $i + 2) { $tmp = substr($card_temp, $i, 1) + $tmp; } //Add the earlier doubled and digit-added numbers to the result $result = $tmp + array_sum($digit_array); //Check to make sure that the remainder //of dividing by 10 is 0 by using the modulas //operator return ($result % 10 == 0); } /* * validate_credit_card_cvv * The three- or four-digit number on the back of a credit card (on the front for American Express). * @author Valerie Isaksen */ static function validate_credit_card_cvv($creditcard_type, $cvv, $required = true) { if ($required and empty($cvv)) return false; return true; } /* * validate_credit_card_date * expiration date should be tested * @author Valerie Isaksen */ function validate_credit_card_date($creditcard_type, $month, $year) { return true; } } // pure php no closing tag
©
2018.