from random import Random
import copy
generator = Random()
generator.seed()
def creditcard(type=""):
def credit_card_number(generator, prefixList, length):
def _completed_number(prefix, length):
ccnumber = prefix
while len(ccnumber) < (length - 1):
digit = generator.choice(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])
ccnumber.append(digit)
sum, pos = (0, 0)
reversedCCnumber = []
reversedCCnumber.extend(ccnumber)
reversedCCnumber.reverse()
while pos < length - 1:
odd = int( reversedCCnumber[pos] ) * 2
if odd > 9:
odd -= 9
sum += odd
if pos != (length - 2):
sum += int( reversedCCnumber[pos+1] )
pos += 2
checkdigit = ((sum / 10 + 1) * 10 - sum) % 10
ccnumber.append( str(checkdigit) )
return ''.join(ccnumber)
result = []
ccnumber = copy.copy( generator.choice(prefixList) )
result.append( _completed_number(ccnumber, length) )
return result
if type in "visa":
visaPrefixList = [['4','0','2','4', '0', '0', '7', '1'],]
return credit_card_number(generator, visaPrefixList, 16)
elif type is "amex":
amexPrefixList = [['3','4'],['3', '7']]
return credit_card_number(generator, amexPrefixList, 16)
elif type is "discover":
discoverPrefixList = [['6','0','1','1']]
return credit_card_number(generator, discoverPrefixList, 16)
elif type is "mastercard":
mastercardPrefixList = [['5','1'],['5','2'],['5','3'],['5','4'],['5','5']]
return credit_card_number(generator, mastercardPrefixList, 16)