public static void Main()
ITransactionCodeGenerator generator = new TransactionCodeGenerator();
var code = generator.GenerateCode(14);
public class TransactionCodeGenerator : ITransactionCodeGenerator
public string GenerateCode(int prefix)
var fromNumber = 1000000;
Random rnd = new Random(Guid.NewGuid().GetHashCode());
int number = rnd.Next(fromNumber, toNumber);
Console.WriteLine(prefix.ToString("D2"));
Console.WriteLine(number);
long digit = number.Checksum_ean8();
Console.WriteLine(digit);
long code = (number * (long)10) + digit;
return prefix.ToString("D2")+code.ToString();
public interface ITransactionCodeGenerator
string GenerateCode(int prefix);
public static class EAN8CheckSum
public static int Checksum_ean8(this int number)
var data = number.ToString();
if (data.Length != 7 && data.Length != 8)
for (int i = 0; i < data.Length; i++)
if (data[i] < 0x30 || data[i] > 0x39)
for (int i = 6; i >= 0; i--)
int digit = data[i] - 0x30;
return mod == 0 ? 0 : 10 - mod;