c# - 我应该使用 CreditCardAttribute 来验证信用卡号吗?

标签 c# validation payment-gateway credit-card

我应该使用 Microsoft 的 CreditCardAttribute 吗?像这样验证信用卡号?

[Required, CreditCard]
public string CreditCardNumber { get; set; }

或者我应该让支付网关处理它,还是做其他事情?在发现一些客户无法使用他们的信用卡信息提交付款后,我提出了这个问题。幸运的是,我能够与其中一位客户合作,发现他们的 Visa 卡在删除 CreditCardAttribute 后处理没有问题。 .

在某种程度上,这个问题是反问的,但我想从其他开发人员的想法和经验中受益,并让其他开发人员意识到使用 CreditCardAttribute 的风险。通过提问。

最佳答案

code信用卡背后attribute , 它只是在执行 Luhn检查。

所有支付卡(*) 当前关注ISO/IEC/7812标准,它有一个 luhn 校验位作为最后一位。

不过,此 luhn 检查仅用于防止换位错误。在将卡号提交给支付网关之前,它可用作健全性检查,但不适合绝对验证卡号是否为有效卡号。

有效的卡号范围每月更改一次,而绝对验证卡号的唯一方法是通过支付网关对其进行验证。如果仅尝试验证卡(而不是对其收费),则应使用零值“仅授权”样式检查来完成。

(*) 唯一的异常(exception)是在中国称为中国银联的卡类型
(历史上还有一个 Diners Club“enRoute”品牌,于 1992 年撤回)

关于c# - 我应该使用 CreditCardAttribute 来验证信用卡号吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29899715/

相关文章:

c# - 通过电子邮件发送 log4net 日志作为 System.Net.Mail.Attachment 抛出 IOException(进程锁定)

c# - 使用 TPL Dataflow 封装以操作 block 结尾的管道

validation - 序列化 dojox.validation.check 配置文件对象

asp.net - 有没有办法检查我是否可以安全地使用 Page.IsValid?

paypal - GetRecurringPaymentsProfileDetails 状态定义

php - 带有 "purchase credits/tokens"的支付网关集成到 php+mysql 网站中?

wordpress - 如何在不强制客户创建 Paypal 帐户的情况下提供 Paypal 付款选项?

c# - StreamSocket TCP 的 WinRT : DataReader. LoadAsync 异常

java - JSP 验证和重定向 : how to validate form input and forward the errors back to the original page?

c# - 将数据类型 nvarchar 转换为日期时间 SQL Server 时出错