اعتبارسنج کارت اعتباری خارجی

اعتبارسنج کارت اعتباری / Credit Card Validator
Credit Card Validator | PHP Class | 1.91 KB | By Corban Works
همه‌ی کارت‌های معتبر خارجی همواره با اعداد خاصی شروع می‌شوند . یکی از مهترین بخش‌های درگاه پرداخت، بررسی معتبر بودن شماره‌ی کارت‌ها می‌باشد. Corban Works، کلاسی را به زبان PHP نوشته است که با استفاده از آن می‌توان معتبر بودن یا نبودن کارت‌های اعتباری را تشخیص داد.
ابتدا یک فایل با پسوند php. ایجاد کرده و سپس کد زیر را درون آن قرار دهید و آن را با نام fngccvalidator.class ذخیره نمایید.
<?php

/*
FNG Credit Card Validator v1.1
Copyright © 2009 Fake Name Generator <http://www.fakenamegenerator.com/>

FNG Credit Card Validator v1.1 by the Fake Name Generator is licensed to you
under a Creative Commons Attribution-Share Alike 3.0 United States License.

For full license details, please visit:
http://www.fakenamegenerator.com/license.php

*/

class fngccvalidator
{

	/**
	* Validate credit card number and return card type.
	* Optionally you can validate if it is a specific type.
	*
	* @param string $ccnumber
	* @param string $cardtype
	* @param string $allowTest
	* @return mixed
	*/
	public function CreditCard($ccnumber, $cardtype = '', $allowTest = false){
		// Check for test cc number
		if($allowTest == false && $ccnumber == '4111111111111111'){
			return false;
		}
		
		$ccnumber = preg_replace('/[^0-9]/','',$ccnumber); // Strip non-numeric characters
		
		$creditcard = array(
			'visa'			=>	"/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/",
			'mastercard'	=>	"/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/",
			'discover'		=>	"/^6011-?\d{4}-?\d{4}-?\d{4}$/",
			'amex'			=>	"/^3[4,7]\d{13}$/",
			'diners'		=>	"/^3[0,6,8]\d{12}$/",
			'bankcard'		=>	"/^5610-?\d{4}-?\d{4}-?\d{4}$/",
			'jcb'			=>	"/^[3088|3096|3112|3158|3337|3528]\d{12}$/",
			'enroute'		=>	"/^[2014|2149]\d{11}$/",
			'switch'		=>	"/^[4903|4911|4936|5641|6333|6759|6334|6767]\d{12}$/"
		);
		
		if(empty($cardtype)){
			$match=false;
			foreach($creditcard as $cardtype=>$pattern){
				if(preg_match($pattern,$ccnumber)==1){
					$match=true;
					break;
				}
			}
			if(!$match){
				return false;
			}
		}elseif(@preg_match($creditcard[strtolower(trim($cardtype))],$ccnumber)==0){
			return false;
		}		
		
		$return['valid']	=	$this->LuhnCheck($ccnumber);
		$return['ccnum']	=	$ccnumber;
		$return['type']		=	$cardtype;
		return $return;
	}
	
	/**
	* Do a modulus 10 (Luhn algorithm) check
	*
	* @param string $ccnum
	* @return boolean
	*/
	public function LuhnCheck($ccnum){
		$checksum = 0;
		for ($i=(2-(strlen($ccnum) % 2)); $i<=strlen($ccnum); $i+=2){
			$checksum += (int)($ccnum{$i-1});
		}
		
		// Analyze odd digits in even length strings or even digits in odd length strings.
		for ($i=(strlen($ccnum)% 2) + 1; $i<strlen($ccnum); $i+=2){
			$digit = (int)($ccnum{$i-1}) * 2;
			if ($digit < 10){
				$checksum += $digit;
			}else{
				$checksum += ($digit-9);
			}
		}

		if(($checksum % 10) == 0){
			return true; 
		}else{
			return false;
		}
	}
}

?>
پس از ذخیره فایل بالا، یک فایل جدید با پسوند php. در کنار آن ایجاد کرده و کد زیر را درون آن قرار دهید . کد زیر یک شی از کلاس fngccvalidator ایجاد کرده و با فراخوانی تابع CreditCard از کلاس مورد نظر و ارسال شماره کارت اعتباری به عنوان آرگومان به آن ، نتیجه را برای نمایش به کاربر باز می‌گرداند . نتیجه بازگشتی به صورت یک آرایه با اندیس‌های زیر می‌باشد .
– ccnum : شماره کارت اعتباری دریافت‌شده از کاربر
– type : نوع کارت اعتباری
– valid : معتبر بودن یا نبودن ( ۱ : معتبر ، ۰ : نامعتبر )
<?php
/* Example Usage : */
require_once("fngccvalidator.class.php");
$fngccvalidator = new fngccvalidator();
// Validate a credit card
$credit_cart_details=$fngccvalidator->CreditCard('5330 4171 3521 4522');
echo "<div>Cart Number : <strong>".$credit_cart_details['ccnum']."</strong></div>";
echo "<div>Type : <strong>".$credit_cart_details['type']."</strong></div>";
echo "Valid : <strong>".$credit_cart_details['valid']."</strong></div>";
?>
:: دانلود کد ( گیت‌هاب ) : http://goo.gl/lX8IV5

دیدگاه زیبای شما

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s