我们都知道42是一切的答案,但对我来说这是一个有效的信用卡号码.
尝试在此jQuery Validation测试页面中输入"42"或"42176" ,然后单击"确定".
这是怎么回事?我认为这应该是事实上的验证库.即使微软现在正在使用它,但它认为'42'和'42176'是有效的信用卡号码?!它甚至没有进行长度检查.当然,我也不负责增加长度检查?它被称为'信用卡'验证器,而不是'luhn'验证器.
编辑:搭便车幽默 - 我将如何修补验证插件来检查长度.那很容易吗?
是否有技术/法律/财务/合同/设计理由不接受带有空格的信用卡号码?
如此多的网站不允许您在信用卡号码中放置空格或破折号.我总是把这些放到草率的编程中,但之前我曾经使用过商业API.如果您可以弄清楚如何处理信用卡,您可以弄清楚如何从字符串中删除字符.设计师知道他们因为他们在网站上发出警告而引起了用户的挫败感.他们就在卡片上!甚至还有一道耻辱之墙.
虚假的懒惰,错误的编程,冷酷无情,虐待狂......所有这些都假设在做代码的人中最糟糕的.我能想到的最慷慨的是他们对涉及金钱的任何东西都非常保守.我一直想知道为什么你不应该接受带有空格的信用卡号码有一些深层次和真正重要的原因?为什么你绝对不应该尝试应用任何启发式方法.也许可以追溯到电报时代的一些奇怪的金融法?也许他们是无名英雄,保护我们免受某些未知的邪恶,以免我们输入Hastur的信用卡号码三次.
我已经为android创建了一个应用程序,我花了几个月才完成.我一直在想,当它完成后,我可以在Android市场上发布它.
现在我去了网站,发现我必须支付25欧元,我准备这么做.但后来我发现没有信用卡就无法付款!
有人有解决方案吗?我在我的程序上工作得非常努力,发现它永远不会看到日光.
我已经在Android(v2.3)上工作了几个星期了,我偶然发现了IDTECH的Unimag Card Swiper的一些问题.
本机带有一种稀缺的文档,并从SDK的演示应用程序实现固件更新和几类对话和这样这确实offuscate如何实现基本的功能(加入少,不太好评论中的代码).
我已经实现了接口的一项基本活动,并试图将本机连接或断开时检测,但它似乎听众抓住这两个事件(连接/断开)为"断开",更不用说试图读取卡.
有没有人在Android上使用过这个单元并且有一些明显的例子?
顺便说一句,这是我的班级:
package com.card.swipe;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import IDTech.MSR.uniMag.uniMagReader;
import IDTech.MSR.uniMag.uniMagReaderMsg;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
public class CardSwipeTestActivity extends Activity implements uniMagReaderMsg {
private uniMagReader myUniMagReader = null;
private TextView etCardData;
private String _strMSRData = null;
private byte[]_MSRData = null;
private String _strStatus = null;
private int _nGetChallengeResult = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// InitializeUI(); …Run Code Online (Sandbox Code Playgroud) 我尝试使用Luhn算法检查信用卡的验证,该算法的工作原理如下:
从右到左加倍每秒.如果数字加倍会产生两位数字,请将两位数相加以得到一位数字.
2*2 = 4
2*2 = 4
4*2 = 8
1*2 = 2
6*2 = 12(1 + 2 = 3)
5*2 = 10(1 + 0 = 1)
8*2 = 16(1 + 6 = 7)
4*2 = 8
现在添加步骤1中的所有单位数字.
4 + 4 + 8 + 2 + 3 + 1 + 7 + 8 = 37
在卡号中从右到左添加奇数位的所有数字.
6 + 6 + 0 + 8 + 0 + 7 + 8 + 3 = 38
对步骤2和步骤3的结果求和.
37 + 38 = 75 …
如何在 4 位数字之间留出空格?
希望帮助解决问题
我参与为非营利组织建立捐赠表格.我们最近遭遇了一轮快速的低美元提交.许多人都是无效的卡片,但有一些卡片无效.显然有人写了一个脚本来检查一堆卡号是否有效,可能是因为他们可以在以后卖掉它们.
关于如何预防或限制未来影响的任何想法?
我们可以控制系统的所有方面(代码,网络服务器等).是的,表单运行在https上.
我在使用MySQL的Linux服务器上使用PHP.
我有一个要求(我试图说出来)从用户那里收集信用卡信息,以便我们公司可以使用卡号来保存会议的酒店房间.我们根本不会自己收取卡,而只是将它们送到酒店.然后,我需要能够下载CSV文件,每次有人注册电子邮件时,都会向管理员提供所有信息.
我试图解释这不安全,但是在我工作之前,其他几位开发人员已经为他们做了这件事.
我的问题是; 反正是为了让这个安全吗?如果没有,是否有任何第三方选择来实现这一目标?
编辑:
我感谢到目前为止发布的所有人,它只是让我想要越来越少地尝试这样做.如果你可以为你的答案添加简单的解释,面向非技术人员,我们将非常感激,事实上,网站来源和链接将帮助我很多.我没有找到任何可以用非技术方式解释这一点的网站.
我应该使用Microsoft的CreditCardAttribute来验证信用卡号码吗?
[Required, CreditCard]
public string CreditCardNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)
或者我应该让支付网关处理它,还是做其他事情?我发现一些客户无法使用他们的信用卡信息提交付款后我问这个问题.幸运的是,我能够与其中一个客户合作,并发现他们的Visa卡在删除后没有任何问题CreditCardAttribute.
在某种程度上,这个问题是修辞性的,但我希望从其他开发人员的想法和经验中受益,并让其他开发人员意识到使用CreditCardAttribute提问的风险.
我正在使用paypal ruby sdk以通过rest api处理信用卡.从信用卡处理的角度来看,一切都很好.信用卡处理正确,没有任何问题.
不幸的是,当我在沙盒(或实时)商家paypal帐户上执行csv事务导出时,"项目标题"字段未填充,而且我也看不到任何地方都使用了描述字段.
请求paypal:
Request[post]: https://api.sandbox.paypal.com/v1/payments/payment
Request.body={
"intent":"sale",
"payer":{
"payment_method":"credit_card",
"funding_instruments":[{
"credit_card":{
"number":"xxxxxxxxxxxxxxxx",
"type":"visa",
"expire_month":10,
"expire_year":2020,
"first_name":"First Name",
"last_name":"Last Name"
}
}]
},
"transactions":[{
"amount":{
"currency":"USD",
"total":"1"
},
"description":"This is item description",
"item_list":{
"items":[{
"quantity":"1",
"name":"This is item description",
"price":"1",
"currency":"USD",
"sku":"This is item description"
}]
}
}]
}
Run Code Online (Sandbox Code Playgroud)
在成功的paypal响应中,我得到了所有这些数据,包括填充了"这是项目描述"的字段.
我的问题是,为了在事务csv export中填充"Item Title"字段,我们需要为此api调用提供哪个参数?
在这个api请求中"描述"字段的目的是什么,并且在我们处理用信用卡付款之后在paypal一侧(显示)使用此字段?
EDITED
尝试使用PHP SDK(只是为了确保这不是特定SDK的问题).最后,似乎问题是" 是否有一个字段用作REST API的一部分,它对应于paypal导出中的'Item Title'列? "