2016-09-29 143 views
2

我正在使用移動支付應用程序。用戶可以添加他的所有卡片,包括付款(例如信用/借記卡/現金卡)和不支付(積分卡賺取積分)卡到應用程序。如何區分支付卡(例如信用卡/借記卡)號碼和非支付卡號碼?

在添加卡片時,我想區分這兩種類型的卡片,並希望在應用程序的單獨列表中顯示它們。

我雖然Luhn算法會做,但即使是非支付卡碰巧計算校驗位按照Luhn算法。

請提出建議,如果有任何其他機制,我可以用來實際區分這兩種類型的卡。

感謝

+1

我建議讓您的應用程序用戶根據需要對卡片進行分組,或使用正則表達式對常見範圍進行快速卡號分析。有很多準備使用的例子,只是谷歌。通常的正則表達式不是100%正確的。由於這些表格的大小和永久更新,卡BIN表格的支持將會更加複雜。 –

+0

除上述註釋外,ISO/IEC 7812是* most *支付卡的標準,因此您可以相當自信地確認支付卡號以4/5/6開頭。儘管在這些範圍內可能會有一些忠誠卡,特別是在6範圍內。此外,一些髮卡機構(JCB卡)會完全遵循不同的標準(JCB卡以3開頭)。總結 - 讓用戶把它整理出來! – PaulG

+0

@PaulG - 實際上,7812適用於*所有*信用卡,包括JCB。 [此表](https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_.28IIN.29)具有所有主要BIN範圍(前幾位)。值得注意的是,美國運通卡也以3開頭,但很容易根據第二位數字與JCB區分開來。 – Bobson

回答

0

正如@他們comment暗示ISO8583,信息支持,要做到這一點唯一的好辦法是BIN範圍查找。 BIN是一張卡的頭幾個數字(技術上,最多6個),這些數字是髮卡機構發放的。例如,Visa「擁有」4*,因此任何以4開頭的卡都是Visa卡。萬事達「擁有」2221*-2720*51*-55*,所以任何以51,52,53,5455開頭的卡都是MasterCard,但是以56開頭的卡不是。 (實際上它是一張Maestro卡,這是一張MasterCard子品牌,但它在技術上仍然是獨立的 - 一個借記卡,另一個是信用卡。)公共BIN上無法識別的東西幾乎肯定是一張忠誠卡。

這可以是一個數據庫表,但它不一定非要 - 您可以輕鬆將其硬編碼到您的應用程序中。但一定要使其可調。萬事達卡將在今年10月份開始引入以2開頭的卡號......如果您無法修改您的應用以支持該卡號,那麼您將會惹惱用戶。

This table on Wikipedia具有所有主要的BIN範圍。還有at least one company,它銷售的API更詳細,並且比維基百科更新。

相關問題