我必须使用用户信用卡详细信息通过贝宝付款。用户第一次输入卡的详细信息时,付款是通过 paypal pro 完成的。如果卡无效,则无法付款。只有在卡有效的情况下才会付款。
用户第一次输入有效的卡详细信息并完成付款时,如果该用户当时修改了信用卡详细信息,我需要再次检查该卡是否对贝宝有效。
那么是否有任何 API 只检查信用卡详细信息而不处理任何付款?
我正在运行 php 和 mysql。
谢谢。
阿维纳什
我必须使用用户信用卡详细信息通过贝宝付款。用户第一次输入卡的详细信息时,付款是通过 paypal pro 完成的。如果卡无效,则无法付款。只有在卡有效的情况下才会付款。
用户第一次输入有效的卡详细信息并完成付款时,如果该用户当时修改了信用卡详细信息,我需要再次检查该卡是否对贝宝有效。
那么是否有任何 API 只检查信用卡详细信息而不处理任何付款?
我正在运行 php 和 mysql。
谢谢。
阿维纳什
使用 Paypal,您的选择非常有限。如果您使用的是 Paypal Pro,您可以通过仅 0.00 美元的授权来验证该卡是否存在并且是合法的。如果您使用的是 Paypal 提供的其他付款方式,您将无法执行此操作。
然后,您的其他选择是验证卡至少包含有效信息。您可以使用Luhn 算法验证卡号是否合法。所有信用卡号都以可以使用该算法验证的模式发行。它无法确认该卡是否有效,但它会消除输入的虚假信用卡号码。您还应确认到期日期未过期,并且对于 Visa、MasterCard 和 Discover Card,CVV 代码只有三位数,而对于美国运通卡,CVV 代码只有四位数。
如果您需要根据 Luhn 算法验证卡号的代码,请告诉我,我可以附加我的答案以包含它。
编辑(在 PHP 中添加 Luhn 算法代码):
function passes_luhn_check($cc_number) {
$checksum = 0;
$j = 1;
for ($i = strlen($cc_number) - 1; $i >= 0; $i--) {
$calc = substr($cc_number, $i, 1) * $j;
if ($calc > 9) {
$checksum = $checksum + 1;
$calc = $calc - 10;
}
$checksum += $calc;
$j = ($j == 1) ? 2 : 1;
}
if ($checksum % 10 != 0) {
return false;
}
return true;
}
用法:
$valid_cc = passes_luhn_check('4427802641004797'); // returns true
$valid_cc = passes_luhn_check('4427802641004798'); // returns false
在不太了解 Paypal 的情况下,我会想象他们有某种授权 API,您可以在其中进行 0.00 美元的授权以查看卡是否有效。
存储信用卡详细信息时请记住PCI要求。
客户可以更改哪些信用卡详细信息会对您存储的数据产生影响。如果客户更改了诸如压印姓名之类的实质性内容,则发行人会给客户一张新卡。从你的角度来看,这应该是一张新卡(即使卡号没有改变)。
如果你保存一些其他细节,那么你就节省了太多。
从我的角度来看(我在发行人工作),不要走 0.00 美元的授权方式。如果您想向客户收费,请执行您的授权。不是 Paypal,但发行人将处理授权。最后,只有发卡方知道这张卡是否有效。