我可以根据 3 个信用卡轨迹数据计算 CVV 吗?当我扫描卡时,没有 CVV,只有号码、姓名和服务号码,与其他任何内容都不相关。
参考:从磁条解析信用卡输入
目前,我正在使用以下第三方库与 Braintree 集成:
但我找不到任何方法来保存卡详细信息。是否有剩余 API 调用可用于保存卡详细信息?
我很好奇为什么 所有 大多数支付网关站点使用明文输入来获取安全代码.
如果用户将其安全代码置于密码模式文本框中,这不是更安全吗?
请给我启发这个
我所知道的验证是:
还有其他验证:)(我希望很多人都不知道所有这些)
我问的原因是因为我无意中听到有一个到校验和号码反对到期或CCV ..我只是想检查.
我想让程序在银行和POS终端设备之间进行通信,而无需使用任何第三方工具.我们假设,目前,该程序仅用于通过银行交换IP地址+端口号与特定银行通话.
首先,我们假设我通过在POS终端刷信用卡来获得此输出.
%B1234123412341234
^CardUser/John^030510100000019301000000877000000?;1234123412341234=0305101193010877?
Run Code Online (Sandbox Code Playgroud)
然后根据此Wiki链接将此原始数据分类为Track 1,Format B和Track 2 .
跟踪1格式B
%
B
1234123412341234
^
CardUser/John
^
0305
101
00000019301000000877000000
?
Run Code Online (Sandbox Code Playgroud)
轨道2
;
1234123412341234
=
0305
101
193010877
?
Run Code Online (Sandbox Code Playgroud)
然后,我将使用此代码使用C#程序读取这些格式.
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 …Run Code Online (Sandbox Code Playgroud) 根据我的一些API规范:
强制将Auth事务放入当前批处理(PostAuth)或将未通过LUCY Gateway™处理的事务放入当前批处理(ForceAuth)
所以"AUTH"只是搁置资金.如果您希望将资金转移到您的商家银行,您需要执行"销售"或"捕获"等操作.但是"FORCE"的重点是什么?"AUTH"是否没有立即暂停资金?你需要做"FORCE"吗?
我计划使用Authorize.net等服务来处理用户的信用卡.这带来两个问题.
我们正在从APDU命令中读取签证卡信息,这是我们发送的命令序列
1. 00A404000E315041592E5359532E444446303100
2. 00B2010C00
Run Code Online (Sandbox Code Playgroud)
在这个时候,我们知道我们可以发送处理命令,
80A80000048302084000但它会给我们一个错误,因此我们跳过这个命令并发送READ SFI 1记录.
00B2010C00
Run Code Online (Sandbox Code Playgroud)
有了这个,我们可以获得卡号和过期日期,但我们无法获得持卡人的姓名.所以,如果有人知道发生了什么,请帮助我们.
我正在尝试使用DateTime检查信用卡到期日期是否已过期,但我有点迷失.
我只想比较mm/yy日期.
到目前为止,这是我的代码
$expmonth = $_POST['expMonth']; //e.g 08
$expyear = $_POST['expYear']; //e.g 15
$rawExpiry = $expmonth . $expyear;
$expiryDateTime = \DateTime::createFromFormat('my', $rawExpiry);
$expiryDate = $expiryDateTime->format('m y');
$currentDateTime = new \DateTime();
$currentDate = $currentDateTime->format('m y');
if ($expiryDate < $currentDate) {
echo 'Expired';
} else {
echo 'Valid';
}
Run Code Online (Sandbox Code Playgroud)
我觉得我差不多了,但if语句产生的结果不正确.任何帮助,将不胜感激.
我找到了以下信用卡类型万事达卡的正则表达式
public static readonly string CreditMasterCard = @"^(5[1 - 5][0 - 9]{14})$";
Run Code Online (Sandbox Code Playgroud)
然后我写了下面的代码:
Regex regexMasterCard = new Regex(CommonLibrary.RegexCreditCardStrings.CreditMasterCard);
if (regexMasterCard.IsMatch(number)) return CommonLibrary.CreditCardType.mastercard;
Run Code Online (Sandbox Code Playgroud)
但是当我设置number ='5308171154251187'时就错了.正则表达式中有什么不正确?