
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 : معتبر بودن یا نبودن ( ۱ : معتبر ، ۰ : نامعتبر )
– 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