I can give u my simple php script which needs to be converted to a plugin only.
It is modular and extensible. Remeber it a simple script that need to be extended, cuz it is only the verification part.
Imagine what you can do with ajax and this.
no other words, here it is:
<?php
/**
* Description:
* This is a simple PHP script that checks for validity of several payment methods.
* You can extend this code and do what you want with it.
* It is absolutely free.
*
* @author Xsss4hell
* @version 1.0
*/
function checkCreditCard ($cardnumber, $cardname, &$errornumber, &$errortext) {
$cards = array ( array ('name' => 'Visa',
'length' => '13,16',
'prefixes' => '4',
'checkdigit' => true
),
array ('name' => 'MasterCard',
'length' => '16',
'prefixes' => '51,52,53,54,55',
'checkdigit' => true
),
array ('name' => 'Diners Club',
'length' => '14',
'prefixes' => '300,301,302,303,304,305,36,38',
'checkdigit' => true
),
array ('name' => 'Carte Blanche',
'length' => '14',
'prefixes' => '300,301,302,303,304,305,36,38',
'checkdigit' => true
),
array ('name' => 'American Express',
'length' => '15',
'prefixes' => '34,37',
'checkdigit' => true
),
array ('name' => 'Discover',
'length' => '16',
'prefixes' => '6011',
'checkdigit' => true
),
array ('name' => 'JCB',
'length' => '15,16',
'prefixes' => '3,1800,2131',
'checkdigit' => true
),
array ('name' => 'Discover',
'length' => '16',
'prefixes' => '6011',
'checkdigit' => true
),
array ('name' => 'Enroute',
'length' => '15',
'prefixes' => '2014,2149',
'checkdigit' => true
)
);
$ccErrorNo = 0;
$ccErrors [0] = "Unbekannter Kartentyp";
$ccErrors [1] = "Keine Kartennummer angegeben";
$ccErrors [2] = "Kreditkartennummer hat ungueltiges Format";
$ccErrors [3] = "Kreditkartennummer ist ungueltig";
$ccErrors [4] = "Kreditkartennummer ist unvollstaendig";
$cardType = -1;
for ($i=0; $i<sizeof($cards); $i++) {
if (strtolower($cardname) == strtolower($cards[$i]['name'])) {
$cardType = $i;
break;
}
}
if ($cardType == -1) {
$errornumber = 0;
$errortext = $ccErrors [$errornumber];
return false;
}
if (strlen($cardnumber) == 0) {
$errornumber = 1;
$errortext = $ccErrors [$errornumber];
return false;
}
$cardexp = '^([0-9]{4})[[:space:]]?([0-9]{4})[[:space:]]?([0-9]{4})[[:space:]]?([0-9]{1,4})%body%#039;;
if (!ereg($cardexp,$cardnumber, $matches)) {
$errornumber = 2;
$errortext = $ccErrors [$errornumber];
return false;
}
$cardNo = $matches[1] . $matches[2] . $matches[3] . $matches[4];
if ($cards[$cardType]['checkdigit']) {
$checksum = 0;
$mychar = "";
$j = 1;
for ($i = strlen($cardNo) - 1; $i >= 0; $i--) {
$calc = $cardNo{$i} * $j;
if ($calc > 9) {
$checksum = $checksum + 1;
$calc = $calc - 10;
}
$checksum = $checksum + $calc;
if ($j ==1) {$j = 2;} else {$j = 1;};
}
if ($checksum % 10 != 0) {
$errornumber = 3;
$errortext = $ccErrors [$errornumber];
return false;
}
}
$prefix = split(',',$cards[$cardType]['prefixes']);
$PrefixValid = false;
for ($i=0; $i<sizeof($prefix); $i++) {
$exp = '^' . $prefix[$i];
if (ereg($exp,$cardNo)) {
$PrefixValid = true;
break;
}
}
if (!$PrefixValid) {
$errornumber = 3;
$errortext = $ccErrors [$errornumber];
return false;
}
$LengthValid = false;
$lengths = split(',',$cards[$cardType]['length']);
for ($j=0; $j<sizeof($lengths); $j++) {
if (strlen($cardNo) == $lengths[$j]) {
$LengthValid = true;
break;
}
}
if (!$LengthValid) {
$errornumber = 4;
$errortext = $ccErrors [$errornumber];
return false;
};
return true;
}
/**
Ein Verwendungsbeispiel:
<form method="post" action="fdccvs.php">
<p><span style="color: #ff0000; margin-left: 20px;">Kreditkarte auswählen:</span>
<input type="hidden" name="submitted" value="true" />
<select tabindex="11" name="Kartentyp" style="margin-left: 10px;" >
<option value="MasterCard">MasterCard</option>
<option value="MasterCard">MasterCard</option>
<option value="Visa">Visa</option>
<option value="American Express">American Express</option>
<option value="Diners Club">Diners Club</option>
<option value="Carte Blanche">Carte Blanche</option>
<option value="Discover">Discover</option>
<option value="JCB">JCB</option>
<option value="EnRoute">enRoute</option>
</select>
<span style="color: #ff0000; margin-left: 20px;">Nummer eingeben:
<input type="text" name="Kartennummer" maxlength="20" size="20" style="margin-left: 10px;" value="" alt="Geben Sie ihre Kredikartennummer hier ein" tabindex="12" />
<input type="submit" name="submit" size="20" value="Senden" tabindex="13" alt="Klicken Sie hier um die Kredikartennummer zu Überprng abzuschicken." />
<br /> <span style="display: block; margin: 10px 0 0 20px; color: red; font-weight: bold;">Bitte geben Sie ihre Kredikartendetails an</span>
</span></p>
</form>
*/
?>
If you don’t like my script you can use this:
http://www.analysisandsolutions.com/software/download/
It’s nice also.