Cha*_*ell 23 javascript asp.net parsing credit-card
有谁知道如何解析磁卡Swiper的信用卡串输入?
我尝试了一个JavaScript解析器,但从来没有让它工作.这就是输入的样子.
%BNNNNNNNNNNNNNNNN^DOE/JOHN
^1210201901000101000100061000000?;NNNNNNNNNNNNNNNN=12102019010106111001?
Run Code Online (Sandbox Code Playgroud)
N是信用卡号.
Ali*_*xel 25
请参阅磁条卡条目@ Wikipedia:
跟踪一,格式B:
- 开始哨兵 - 一个角色(通常是'%')
- 格式代码="B" - 一个字符(仅限alpha)
- 主帐号(PAN) - 最多19个字符.通常(但不总是)与卡片正面印刷的信用卡号码相匹配.
- 字段分隔符 - 一个字符(通常为"^")
- 名称 - 2到26个字符
- 字段分隔符 - 一个字符(通常为"^")
- 到期日期 - YYMM格式的四个字符.
- 服务代码 - 三个字符
- 全权委托数据 - 可能包括Pin验证密钥指示符(PVKI,1个字符),PIN验证值(PVV,4个字符),卡验证值或卡验证码(CVV或CVK,3个字符)
- 结束哨兵 - 一个角色(一般是'?')
- 纵向冗余校验(LRC) - 一个字符(大多数读卡器设备在将卡刷到表示层时不返回此值,并仅用于验证读卡器内部的输入.)
我希望数据是假的,否则任何人都可以得到:
我不确定,但我认为可以使用LRC计算信用卡号(或可能性数).
我做得更好了:我制作了一个视频,展示了如何使用ASP.Net/c#完成此操作:
http://www.markhagan.me/Samples/CreditCardSwipeMagneticStripProcessing
以下是您可能关心的代码部分:
protected void CardReader_OTC(object sender, EventArgs e)
{
bool CaretPresent = false;
bool EqualPresent = false;
CaretPresent = CardReader.Text.Contains("^");
EqualPresent = CardReader.Text.Contains("=");
if (CaretPresent)
{
string[] CardData = CardReader.Text.Split('^');
//B1234123412341234^CardUser/John^030510100000019301000000877000000?
PersonName.Text = FormatName(CardData[1]);
CardNumber.Text = FormatCardNumber(CardData[0]);
CardExpiration.Text = CardData[2].Substring(2, 2) + "/" + CardData[2].Substring(0, 2);
}
else if (EqualPresent)
{
string[] CardData = CardReader.Text.Split('=');
//1234123412341234=0305101193010877?
CardNumber.Text = FormatCardNumber(CardData[0]);
CardExpiration.Text = CardData[1].Substring(2, 2) + "/" + CardData[1].Substring(0, 2);
}
}
Run Code Online (Sandbox Code Playgroud)
完整的代码在我上面链接的网站上.
| 归档时间: |
|
| 查看次数: |
31836 次 |
| 最近记录: |