Skip to content

Instantly share code, notes, and snippets.

@creotiv
Created April 16, 2020 13:30
Show Gist options
  • Save creotiv/e46ceab4915028ba9d05784110addbbf to your computer and use it in GitHub Desktop.
Save creotiv/e46ceab4915028ba9d05784110addbbf to your computer and use it in GitHub Desktop.
createFakeCard(prefix, length) {
var ccnumber = prefix;
// generate digits
while (ccnumber.length < length - 1) {
ccnumber += Math.floor(Math.random() * 10);
}
// reverse number and convert to int
var reversedCCnumberString = ccnumber
.split("")
.reverse()
.join(""); //strrev(ccnumber);
var reversedCCnumber = reversedCCnumberString.split("").map(function(x) {
return parseInt(x);
});
var sum = 0;
var pos = 0;
while (pos < length - 1) {
var odd = reversedCCnumber[pos] * 2;
if (odd > 9) {
odd -= 9;
}
sum += odd;
if (pos != length - 2) {
sum += reversedCCnumber[pos + 1];
}
pos += 2;
}
// calculate check digit
var checkdigit = ((Math.floor(sum / 10) + 1) * 10 - sum) % 10;
ccnumber += checkdigit;
return ccnumber.toString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment