credit_card.php

来自「this the oscommerce 3.0 aplha 4」· PHP 代码 · 共 187 行

PHP
187
字号
<?php/*  $Id: $  osCommerce, Open Source E-Commerce Solutions  http://www.oscommerce.com  Copyright (c) 2006 osCommerce  This program is free software; you can redistribute it and/or modify  it under the terms of the GNU General Public License v2 (1991)  as published by the Free Software Foundation.*/  class osC_CreditCard {/* Private variables */    var $_owner,        $_number,        $_expiry_month,        $_expiry_year,        $_cvc,        $_type,        $_data;/* Class constructor */    function osC_CreditCard($number = '', $exp_month = '', $exp_year = '') {      global $osC_Database;      if (empty($number) === false) {        $this->_number = ereg_replace('[^0-9]', '', $number);        $this->_expiry_month = (int)$exp_month;        $this->_expiry_year = (int)$exp_year;      }      $this->_data = array();      $Qcc = $osC_Database->query('select id, credit_card_name as title, pattern from :table_credit_cards where credit_card_status = "1" order by sort_order, credit_card_name');      $Qcc->bindTable(':table_credit_cards', TABLE_CREDIT_CARDS);//      $Qcc->setCache('credit_cards');      $Qcc->execute();      while ($Qcc->next()) {        $this->_data[$Qcc->valueInt('id')] = $Qcc->toArray();      }    }/* Public variables */    function isValid($valid_cc_types = '') {      if (CFG_CREDIT_CARDS_VERIFY_WITH_REGEXP == '1') {        if ($this->hasValidNumber() === false) {          return -1;        }        if ($this->isAccepted($valid_cc_types) === false) {          return -5;        }      }      if ($this->hasValidExpiryDate() === false) {        return -2;      }      if ($this->hasExpired() === true) {        return -3;      }      if ($this->hasOwner() && ($this->hasValidOwner() === false)) {        return -4;      }      return true;    }    function hasValidNumber() {      if ( (empty($this->_number) === false) && (strlen($this->_number) >= CC_NUMBER_MIN_LENGTH) ) {        $cardNumber = strrev($this->_number);        $numSum = 0;        for ($i=0, $n=strlen($cardNumber); $i<$n; $i++) {          $currentNum = substr($cardNumber, $i, 1);// Double every second digit          if ($i % 2 == 1) {            $currentNum *= 2;          }// Add digits of 2-digit numbers together          if ($currentNum > 9) {            $firstNum = $currentNum % 10;            $secondNum = ($currentNum - $firstNum) / 10;            $currentNum = $firstNum + $secondNum;          }          $numSum += $currentNum;        }// If the total has no remainder it's OK        return ($numSum % 10 == 0);      }      return false;    }    function isAccepted($valid_cc_types) {      if ( (empty($valid_cc_types) === false) && (empty($this->_number) === false) && (strlen($this->_number) >= CC_NUMBER_MIN_LENGTH) ) {        if (is_array($valid_cc_types) === false) {          $valid_cc_types = explode(',', $valid_cc_types);        }        foreach ($this->_data as $data) {          if (in_array($data['id'], $valid_cc_types)) {            if (preg_match($data['pattern'], $this->_number) === 1) {              $this->_type = $data['title'];              return true;            }          }        }      }      return false;    }    function hasValidExpiryDate() {      $year = date('Y');      return ( ($this->_expiry_month > 0) && ($this->_expiry_month < 13) && ($this->_expiry_year >= $year) && ($this->_expiry_year <= ($year+10)) );    }    function hasExpired() {      return ( ($this->_expiry_year <= date('Y')) && ($this->_expiry_month < date('n')) );    }    function hasOwner() {      return (isset($this->_owner));    }    function hasValidOwner() {      return ( (empty($this->_owner) === false) && (strlen($this->_owner) >= CC_OWNER_MIN_LENGTH) );    }    function typeExists($id) {      return isset($this->_data[$id]);    }    function getNumber() {      return $this->_number;    }    function getSafeNumber() {      return str_repeat('X', strlen($this->_number)-4) . substr($this->_number, -4);    }    function getExpiryMonth() {      return str_pad($this->_expiry_month, 2, '0', STR_PAD_LEFT);    }    function getExpiryYear() {      return $this->_expiry_year;    }    function getCVC() {      return $this->_cvc;    }    function getOwner() {      return $this->_owner;    }    function getTypePattern($id) {      return $this->_data[$id]['pattern'];    }    function setOwner($name) {      $this->_owner = trim($name);    }    function setCVC($cvc) {      $this->_cvc = trim($cvc);    }  }?>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?