# 通过银行卡号查询银行类型和银行卡类型 [![Build Status via Travis CI](https://travis-ci.org/navyxie/bankcardinfo.svg?branch=master)](https://travis-ci.org/navyxie/store-ttl) [![Coverage Status](https://coveralls.io/repos/github/navyxie/bankcardinfo/badge.svg?branch=master)](https://coveralls.io/github/navyxie/store-ttl?branch=master) [![NPM version](https://badge.fury.io/js/bankcardinfo.png)](http://badge.fury.io/js/bankcardinfo) **建议升级使用1.0.0+的版本,该版本不向下兼容,即不再支持getBankInfoByCardNoAsync,getBankInfoByCardNo这两个API,旧版本用户请升级并使用 getBankBin API替换** *2.0.0版本开始支持promise写法* ## npm install bankcardinfo ### 成功获取卡bin信息时,返回值为json对象 ```js { bankName:"中国工商银行", bankCode:"ICBC", cardType:"DC", cardTypeName:"储蓄卡" } ``` ### API - [getBankBin](#getBankBin) ## getBankBin ### 传入卡号,异步返回。当第一个参数为空时,表示获取卡bin信息成功(标准API) ```js var BIN = require('bankcardinfo'); //callback 方式调用 BIN.getBankBin('6227003320240034988',function(err,data){ if(!err){ //todo { bankName:"中国工商银行", bankCode:"ICBC", cardType:"DC", cardTypeName:"储蓄卡" } } }) // promise 方式调用, 2.0.0 及以上版本支持 BIN.getBankBin('6227003320240034988') .then(function (data) { }) .catch(function (err) { }) ``` # 0.3.3版本以下API(存在并发请求的Bug,建议升级到1.0.0+) - [getBankBin](#getBankBin) - [getBankInfoByCardNoAsync](#getBankInfoByCardNoAsync) - [getBankInfoByCardNo](#getBankInfoByCardNo) ## getBankInfoByCardNoAsync ### 传入卡号,异步返回。只返回一个参数,当非空时,表示获取卡bin信息成功(非标准API) ```js var BIN = require('bankcardinfo'); BIN.getBankInfoByCardNoAsync('6227003320240034988',function(data){ if(data){ //todo //data } }) ``` ## getBankInfoByCardNo ### 传入卡号,同步返回。当返回值非空时,表示获取卡bin信息成功 ```js var BIN = require('bankcardinfo'); var binData = BIN.getBankInfoByCardNo('6227003320240034988'); if(binData){ //todo } ``` ## 小结 1. 优先使用系统自带的获取卡bin信息(2013年国内银行卡集) 2. 当系统自带的规则获取不到卡bin时,会调用支付宝的接口来获取,[测试地址](https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=6227003320232234322&cardBinCheck=true) 3. 支持AMD & CMD 4. 可在browser端使用,直接引入[index.js](https://github.com/navyxie/bankcardinfo/blob/master/index.js)文件,建议在服务端使用。 ## 未来 由于模块自带的卡bin获取规则是2013年全国银行的卡集合,所以卡规则需要不断完善。可在模块中收集用户新卡规则,但是会涉及用户隐私及安全问题,及时收集,也只会收集部分够认证的卡位即可。