The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Вот проверка валидности номеров кредитных карт (perl )


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl,  (найти похожие документы)
From: Pavel Reich <Pavel.Reich@f75.n5004.z2.fidonet.org> Newsgroups: fido7.ru.cgi.perl Subject: Вот проверка валидности номеров кредитных карт MM> Hаpод, кто нибуть занимался созданием интеpнет магазина с MM> online'овой валидацией кpедитных каpточек ? Если есть такие, MM> подскажите пожалуйста, где можно поподpобнее почитать пpо создание MM> такой штуки (на базе пеpловых скpиптов желательно), есть ли готовый MM> софт для этого и как быть с этой самой валидацией кpедиток? Вот проверка валидности (из CGI/Perl CookBook) ─Windows Clipboard─ ############################################################################ # # # cc_validate() Version 2.0 # # Written by Craig Patchett craig@patchett.com # # Created 9/24/96 Last Modified 3/21/97 # # # # Copyright 1997 Craig Patchett & Matthew Wright. All Rights Reserved. # # This subroutine is part of The CGI/Perl Cookbook from John Wiley & Sons. # # License to use this program or install it on a server (in original or # # modified form) is granted only to those who have purchased a copy of The # # CGI/Perl Cookbook. (This notice must remain as part of the source code.) # # # # Function: Checks Visa, Mastercard, and American Express credit card # # numbers to make sure they follow bank guidelines for # # credit card numbers. # # # # Usage: &cc_validate($card_type, $card_num, $exp_date); # # # # Variables: $card_type -- Card type # # Valid values: 'VS', 'MC', 'AX' # # $card_num -- Card number. Non-numeric will be revoed # # Example: '1234-5678-9012-3456' # # $exp_date -- Expiration date # # Examples: '05/99', '5/99' # # # # Returns: 0 if successful # # 1 if invalid card type # # 2 if invalid number of digits in card number # # 3 if if card has expired or expiration date is invalid # # 4 if card number is invalid # # # # Uses Globals: Sets $Error_Message with descriptive error message # # # # Files Created: None # # # ############################################################################ sub cc_validate { local($card_type, $card_num, $exp_date) = @_; local(%card_length) = ('VS', '13,15,16', 'MC', '16', 'AX', '15'); local($old_card_num, $card_length, $total, $d); # Check to make sure the card type is valid $card_type =~ tr/a-z/A-Z/; if (!$card_length{$card_type}) { $Error_Message = "$card_type is not a valid card type."; return(1); } # Get rid of non-digits in card number and check for right number # of digits $old_card_num = $card_num; $card_num =~ s/\D//g; $card_length = length($card_num); if (!($card_length{$card_type} =~ /(^|,)$card_length(,|$)/)) { $Error_Message = "Card number $old_card_num does not have the correct number of digits."; return(2); } # Check to see if the card has expired local($month_now, $year_now) = (localtime)[4,5]; ++$month_now; if ($year_now < 50) { $year_now += 100 } $exp_date =~ m|(\d+)/(\d+)|; $exp_month = $1; $exp_year = ($2 < 50) ? $2 + 100 : $2; if ((($year_now == $exp_year) && ($month_now > $exp_month)) || ($exp_year - $year_now < 0) || ($exp_year - $year_now > 10)) { $Error_Message = "$exp_date is an invalid expiration date."; return(3); } # Check to see if card number is valid (checks only to see if the card # number sequence is a valid sequence. while (length($card_num)) { $total += chop($card_num); $total += (($d = chop($card_num)) < 9) ? ($d * 2) % 9 : 9; } if ($total % 10) { $Error_Message = "$old_card_num is not a valid credit card number."; return(4); } # It passed all the tests! return(0); ─Windows Clipboard─ Pavel

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру