java农业银行

编程入门 行业动态 更新时间:2024-10-10 04:19:54

java<a href=https://www.elefans.com/category/jswz/34/1759490.html style=农业银行"/>

java农业银行

没看我之前的文章的先看一下《前期准备》,再来看这篇文章java农业银行-企业银行ERP接口开发(1-前期准备)

 这篇文章我们主要讲两个接口对接:

本行汇总批量代发(实时)(IBAF04)

他行汇总批量代发(IBBF23)交易


何为本行,何为他行,意思就是除了农行之外的,都是他行,农行的批量代发走IBAF04接口,其他行的走IBBF23接口。 


 我新建了一个工具类,专门用来对接农行接口,并且加上了spring的@Component 注解,把这个类交给spring管理,因为农行直联需要一些配置,比如农行通讯平台ICT的ip地址以及端口,本地开发的时候可以直接写死,但发布上线的时候,这些东西就要放到项目配置文件里面了,总之就是为了一些配置信息方便配置和取值,所以交给spring管理。

配置信息的意思:

abc.ict.contract-no:94合约账号(批量代发使用,跟银行签约后,会得到)

abc.ict.nv-oucher-type:94合约账号类型(批量代发使用,跟银行签约后,会得到)

abc.ict.ip-address:ICT中转站的IP地址

abc.ict.port:ICT中转站的端口号

abc.ict.file.upload.path:上传文件地址(本地开发所以写死了路径)

abc.ict.file.download.path:接收文件地址(本地开发所以写死了路径)

建了一个AbcErpToIctSocket工具类,并引入农行通讯平台ICT的IP地址以及端口号以及其他信息,用来对接农行接口


先来看看两个接口的报文格式


 IBAF04本行批量代发接口

请求报文格式(这里只展示了此接口特有的字段,请求时,是公共请求字段+接口特有字段) 

应答报文格式没有特有字段,只有公共应答字段。

根据IBAF04请求报文特有的字段,建一个实体类IBAF04RequestDTO(get set方法太多了,先删掉了,后面自己加),并继承请求基类(请求基类在《前期准备》文章讲了,用于接口请求使用。

import javax.xml.bind.annotation.*;
import java.util.List;/*** IBAF04(本行汇总批量代发(实时))请求报文字段* */
@XmlRootElement(name = "ap")
public class IBAF04RequestDTO extends RequestBaseEntity {/*** 总金额* */@XmlElement(name = "Amt")private Double amt;/*** 文件标志 默认为1* */@XmlElement(name = "FileFlag")private String fileFlag;/*** ???* */@XmlElement(name = "Cmp")private Cmp cmp;/*** ???* */@XmlElement(name = "Corp")private Corp corp;/*** 请求文件对象* */@XmlTransientprivate List<FileObject> fileObjectList;@XmlAccessorType(XmlAccessType.FIELD)public static class Cmp {/*** 省市代码* */@XmlElement(name = "DbProv")private String dbProv;/*** 账号* */@XmlElement(name = "DbAccNo")private String dbAccNo;/*** 货币号* */@XmlElement(name = "DbCur")private String dbCur;/*** 账簿号* */@XmlElement(name = "DbLogAccNo")private String dbLogAccNo;/*** 总笔数* */@XmlElement(name = "SumNum")private Integer sumNum;/*** 批量文件名* */@XmlElement(name = "BatchFileName")private String batchFileName;}@XmlAccessorType(XmlAccessType.FIELD)public static class Corp {/*** 户名* */@XmlElement(name = "DbAccName")private String dbAccName;/*** 账簿号* */@XmlElement(name = "DbLogAccNo")private String dbLogAccNo;/*** 94 账号业务种类代码* */@XmlElement(name = "NVoucherType")private String nvOucherType;/*** 94 账号* */@XmlElement(name = "NFAccNo")private String nfAccNo;}// 请求文件对象public static class FileObject {/*** 客户编号* */private String customerCode;/*** 收款人姓名* */private String crAccName;/*** 收款人账号* */private String crBankNo;/*** 币种* */private String cur;/*** 账簿号* */private String accountBookCode;/*** 交易金额* */private Double amt;/*** 摘要* */private String excerpt;/*** 合约校验标志 01-强制校验 02-均不校验* */private String contractFlag;/*** 户名校验标志 0-否 1-是* */private String accountFlag;/*** 客户移动电话校验标识 0-否 1-是* */private String phoneFlag;/*** 移动电话* */private String phone;/*** 注册证件类型代码* */private String idCardType;/*** 证件号码* */private String idCardCode;}
}

IBAF04应答报文没有特有字段,只有公共字段,但为了规范一点,还是建一个IBAF04ResponseDTO出来,并继承公共应答实体类。

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;/*** IBAF04(本行汇总批量代发(实时)) 应答报文字段* */
@XmlRootElement(name = "ap")
@XmlAccessorType(XmlAccessType.FIELD)
public class IBAF04ResponseDTO extends ResponseBaseEntity {
}

IBBF23他行批量代发接口

请求报文格式(这里只展示了此接口特有的字段,请求时,是公共请求字段+接口特有字段)

应答报文格式没有特有字段,只有公共应答字段。

根据IBBF23请求报文特有的字段,建一个实体类IBBF23RequestDTO(get set方法太多了,先删掉了,后面自己加),并继承请求基类(请求基类在《前期准备》文章讲了,用于接口请求使用。

import javax.xml.bind.annotation.*;
import java.util.List;/*** IBBF23(他行汇总批量代发)请求报文字段* */
@XmlRootElement(name = "ap")
public class IBBF23RequestDTO extends RequestBaseEntity {/*** 总金额* */@XmlElement(name = "Amt")private Double amt;/*** 文件标志 默认为1* */@XmlElement(name = "FileFlag")private String fileFlag;/*** ???* */@XmlElement(name = "Cmp")private Cmp cmp;/*** ???* */@XmlElement(name = "Corp")private Corp corp;/*** 请求文件对象* */@XmlTransientprivate List<FileObject> fileObjectList;@XmlAccessorType(XmlAccessType.FIELD)public static class Cmp {/*** 省市代码* */@XmlElement(name = "DbProv")private String dbProv;/*** 账号* */@XmlElement(name = "DbAccNo")private String dbAccNo;/*** 货币号* */@XmlElement(name = "DbCur")private String dbCur;/*** 账簿号* */@XmlElement(name = "DbLogAccNo")private String dbLogAccNo;/*** 总笔数* */@XmlElement(name = "SumNum")private Integer sumNum;/*** 代付文件名* */@XmlElement(name = "BatchFileName")private String batchFileName;}@XmlAccessorType(XmlAccessType.FIELD)public static class Corp {/*** 委托方户名* */@XmlElement(name = "DbAccName")private String dbAccName;/*** 附言* */@XmlElement(name = "Postscript")private String postscript;/*** 业务种类代码* */@XmlElement(name = "NVoucherType")private String nvOucherType;/*** 合约号(94账号)* */@XmlElement(name = "NFAccNo")private String nfAccNo;}// 请求文件对象public static class FileObject {/*** 客户编号* */private String customerCode;/*** 收款人姓名* */private String crAccName;/*** 收款人账号* */private String crBankNo;/*** 币种* */private String cur;/*** 交易金额* */private Double amt;/*** 摘要* */private String excerpt;/*** 加急标志 0-不加急 1-加急* */private String urgentSign;/*** 收款方开户行名* */private String crBankBranchName;/*** 收款方开户行号* */private String crBankBranchNo;}
}

IBBF23应答报文同样的没有特有字段,只有公共字段。

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;/*** IBBF23(他行汇总批量代发) 应答报文字段* */
@XmlRootElement(name = "ap")
@XmlAccessorType(XmlAccessType.FIELD)
public class IBBF23ResponseDTO extends ResponseBaseEntity {
}

请求和应答对象创建完成,接下来在AbcErpToIctSocket工具类建两个方法,用来请求IBAF04接口和IBBF23接口。

IBAF04

    /*** IBAF04 本行汇总批量代发(实时)* 可使用查询批量交易处理结果(IBAQ06)交易进行查证;* */public Map<String, Object> ibaf04(IBAF04RequestDTO requestEntity) {Map<String, Object> socketResponseMap = new HashMap<>();if (requestEntity == null) {socketResponseMap.put("errorMessage", "请求报文不能为空");log.error("IBAF04报文请求对象不能为空!");return socketResponseMap;}if (CollectionUtils.isEmpty(requestEntity.getFileObjectList())) {socketResponseMap.put("errorMessage", "收款对象不能为空");log.error("IBAF04报文请求对象的fileObjectList不能为空!");return socketResponseMap;}requestEntity.setCctransCode(CctransCodeEnum.IBAF04.code());requestEntity.setIsEncryption("0");// 文件标识设置为1,标识有有文件requestEntity.setFileFlag("1");// 开始生成请求文件String fileName = requestFileCreate(requestEntity.getFileObjectList(), IBAF04RequestDTO.FileObject.class);if (StringUtils.isBlank(fileName)) {socketResponseMap.put("errorMessage", "生成收款对象文本文件失败");return socketResponseMap;}// 设置文件名requestEntity.getCmp().setBatchFileName(fileName);// 设置94合约账号requestEntity.getCorp().setNfAccNo(abcContractNo);// 设置94合约账号类型requestEntity.getCorp().setNvOucherType(nvOucherType);// 开始socket请求socketResponseMap = socket(requestEntity, IBAF04ResponseDTO.class);socketResponseMap.put("uploadFileName", fileName);return socketResponseMap;}

重点:由于批量代发是同时向多个收款账户进行付款,所以应接口文档要求,收款账户的信息统一写入到一个文件里面,文件放入指定文件夹,然后接口请求报文 cmp 下的 batchFileName 标签记录这个文件名。

至于生成的文件放入哪个文件夹里面,文章最开始的地方,我在配置文件里面配置了,这个是放入农行企业通讯平台ICT软件所在的文件夹里面,里面有两个文件夹是用来放上传和下载文件的。

 代码中的requestFileCreate方法就是根据收款对象生成请求文件的,回头看前面两个请求用的DTO实体类,它们里面都有一个叫FileObject的子类,这个子类里面就是存收款对象信息的,然后请求DTO类里面有一个集合属性,类型是子类。 

IBAF04的FileObject子类字段看文档要求:

 接下来看requestFileCreate方法。

    /*** 请求报文解析list生成文件* @fileObjectList 收款对象集合* @fileObjectClass 文件对象class* @return 文件名* */private  String requestFileCreate(List fileObjectList, Class fileObjectClass) {// 文件名String fileName = new StringBuffer(UUID.randomUUID().toString().replaceAll("-", "")).append(".bal").toString();// 文件全路径StringBuffer fileFullPath = new StringBuffer(ictFileUploadPath);File dirFile = new File(fileFullPath.toString());// 创建文件路径if (dirFile.exists() || dirFile.mkdirs()) {FileOutputStream fos = null;OutputStreamWriter osw = null;try {// 创建文件fileFullPath.append(fileName);fos = new FileOutputStream(fileFullPath.toString());osw = new OutputStreamWriter(fos, "GBK");// 遍历数据集合for (int index = 0; index < fileObjectList.size(); index++) {StringBuffer content = new StringBuffer();// 取出文件类所有字段名Field[] fields = fileObjectClass.getDeclaredFields();// 根据字段名,取出对应的值,并记录for(int y = 0; y < fields.length; y++) {// 让属性可以操作fields[y].setAccessible(true);try {Object fieldValue = fields[y].get(fileObjectList.get(index));if (fieldValue != null) {content.append(fieldValue);}} catch (IllegalAccessException e) {log.error(new StringBuffer("获取字段《").append(fields[y].getName()).append("》值出错").toString(), e);return null;}content.append("|_|");}// 数据写入文件osw.write(content.toString());// 写入换行osw.write(System.lineSeparator());}osw.close();fos.close();} catch (IOException e) {log.error("将集合数据写入文件失败", e);return null;}} else {log.error(new StringBuffer("文件路径创建失败:").append(ictFileUploadPath).toString());return null;}return fileName;}

上面方法创建文件时,文件名我用了UUID,文件的后缀名是.bal(不知道是不是必须这个后缀名) ,然后写入文件的数据必须是GBK编码,多个收款账户,就换行。

方法大体意思就是:生成文件名,然后上传文件夹路径跟文件名组合得到一个完整路径,然后创建文件出来。然后开始写入这个文件,遍历收款对象集合,根据对应接口的收款对象子类(FileObject.class),获取它的所有属性,然后遍历属性集合,取出每个属性的值,用 |_| 分隔组成一串字符串,然后写入文件里面(切记:属性值的排序是必须按照文档里面给的顺序进行排序,也就是下面这图。如果哪个属性值为空,就用空字符串代替它,假设币种后面的账簿号咋们没有,那么格式就是 .....|_|收款人账号|_|币种|_||_|交易金额|_|

最后生成出来的文件是这样的:

 文件里面是这样的:


IBBF23

这个接口跟上面的差不多,不细说了,下面代码具体解释步骤看上面的,基本都一样。

    /*** IBBF23 他行汇总批量代发* 可使用查询批量交易处理结果(IBAQ06)交易进行查证;* */public  Map<String, Object> ibbf23(IBBF23RequestDTO requestEntity) {Map<String, Object> socketResponseMap = new HashMap<>();if (requestEntity == null) {socketResponseMap.put("errorMessage", "请求报文不能为空");log.error("IBBF23报文请求对象不能为空!");return socketResponseMap;}if (CollectionUtils.isEmpty(requestEntity.getFileObjectList())) {socketResponseMap.put("errorMessage", "收款对象不能为空");log.error("IBBF23报文请求对象的fileObjectList不能为空!");return socketResponseMap;}requestEntity.setCctransCode(CctransCodeEnum.IBBF23.code());requestEntity.setIsEncryption("0");// 设置文件标识为1,表示有文件上传requestEntity.setFileFlag("1");// 请求流水号if (StringUtils.isBlank(requestEntity.getReqSeqNo())) {requestEntity.setReqSeqNo(UUID.randomUUID().toString().replaceAll("-", ""));}// 开始生成请求文件String fileName = requestFileCreate(requestEntity.getFileObjectList(), IBBF23RequestDTO.FileObject.class);if (StringUtils.isBlank(fileName)) {socketResponseMap.put("errorMessage", "生成收款对象文本文件失败");return socketResponseMap;}// 设置文件名requestEntity.getCmp().setBatchFileName(fileName);// 设置94合约账号requestEntity.getCorp().setNfAccNo(abcContractNo);// 设置94合约账号类型requestEntity.getCorp().setNvOucherType(nvOucherType);// 开始socket请求socketResponseMap =  socket(requestEntity, IBBF23ResponseDTO.class);socketResponseMap.put("uploadFileName", fileName);return socketResponseMap;}

它的收款对象(FileObject.class)要求是这样的:

生成出来的文件内容是这样的:


 上面两个接口方法都用了一个socket具体请求方法,这个是当前类定义的,所有接口的具体socket请求都调用这个方法。看过我的单笔汇兑接口文章的,这里可以不用看了,都一样。

    /*** 接口socket请求调用* @requestEntity 查询报文* @responseClass 应答报文class* */private  <T extends RequestBaseEntity, R extends ResponseBaseEntity> Map<String, Object> socket(T requestEntity, Class<R> responseClass) {/*** 返回结果:*  requestMessage:请求报文*  responseMessage:应答报文*  responseEntity:应答报文对象*  errorMessage: 错误信息*  isAlreadyResq: 是否已发送请求报文* */Map<String, Object> resultMap = new HashMap<>();// 设置报文基本信息requestBeforeSetCmeBase(requestEntity);// 请求对象转成xml报文String requestMessage = requestObjectToXml(requestEntity, requestEntity.getIsEncryption());if (StringUtils.isBlank(requestMessage)) {resultMap.put("errorMessage", "生成socket请求报文出错");return resultMap;}// 记录请求报文resultMap.put("requestMessage", requestMessage);// 日志唯一标识String uuid = UUID.randomUUID().toString().replaceAll("-", "").toUpperCase();log.debug(new StringBuffer(uuid).append(" --> 农行").append(requestEntity.getCctransCode()).append("接口请求,请求报文内容如下:").toString());log.debug(requestMessage);// 开始socket请求SocketClient socketClient = new SocketClient(socketIpAddress, socketPort);Map<String, Object> tcpMap = socketClient.tcp(requestMessage, "GBK");// 记录是否已发送请求报文resultMap.put("isAlreadyResq", tcpMap.get("isAlreadyResq"));// 如果有错误信息if (tcpMap.get("errorMessage") != null) {resultMap.put("errorMessage", tcpMap.get("errorMessage"));return resultMap;}byte[] responseBytes = (byte[]) tcpMap.get("data");log.debug(new StringBuffer(uuid).append(" --> 农行").append(requestEntity.getCctransCode()).append("接口请求,应答报文内容如下:").toString());// 应答报文对象R responseEntity = null;try {// 获得应答报文字符串String responseMessageStr = new String(responseBytes, "GBK");log.debug(responseMessageStr);if (StringUtils.isNotBlank(responseMessageStr)) {resultMap.put("responseMessage", responseMessageStr.replaceAll("\n|\\s", ""));}// bytes转成应答报文对象responseEntity = responseBytesToObject(responseMessageStr, responseClass, uuid);// 记录应答报文对象resultMap.put("responseEntity", responseEntity);} catch (UnsupportedEncodingException e) {log.error("应答报文Bytes 转 字符串失败...");}return resultMap;}

上面代码步骤大致是这样的:

 1 :先设置请求基本信息(requestBeforeSetCmeBase(requestEntity);),就是那些请求公共字段

    /*** 请求前 -> 设置报文基本信息* */private  <T extends RequestBaseEntity> T requestBeforeSetCmeBase(T requestEntity) {requestEntity.setProductID("ICC");requestEntity.setChannelType("ERP");requestEntity.setOpNo("");requestEntity.setCorpNo("");requestEntity.setAuthNo("");if (requestEntity.getReqSeqNo() == null) {requestEntity.setReqSeqNo("");}requestEntity.setReqDate(DateFormatUtil.format("yyyyMMdd", new Date()));requestEntity.setReqTime(DateFormatUtil.format("HHmmss", new Date()));if (requestEntity.getSign() == null) {requestEntity.setSign("");}return null;}

 2 :请求对象转成xml报文

String requestMessage = requestObjectToXml(requestEntity, requestEntity.getIsEncryption());

 农行请求报文有个要求,就是xml报文前面加上几个数字(包头)

意思就是xml报文前面加上7位数字,1位加密位,6位报文字节长度,不足7位后面补0,而报文的长度是按GBK编码进行计算的,一个中文算两个字节长度。

这里说一下,请求报文的各个标签之间不要默认加空格之类的,不要把xml报文拿到Xml格式化工具里面格式化后后直接用。

xml报文应该是这样:0170   <ap><CCTransCode>IBAF04</CCTransCode>...其他内容</ap>

下面代码,XmlUtil.objectToXml 是上一篇文章定义的xml工具类方法。 

    /*** 请求报文对象转成xml字符串,前头加包头* @object 请求对象* @isEncryption 是否加密 0 不加密 1加密* */private  String requestObjectToXml(Object object, String isEncryption) {try {// 对象转成xml字符串String xmlMessage = XmlUtil.objectToXml(object, false, true);// xml报文之前加上包头, 包头第一位为是否为加密包标志,再加上6个字节的字符表示数据包的长度,如果长度不足6位则右边用空格补足String message = new StringBuffer(isEncryption).append(String.format("%-6s", xmlMessage.getBytes("GBK").length)).append(xmlMessage).toString();return message;} catch (JAXBException | UnsupportedEncodingException e) {log.error("请求报文对象转xml报文出错", e);return null;}}

 3 :获取xml请求报文后,创建一个socket请求,SocketClient工具类上篇文章说了

// socketIpAddress,socketPort 农行通讯平台ICT的IP地址以及端口号,前面配置引入了
SocketClient socketClient = new SocketClient(socketIpAddress, socketPort);
Map<String, Object> tcpMap = socketClient.tcp(requestMessage, "GBK");

 4 :将socket请求的返回值解析,获得应答报文等信息

String responseMessageStr = new String(responseBytes, "GBK");

 5 :将应答报文转成应答报文对象

responseEntity = responseBytesToObject(responseMessageStr, responseClass, uuid);
    /*** 应答报文bytes转实体对象* @bytes 报文bytes* @classz 返回对象class* @uuid 日志标记id* */private   <T extends ResponseBaseEntity> T responseBytesToObject(String responseMessageStr, Class<T> classz, String uuid) {if (StringUtils.isNotBlank(responseMessageStr)) {try {// 去掉前面的包头responseMessageStr = responseMessageStr.substring(responseMessageStr.indexOf("<ap>"), responseMessageStr.lastIndexOf("</ap>") + 5);// 报文结果xml转成实体对象return (T) XmlUtil.convertXmlStrToObject(classz, responseMessageStr);} catch (JAXBException e) {log.error(new StringBuffer(uuid).append(" --> 报文xml结果转实体对象失败...").toString(), e);}}return null;}

业务层面

好了,接口都写完,接下来到业务层面。批量代发之所以叫批量,就是同时对多个账户进行付款。模拟一个业务场景,对公司里面的员工发工资,假设有10个员工,那就要给10个账户付款,4个账户是农行开的,6个账户是其他银行开的,那调用接口的时候,就要把这10个账户分组,分成本行和他行,再调对应的接口进行付款。

至于如何区别是本行还是他行,业务场景里面,肯定会有对应员工的姓名和卡号,所属银行以及开户行,根据所属银行即可知道是本行或他行,再不济,我建立了一个根据银行卡号识别所属银行的工具类。

import com.alibaba.fastjson.JSON;
import org.apachemons.lang3.StringUtils;import java.util.Map;public class BankInfoUtil {private static String bankInfoJson = "{'102033':'广东发展银行.广发理财通','103000':'农业银行.金穗借记卡','185720':'昆明农联社.金碧卡','303781':'中国光大银行.阳光爱心卡','356827':'上海银行.双币种申卡贷记卡个人金卡','356828':'上海银行.双币种申卡贷记卡个人普卡','356833':'中国银行.中银JCB卡金卡','356835':'中国银行.中银JCB卡普卡','356837':'中国光大银行.阳光商旅信用卡','356838':'中国光大银行.阳光商旅信用卡','356839':'中国光大银行.阳光商旅信用卡','356840':'中国光大银行.阳光商旅信用卡','356885':'招商银行.招商银行银行信用卡','356886':'招商银行.招商银行银行信用卡','356887':'招商银行.招商银行银行信用卡','356888':'招商银行.招商银行银行信用卡','356889':'招商银行.招商银行银行信用卡','356890':'招商银行.招商银行银行信用卡','370246':'工商银行.牡丹运通卡金卡','370247':'工商银行.牡丹运通卡普通卡','370248':'中国工商银行.牡丹运通卡金卡','370249':'中国工商银行.牡丹运通卡金卡','400360':'中信实业银行.中信贷记卡','400937':'中国银行.长城国际卡(美元卡)-商务普卡','400938':'中国银行.长城国际卡(美元卡)-商务金卡','400939':'中国银行.长城国际卡(港币卡)-商务普卡','400940':'中国银行.长城国际卡(港币卡)-商务金卡','400941':'中国银行.长城国际卡(美元卡)-个人普卡','400942':'中国银行.长城国际卡(美元卡)-个人金卡','402658':'招商银行.两地一卡通','402673':'上海银行.申卡贷记卡','402791':'工商银行.国际借记卡','403361':'农业银行.金穗贷记卡','403391':'中信实业银行.中信贷记卡','404117':'农业银行.金穗贷记卡','404157':'中信实业银行.中信贷记卡','404171':'中信实业银行.中信贷记卡','404172':'中信实业银行.中信贷记卡','404173':'中信实业银行.中信贷记卡','404174':'中信实业银行.中信贷记卡','404738':'上海浦东发展银行.上海浦东发展银行信用卡VISA普通卡','404739':'上海浦东发展银行.上海浦东发展银行信用卡VISA金卡','405512':'交通银行.太平洋互连卡','405512':'交通银行.太平洋互连卡','406252':'中国光大银行.阳光信用卡','406254':'中国光大银行.阳光信用卡','406365':'广东发展银行.广发VISA信用卡','407405':'民生银行.民生贷记卡','409665':'中国银行.中银威士信用卡员工普卡','409666':'中国银行.中银威士信用卡个人普卡','409667':'中国银行.中银威士信用卡员工金卡','409668':'中国银行.中银威士信用卡个人金卡','409669':'中国银行.中银威士信用卡员工白金卡','409670':'中国银行.中银威士信用卡个人白金卡','409671':'中国银行.中银威士信用卡商务白金卡','409672':'中国银行.长城公务卡','410062':'招商银行银行.招商银行银行国际卡','412962':'深圳发展银行.发展借记卡','412963':'深圳发展银行.发展借记卡','415599':'民生银行.民生借记卡','421317':'北京银行.京卡双币种国际借记卡','421349':'建设银行.乐当家银卡VISA','421393':'民生银行.民生国际卡','421437':'中信实业银行.中信国际借记卡','421865':'民生银行.民生国际卡','421869':'民生银行.民生贷记卡','421870':'民生银行.民生贷记卡','421871':'民生银行.民生贷记卡','422160':'北京银行.京卡贵宾金卡','422161':'北京银行.京卡贵宾白金卡','424106':'中国银行.长城人民币信用卡-个人金卡','424107':'中国银行.长城人民币信用卡-员工金卡','424108':'中国银行.长城人民币信用卡-个人普卡','424109':'中国银行.长城人民币信用卡-员工普卡','424110':'中国银行.长城人民币信用卡-单位普卡','424111':'中国银行.长城人民币信用卡-单位金卡','424902':'中国银行.长城国际卡(美元卡)-白金卡','425862':'中国光大银行.阳光商旅信用卡','427010':'工商银行.牡丹VISA信用卡','427018':'工商银行.牡丹VISA信用卡','427019':'工商银行.牡丹VISA信用卡','427020':'工商银行.牡丹VISA信用卡','427028':'工商银行.国际借记卡','427029':'工商银行.牡丹VISA信用卡','427038':'工商银行.国际借记卡','427039':'工商银行.牡丹VISA信用卡','427062':'工商银行.牡丹VISA信用卡','427064':'工商银行.牡丹VISA信用卡','427571':'中国民生银行.民生国际借记卡','428911':'广东发展银行.广发信用卡','431502':'华夏.华夏卡','431502':'华夏.华夏卡','433666':'中信实业银行.中信贷记卡','433670':'中信实业银行.中信借记卡','433680':'中信实业银行.中信借记卡','434061':'建设银行.乐当家金卡VISA','434062':'建设银行.乐当家白金卡VISA','435744':'深圳发展银行.沃尔玛百分卡','435745':'深圳发展银行.沃尔玛百分卡','436718':'建设银行.龙卡贷记卡公司卡金卡VISA','436728':'建设银行.龙卡普通卡VISA','436738':'建设银行.龙卡贷记卡公司卡普通卡VISA','436742':'建设银行.龙卡储蓄卡','436745':'建设银行.龙卡国际普通卡VISA','436748':'建设银行.龙卡国际金卡VISA','436768':'广东发展银行.广发信用卡','438088':'中国银行.中银奥运信用卡个人卡','438125':'工商银行.牡丹VISA信用卡','438126':'中国工商银行.牡丹VISA白金卡','438588':'兴业银行.兴业智能卡','438589':'兴业银行.兴业智能卡','438600':'上海银行.上海申卡IC','439188':'招商银行.招商银行银行信用卡','439225':'招商银行.VISA信用卡','439227':'招商银行.VISA商务信用卡','442729':'中信实业银行.中信国际借记卡','442730':'中信实业银行.中信国际借记卡','451289':'兴业银行.VISA信用卡','451291':'中国银行.长城国际卡(欧元卡)-个人金卡','451804':'工商银行.牡丹贷记卡','451804':'工商银行.牡丹贷记卡','451810':'工商银行.牡丹贷记卡','451810':'工商银行.牡丹贷记卡','453242':'建设银行.VISA准贷记卡','456351':'中国银行.长城电子借记卡','456418':'上海浦东发展银行.浦发银行VISA年青卡','458060':'工商银行.牡丹信用卡','458060':'工商银行.牡丹信用卡','458071':'工商银行.牡丹贷记卡','458071':'工商银行.牡丹贷记卡','458123':'交通银行.太平洋双币贷记卡VISA','458124':'交通银行.太平洋双币贷记卡VISA','468203':'招商银行.招商银行银行国际卡','472067':'民生银行.民生国际卡','472068':'民生银行.民生国际卡','479228':'招商银行.招商银行银行信用卡','479229':'招商银行.招商银行银行信用卡','481699':'中国光大银行.阳光白金信用卡','486466':'上海银行.申卡贷记卡','486493':'兴业银行.VISA商务普卡','486494':'兴业银行.VISA商务金卡','486497':'中国光大银行.阳光商旅信用卡','487013':'广东发展银行.广发VISA信用卡','489592':'中国建设银行.VISA白金/钻石信用卡','489734':'中国工商银行.牡丹欧元卡','489735':'中国工商银行.牡丹欧元卡','489736':'中国工商银行.牡丹欧元卡','491020':'农业银行.金穗信用卡','491020':'农业银行.金穗信用卡','491031':'建设银行.VISA准贷记金卡','491032':'广东发展银行.广发信用卡','491040':'交通银行.太平洋信用卡','493427':'广东发展银行.广发信用卡','493878':'中国银行.长城国际卡(港币卡)-个人金卡','498451':'上海浦东发展银行.上海浦东发展银行信用卡VISA白金卡','504923':'常州商业银行.月季卡','510529':'工商银行.牡丹万事达国际借记卡','512315':'中国银行.中银万事达信用卡员工普卡','512316':'中国银行.中银万事达信用卡个人普卡','512411':'中国银行.中银万事达信用卡员工金卡','512412':'中国银行.中银万事达信用卡个人金卡','512425':'招商银行.招商银行银行国际卡','512431':'宁波市商业银行.汇通国际卡','512466':'民生银行.民生贷记卡','512695':'中国银行.长城国际卡(英镑卡)-个人普卡','512732':'中国银行.长城国际卡(英镑卡)-个人金卡','514906':'中信实业银行.中信贷记卡','514957':'中国银行.中银万事达信用卡员工白金卡','514958':'中国银行.中银万事达信用卡个人白金卡','517636':'民生银行.民生贷记卡','518212':'中信实业银行.中信贷记卡','518364':'广东发展银行.广发信用卡','518378':'中国银行.长城人民币信用卡-个人金卡','518379':'中国银行.长城人民币信用卡-员工金卡','518474':'中国银行.长城人民币信用卡-专用卡普卡','518475':'中国银行.长城人民币信用卡-员工普卡','518476':'中国银行.长城人民币信用卡-个人普卡','518710':'招商银行.MASTER信用卡','518718':'招商银行.MASTER信用金卡','519412':'农业银行.金穗贷记卡','519498':'上海银行.双币种申卡贷记卡普通卡','520082':'农业银行.金穗贷记卡','520108':'中信实业银行.中信贷记卡','520131':'上海银行.双币种申卡贷记卡金卡','520152':'广东发展银行.广发万事达信用卡','520169':'交通银行.太平洋双币贷记卡MasterCard','520194':'宁波市商业银行.汇通国际卡','520382':'广东发展银行.广发万事达信用卡','521899':'交通银行.太平洋双币贷记卡MasterCard','522153':'中国银行.长城国际卡(欧元卡)-个人普卡','523036':'兴业银行.万事达信用卡','524011':'招商银行.招商银行银行国际卡','524047':'工商银行.牡丹万事达白金卡','524070':'兴业银行.万事达信用卡','524091':'中国工商银行.牡丹海航信用卡个人金卡','524094':'建设银行.乐当家金卡MASTER','524864':'中国银行.长城信用卡','524865':'中国银行.长城信用卡','525498':'中国工商银行.牡丹海航信用卡个人普卡','525745':'中国银行.长城信用卡','525746':'中国银行.长城信用卡','526410':'建设银行.乐当家银卡MASTER','526855':'深圳市商业银行.深圳市商业银行信用卡','527414':'兴业银行.加菲猫信用卡','528020':'深圳市商业银行.深圳市商业银行信用卡','528931':'广东发展银行.广发万事达信用卡','528948':'民生银行.民生贷记卡','530970':'工商银行.牡丹万事达信用卡','530980':'工商银行.牡丹信用卡','530980':'工商银行.牡丹信用卡','530990':'工商银行.牡丹万事达信用卡','532420':'建设银行.MASTER准贷记卡','532430':'建设银行.龙卡普通卡MASTER','532450':'建设银行.龙卡国际普通卡MASTER','532458':'建设银行.龙卡国际金卡MASTER','535910':'农业银行.金穗信用卡','535910':'农业银行.金穗信用卡','535918':'农业银行.金穗信用卡','537830':'交通银行.太平洋信用卡','540297':'中国银行.长城国际卡(港币卡)-个人普卡','540838':'中国银行.长城国际卡(美元卡)-个人普卡','541068':'中国银行.长城国际卡(美元卡)-个人金卡','541709':'广东发展银行.广发信用卡','543159':'中国光大银行.第十八届世界足球锦标赛纪念卡','544033':'建设银行.MASTER准贷记金卡','545619':'招商银行.万事达信用卡','545623':'招商银行.万事达信用卡','545947':'招商银行.万事达信用卡','547628':'中国银行.长城国际卡(美元卡)-商务普卡','547648':'中国银行.长城国际卡(港币卡)-商务普卡','547766':'中国银行.长城人民币信用卡-单位普卡','547766':'中国银行.长城万事达信用卡单位普卡','548259':'工商银行.国际借记卡','548844':'广东发展银行.广发信用卡','552245':'建设银行.乐当家白金卡MASTER','552288':'民生银行.民生贷记卡','552534':'招商银行.招商银行银行信用卡','552587':'招商银行.招商银行银行信用卡','552599':'农业银行.金穗贷记卡','552742':'中国银行.长城公务卡','552794':'广东发展银行.广发万事达信用卡','552801':'建设银行.龙卡贷记卡公司卡普通卡MASTER','552853':'交通银行.太平洋双币贷记卡MasterCard','553131':'中国银行.长城公务卡','553242':'建设银行.龙卡信用卡','556610':'民生银行.民生贷记卡','556617':'中信实业银行.中信MASTERCARD人民币+美金双币贷记卡','558360':'工商银行.牡丹万事达信用卡','558730':'农业银行.金穗贷记卡','558808':'中国银行.长城国际卡(港币卡)-商务金卡','558809':'中国银行.长城国际卡(美元卡)-商务金卡','558868':'中国银行.长城人民币信用卡-单位金卡','558868':'中国银行.中银万事达信用卡单位金卡','558894':'广东发展银行.广发万事达信用卡','558895':'建设银行.龙卡贷记卡公司卡金卡MASTER','558916':'中信实业银行.中信MASTERCARD人民币+美金双币贷记卡','566666':'沈阳市商业银行.玫瑰卡','584016':'深圳农联社.信通卡','601100':'D.F.S.I(备注1).发现卡','601101':'D.F.S.I.发现卡','601121':'D.F.S.I.发现卡','601122':'D.F.S.I.发现卡','601123':'D.F.S.I.发现卡','601124':'D.F.S.I.发现卡','601125':'D.F.S.I.发现卡','601126':'D.F.S.I.发现卡','601127':'D.F.S.I.发现卡','601128':'D.F.S.I.发现卡','601131':'D.F.S.I.发现卡','601136':'D.F.S.I.发现卡','601137':'D.F.S.I.发现卡','601138':'D.F.S.I.发现卡','601140':'D.F.S.I.发现卡','601142':'D.F.S.I.发现卡','601143':'D.F.S.I.发现卡','601144':'D.F.S.I.发现卡','601145':'D.F.S.I.发现卡','601146':'D.F.S.I.发现卡','601147':'D.F.S.I.发现卡','601148':'D.F.S.I.发现卡','601149':'D.F.S.I.发现卡','601174':'D.F.S.I.发现卡','601177':'D.F.S.I.发现卡','601178':'D.F.S.I.发现卡','601179':'D.F.S.I.发现卡','601186':'D.F.S.I.发现卡','601187':'D.F.S.I.发现卡','601188':'D.F.S.I.发现卡','601189':'D.F.S.I.发现卡','601382':'中国银行.长城电子借记卡','601382':'中国银行.长城电子借记卡','601428':'交通银行.太平洋万事顺卡','601428':'交通银行.太平洋万事顺卡','601428':'交通银行.太平洋万事顺卡','601428':'交通银行.太平洋万事顺卡','602907':'深圳商业银行.万事顺卡','602907':'深圳商业银行.万事顺卡','602969':'北京银行.京卡','602969':'北京银行.京卡','603128':'南京市商业银行.梅花卡','603128':'南京市商业银行.梅花卡','603367':'杭州商业银行.西湖卡','603367':'杭州商业银行.西湖卡','603445':'广州市商业银行.羊城借记卡','603445':'广州市商业银行.羊城借记卡','603506':'苏州市商业银行.姑苏卡','603506':'苏州市商业银行.姑苏卡','603601':'徽商银行合肥分行.黄山卡','603601':'徽商银行合肥分行.黄山卡','603601':'徽商银行合肥分行.黄山卡','603601':'徽商银行合肥分行.黄山卡','603601':'徽商银行合肥分行.黄山卡','603601':'徽商银行合肥分行.黄山卡','603602':'绍兴商业银行.兰花卡','603602':'绍兴商业银行.兰花卡','603694':'常熟农村商业银行.粒金卡','603694':'常熟农村商业银行.粒金卡','603708':'大连商业银行.北方明珠卡','603708':'大连商业银行.北方明珠卡','621021':'河北省农村信用社.信通卡','621201':'韩亚银行.','621977':'温州商业银行.金鹿卡','621977':'温州商业银行.金鹿卡','622126':'阜新市商业银行.金通卡','622126':'阜新市商业银行.金通卡','622127':'福建省农村信用社联合社.万通','622127':'厦门市农村信用合作社.万通卡','622127':'福建省农村信用社联合社.万通','622127':'厦门市农村信用合作社.万通卡','622128':'深圳农信社.信通卡','622128':'深圳农信社.信通卡','622129':'深圳市农村信用合作社联合社.信通商务卡','622129':'深圳市农村信用合作社联合社.信通商务卡','622131':'淮安市商业银行.九州借记卡','622131':'淮安市商业银行.九州借记卡','622132':'嘉兴市商业银行.南湖借记卡','622132':'嘉兴市商业银行.南湖借记卡','622133':'贵阳市商业银行.甲秀银联借记卡','622133':'贵阳市商业银行.甲秀银联借记卡','622134':'重庆市商业银行.长江卡','622134':'重庆市商业银行.长江卡','622135':'成都商业银行.锦程卡','622135':'成都商业银行.锦程卡','622136':'西安市商业银行.福瑞卡','622136':'西安市商业银行.福瑞卡','622137':'徽商银行芜湖分行.黄山卡','622137':'徽商银行芜湖分行.黄山卡','622138':'北京农联社.信通卡','622138':'北京农联社.信通卡','622139':'兰州市商业银行.敦煌国际卡','622139':'兰州市商业银行.敦煌国际卡','622140':'廊坊市商业银行.银星卡','622140':'廊坊市商业银行.银星卡','622141':'泰隆城市信用社.泰隆卡','622141':'泰隆城市信用社.泰隆卡','622143':'乌鲁木齐市商业银行.雪莲借记卡','622143':'乌鲁木齐市商业银行.雪莲借记卡','622146':'青岛商行.金桥卡','622146':'青岛商行.金桥卡','622147':'呼市商业银行.百灵卡','622147':'呼市商业银行.百灵卡','622148':'上海银行.人民币申卡贷记卡金卡','622148':'上海银行.人民币申卡贷记卡金卡','622149':'上海银行.人民币申卡贷记卡普通卡','622149':'上海银行.人民币申卡贷记卡普通卡','622150':'国家邮政局.绿卡银联标准卡','622150':'国家邮政局.绿卡银联标准卡','622151':'国家邮政局.绿卡银联标准卡','622151':'国家邮政局.绿卡银联标准卡','622152':'成都市商业银行.锦程卡金卡','622152':'成都市商业银行.锦程卡金卡','622153':'成都市商业银行.锦程卡定活一卡通金卡','622153':'成都市商业银行.锦程卡定活一卡通金卡','622154':'成都市商业银行.锦程卡定活一卡通','622154':'成都市商业银行.锦程卡定活一卡通','622155':'深圳市商业银行.深圳市商业银行信用卡','622155':'深圳市商业银行.深圳市商业银行信用卡','622156':'深圳市商业银行.深圳市商业银行信用卡','622156':'深圳市商业银行.深圳市商业银行信用卡','622165':'包头市商业银行.包头市商业银行借记卡','622165':'包头市商业银行.包头市商业银行借记卡','622166':'中国建设银行.龙卡人民币信用卡','622166':'中国建设银行.龙卡人民币信用卡','622168':'中国建设银行.龙卡人民币信用金卡','622168':'中国建设银行.龙卡人民币信用金卡','622169':'湖南省农村信用社联合社.福祥借记卡','622169':'湖南省农村信用社联合社.福祥借记卡','622178':'吉林市商业银行.信用卡','622178':'吉林市商业银行.信用卡','622179':'吉林市商业银行.信用卡','622179':'吉林市商业银行.信用卡','622184':'福建省农村信用社联合社.万通','622184':'福建省农村信用社联合社.万通','622188':'国家邮政局.绿卡银联标准卡','622188':'国家邮政局.绿卡银联标准卡','622199':'国家邮政局.绿卡银联标准卡','622199':'国家邮政局.绿卡银联标准卡','622200':'中国工商银行.灵通卡','622200':'中国工商银行.灵通卡','622202':'中国工商银行.E时代卡','622202':'中国工商银行.E时代卡','622203':'中国工商银行.E时代卡','622203':'中国工商银行.E时代卡','622208':'中国工商银行.理财金卡','622208':'中国工商银行.理财金卡','622210':'中国工商银行.准贷记卡','622210':'中国工商银行.准贷记卡','622211':'中国工商银行.准贷记卡','622211':'中国工商银行.准贷记卡','622212':'中国工商银行.准贷记卡','622212':'中国工商银行.准贷记卡','622213':'中国工商银行.准贷记卡','622213':'中国工商银行.准贷记卡','622214':'中国工商银行.准贷记卡','622214':'中国工商银行.准贷记卡','622215':'中国工商银行.准贷记卡','622215':'中国工商银行.准贷记卡','622220':'中国工商银行.准贷记卡','622220':'中国工商银行.准贷记卡','622225':'中国工商银行.准贷记卡','622225':'中国工商银行.准贷记卡','622230':'中国工商银行.贷记卡','622230':'中国工商银行.贷记卡','622235':'中国工商银行.贷记卡','622235':'中国工商银行.贷记卡','622240':'中国工商银行.贷记卡','622240':'中国工商银行.贷记卡','622245':'中国工商银行.贷记卡','622245':'中国工商银行.贷记卡','622250':'交通银行股份有限公司太平洋双币信用卡中心.太平洋人民币贷记卡','622250':'交行太平洋卡中心.太平洋人民币贷记卡','622251':'交通银行股份有限公司太平洋双币信用卡中心.太平洋人民币贷记卡','622251':'交行太平洋卡中心.太平洋人民币贷记卡','622252':'交通银行股份有限公司太平洋双币信用卡中心.太平洋人民币贷记卡','622252':'交行太平洋卡中心.太平洋人民币贷记卡','622253':'交通银行股份有限公司太平洋双币信用卡中心.太平洋人民币贷记卡','622253':'交行太平洋卡中心.太平洋人民币贷记卡','622254':'交通银行.太平洋人民币准贷记卡','622254':'交通银行.太平洋人民币准贷记卡','622258':'交通银行.太平洋人民币借记卡','622258':'交通银行.太平洋人民币借记卡','622259':'交通银行.太平洋人民币借记卡','622259':'交通银行.太平洋人民币借记卡','622260':'交通银行.太平洋人民币借记卡','622260':'交通银行.太平洋人民币借记卡','622261':'交通银行.太平洋人民币借记卡','622261':'交通银行.太平洋人民币借记卡','622280':'建设银行.622280银联储蓄卡','622280':'建设银行.622280银联储蓄卡','622291':'柳州市商业银行.龙城卡','622291':'柳州市商业银行.龙城卡','622292':'柳州市商业银行.龙城卡','622292':'柳州市商业银行.龙城卡','622301':'湖州市商业银行.百合卡','622301':'湖州市商业银行.百合卡','622302':'佛山市禅城区农村信用联社.信通卡','622302':'佛山市禅城区农村信用联社.信通卡','622303':'南京市商业银行.梅花贷记卡','622303':'南京市商业银行.梅花贷记卡','622305':'南京市商业银行.梅花借记卡','622305':'南京市商业银行.梅花借记卡','622307':'九江市商业银行.庐山卡','622307':'九江市商业银行.庐山卡','622308':'昆明商业银行.春城卡','622308':'昆明商业银行.春城卡','622310':'西宁市商业银行.三江银行卡','622310':'西宁市商业银行.三江银行卡','622311':'淄博市商业银行.金达借记卡','622311':'淄博市商业银行.金达借记卡','622312':'徐州市郊农村信用合作联社.信通卡','622312':'徐州市郊农村信用合作联社.信通卡','622316':'宁波市商业银行.汇通卡','622316':'宁波市商业银行.汇通卡','622318':'宁波市商业银行.汇通卡','622318':'宁波市商业银行.汇通卡','622319':'山东农村信用联合社.信通卡','622319':'山东农村信用联合社.信通卡','622321':'台州市商业银行.大唐贷记卡','622321':'台州市商业银行.大唐贷记卡','622322':'顺德农信社.恒通卡','622322':'顺德农信社.恒通卡','622323':'常熟农村商业银行.粒金借记卡','622323':'常熟农村商业银行.粒金借记卡','622324':'江苏农信.圆鼎卡','622324':'江苏农信.圆鼎卡','622325':'武汉市商业银行.九通卡','622325':'武汉市商业银行.九通卡','622327':'徽商银行马鞍山分行.黄山卡','622327':'徽商银行马鞍山分行.黄山卡','622328':'东莞农村信用合作社.信通卡','622328':'东莞农村信用合作社.信通卡','622329':'天津市农村信用社.信通借记卡','622329':'天津市农村信用社.信通借记卡','622331':'天津市商业银行.津卡','622331':'天津市商业银行.津卡','622332':'张家港市农村商业银行.一卡通','622332':'张家港市农村商业银行.一卡通','622333':'东莞市商业银行.万顺通卡','622333':'东莞市商业银行.万顺通卡','622335':'南宁市商业银行.桂花卡','622335':'南宁市商业银行.桂花卡','622336':'包头市商业银行.雄鹰卡','622336':'包头市商业银行.雄鹰卡','622337':'连云港市商业银行.金猴神通借记卡','622337':'连云港市商业银行.金猴神通借记卡','622338':'焦作市商业银行.月季借记卡','622338':'焦作市商业银行.月季借记卡','622339':'鄞州农村合作银行.蜜蜂借记卡','622339':'鄞州农村合作银行.蜜蜂借记卡','622340':'徽商银行淮北分行.黄山卡','622340':'徽商银行淮北分行.黄山卡','622341':'江阴农村商业银行.合作借记卡','622341':'江阴农村商业银行.合作借记卡','622342':'攀枝花市商业银行.攀枝花卡','622342':'攀枝花市商业银行.攀枝花卡','622343':'佛山市三水区农村信用合作社.信通卡','622343':'佛山市三水区农村信用合作社.信通卡','622345':'成都农信社.天府借记卡','622345':'成都农信社.天府借记卡','622346':'中国银行.人民币信用卡金卡','622346':'中国银行.人民币信用卡金卡','622347':'中国银行.人民币信用卡普通卡','622347':'中国银行.人民币信用卡普通卡','622348':'中国银行.中银卡','622348':'中国银行.中银卡','622349':'南洋商业银行.人民币信用卡金卡','622349':'南洋商业银行.人民币信用卡金卡','622350':'南洋商业银行.人民币信用卡普通卡','622350':'南洋商业银行.人民币信用卡普通卡','622351':'南洋商业银行.中银卡','622351':'南洋商业银行.中银卡','622352':'集友银行.人民币信用卡金卡','622352':'集友银行.人民币信用卡金卡','622353':'集友银行.人民币信用卡普通卡','622353':'集友银行.人民币信用卡普通卡','622355':'集友银行.中银卡','622355':'集友银行.中银卡','622358':'沧州农信社.信通卡','622358':'沧州农信社.信通卡','622359':'临沂市商业银行.沂蒙卡','622359':'临沂市商业银行.沂蒙卡','622360':'香港上海汇丰银行有限公司.人民币卡','622360':'香港上海汇丰银行有限公司.人民币卡','622361':'香港上海汇丰银行有限公司.人民币金卡','622361':'香港上海汇丰银行有限公司.人民币金卡','622362':'中山市农村信用合作社.信通卡','622362':'中山市农村信用合作社.信通卡','622363':'珠海市商业银行.万事顺卡','622363':'珠海市商业银行.万事顺卡','622365':'东亚银行有限公司.电子网络人民币卡','622365':'东亚银行有限公司.电子网络人民币卡','622366':'徽商银行安庆分行.黄山卡','622366':'徽商银行安庆分行.黄山卡','622367':'绵阳市商业银行.科技城卡','622367':'绵阳市商业银行.科技城卡','622368':'长沙市商业银行.芙蓉卡','622368':'长沙市商业银行.芙蓉卡','622369':'昆明市农村信用联社.金碧一卡通','622369':'昆明市农村信用联社.金碧一卡通','622370':'泉州市商业银行.海峡银联卡','622370':'泉州市商业银行.海峡银联卡','622371':'花旗银行有限公司.花旗人民币信用卡','622371':'花旗银行有限公司.花旗人民币信用卡','622373':'大新银行有限公司.大新人民币信用卡普通卡','622373':'大新银行有限公司.大新人民币信用卡普通卡','622375':'大新银行有限公司.人民币借记卡','622375':'大新银行有限公司.人民币借记卡','622376':'恒生银行有限公司.恒生人民币信用卡','622376':'恒生银行有限公司.恒生人民币信用卡','622377':'恒生银行有限公司.恒生人民币金卡','622377':'恒生银行有限公司.恒生人民币金卡','622378':'恒生银行有限公司.恒生人民币白金卡','622378':'恒生银行有限公司.恒生人民币白金卡','622379':'济南市商业银行.齐鲁卡','622379':'济南市商业银行.齐鲁卡','622382':'美国银行.人民币卡','622382':'美国银行.人民币卡','622383':'大连市商业银行.大连市商业银行贷记卡','622383':'大连市商业银行.大连市商业银行贷记卡','622384':'恒丰银行.九州借记卡','622384':'恒丰银行.九州借记卡','622385':'大连市商业银行.大连市商业银行贷记卡','622385':'大连市商业银行.大连市商业银行贷记卡','622386':'上海商业银行.人民币信用卡','622386':'上海商业银行.人民币信用卡','622387':'永隆银行有限公司.永隆人民币信用卡','622387':'永隆银行有限公司.永隆人民币信用卡','622388':'福州市商业银行.榕城卡','622388':'福州市商业银行.榕城卡','622389':'宁波鄞州农村合作银行.蜜蜂贷记卡','622389':'宁波鄞州农村合作银行.蜜蜂贷记卡','622391':'潍坊商业银行.鸢都卡','622391':'潍坊商业银行.鸢都卡','622392':'泸州市商业银行.酒城卡','622392':'泸州市商业银行.酒城卡','622393':'厦门市商业银行.银鹭借记卡','622393':'厦门市商业银行.银鹭借记卡','622394':'镇江市商业银行.金山灵通卡','622394':'镇江市商业银行.金山灵通卡','622395':'大同市商业银行.云冈卡','622395':'大同市商业银行.云冈卡','622396':'宜昌市商业银行.三峡卡','622396':'宜昌市商业银行.三峡卡','622397':'宜昌市商业银行.信用卡','622397':'宜昌市商业银行.信用卡','622398':'葫芦岛市商业银行.一通卡','622399':'辽阳市商业银行.新兴卡','622399':'辽阳市商业银行.新兴卡','622400':'营口市商业银行.辽河一卡通','622400':'营口市商业银行.辽河一卡通','622406':'香港上海汇丰银行有限公司.ATM Card','622406':'香港上海汇丰银行有限公司.ATM Card','622407':'香港上海汇丰银行有限公司.ATM Card','622407':'香港上海汇丰银行有限公司.ATM Card','622411':'威海市商业银行.通达卡','622411':'威海市商业银行.通达卡','622412':'湖北农信社.信通卡','622412':'湖北农信社.信通卡','622413':'鞍山市商业银行.千山卡','622413':'鞍山市商业银行.千山卡','622415':'丹东商行.银杏卡','622415':'丹东商行.银杏卡','622418':'南通市商业银行.金桥卡','622418':'南通市商业银行.金桥卡','622420':'洛阳市商业银行.都市一卡通','622420':'洛阳市商业银行.都市一卡通','622421':'郑州商业银行.世纪一卡通','622421':'郑州商业银行.世纪一卡通','622422':'扬州市商业银行.绿扬卡','622422':'扬州市商业银行.绿扬卡','622423':'永隆银行有限公司.永隆人民币信用卡','622423':'永隆银行有限公司.永隆人民币信用卡','622425':'哈尔滨市商业银行.丁香借记卡','622425':'哈尔滨市商业银行.丁香借记卡','622426':'天津市商业银行.津卡贷记卡','622426':'天津市商业银行.津卡贷记卡','622427':'台州市商业银行.大唐卡','622427':'台州市商业银行.大唐卡','622428':'银川市商业银行.如意卡','622428':'银川市商业银行.如意卡','622429':'银川市商业银行.如意借记卡','622429':'银川市商业银行.如意借记卡','622432':'大西洋银行股份有限公司.澳门币卡','622432':'大西洋银行股份有限公司.澳门币卡','622434':'澳门国际银行.人民币卡','622434':'澳门国际银行.人民币卡','622435':'澳门国际银行.港币卡','622435':'澳门国际银行.港币卡','622436':'澳门国际银行.澳门币卡','622436':'澳门国际银行.澳门币卡','622439':'广州农村信用合作社联合社.麒麟储蓄卡','622439':'广州农村信用合作社.麒麟储蓄卡','622440':'吉林市商业银行.雾凇卡','622440':'吉林市商业银行.雾凇卡','622441':'三门峡市城市信用社.天鹅卡','622441':'三门峡市城市信用社.天鹅卡','622442':'抚顺市商业银行.绿叶卡','622442':'抚顺市商业银行.绿叶卡','622443':'昆山农村信用合作社联合社.江通卡','622443':'昆山农村信用合作社联合社.江通卡','622447':'常州商业银行.月季卡','622447':'常州商业银行.月季卡','622448':'湛江市商业银行.南珠卡','622448':'湛江市商业银行.南珠卡','622449':'金华市商业银行.双龙借记卡','622449':'金华市商业银行.双龙借记卡','622450':'金华市商业银行.双龙贷记卡','622450':'金华市商业银行.双龙贷记卡','622451':'大新银行有限公司.大新人民币信用卡金卡','622451':'大新银行有限公司.大新人民币信用卡金卡','622452':'江苏农信社.圆鼎卡','622452':'江苏农信社.圆鼎卡','622453':'中信嘉华银行有限公司.人民币信用卡金卡','622453':'中信嘉华银行有限公司.人民币信用卡金卡','622456':'中信嘉华银行有限公司.人民币信用卡普通卡','622456':'中信嘉华银行有限公司.人民币信用卡普通卡','622459':'中信嘉华银行有限公司.人民币借记卡','622459':'中信嘉华银行有限公司.人民币借记卡','622462':'常熟市农村商业银行.粒金贷记卡','622462':'常熟市农村商业银行.粒金贷记卡','622463':'廖创兴银行有限公司.港币借记卡','622463':'廖创兴银行有限公司.港币借记卡','622466':'沈阳市商业银行.玫瑰卡','622466':'沈阳市商业银行.玫瑰卡','622467':'广州市商业银行.羊城借记卡','622467':'广州市商业银行.羊城借记卡','622468':'上海银行.申卡','622468':'上海银行.申卡','622470':'江门市新会农信社.信通卡','622470':'江门市新会农信社.信通卡','622471':'东亚银行有限公司.人民币信用卡','622471':'东亚银行有限公司.人民币信用卡','622472':'东亚银行有限公司.人民币信用卡金卡','622472':'东亚银行有限公司.人民币信用卡金卡','622476':'乌鲁木齐市商业银行.雪莲贷记卡','622476':'乌鲁木齐市商业银行.雪莲贷记卡','622477':'高要市农村信用联社.信通卡','622477':'高要市农村信用联社.信通卡','622478':'上海市农村信用合作社联合社.如意卡','622478':'上海市农村信用合作社联社.如意卡','622481':'江阴市农村商业银行.合作贷记卡','622481':'江阴市农村商业银行.合作贷记卡','622485':'无锡市商业银行.太湖金保卡','622485':'无锡市商业银行.太湖金保卡','622486':'绍兴市商业银行.兰花卡','622486':'绍兴市商业银行.兰花卡','622487':'星展银行.银联人民币银行卡','622487':'星展银行.银联人民币银行卡','622487':'星展银行.银联人民币银行卡','622487':'星展银行.银联人民币银行卡','622488':'吴江农村商业银行.垂虹卡','622488':'吴江农村商业银行.垂虹卡','622489':'大新银行有限公司.借记卡','622489':'大新银行有限公司.借记卡','622490':'星展银行.银联人民币银行卡','622490':'星展银行.银联人民币银行卡','622490':'星展银行.银联人民币银行卡','622490':'星展银行.银联人民币银行卡','622491':'星展银行.银联银行卡','622491':'星展银行.银联港币银行卡','622491':'星展银行.银联港币银行卡','622491':'星展银行.银联银行卡','622492':'星展银行.银联银行卡','622492':'星展银行.银联港币银行卡','622492':'星展银行.银联港币银行卡','622492':'星展银行.银联银行卡','622493':'AEON信贷财务.AEON JUSCO银联卡','622493':'AEON信贷财务.AEON JUSCO银联卡','622495':'Travelex.Travelex港币卡','622495':'Travelex.Travelex港币卡','622496':'Travelex.Travelex美元卡','622496':'Travelex.Travelex美元卡','622498':'石家庄市商业银行.如意借记卡','622498':'石家庄市商业银行.如意借记卡','622499':'石家庄市商业银行.如意借记卡','622499':'石家庄市商业银行.如意借记卡','622500':'上海浦东发展银行.东方卡','622500':'上海浦东发展银行.东方卡','622506':'陕西省农村信用社联合社.陕西信合富泰卡','622506':'陕西省农村信用社联合社.陕西信合富泰卡','622509':'高要市农村信用合作社联合社.信通白金卡','622509':'高要市农村信用合作社联社.信通白金卡','622510':'高要市农村信用合作社联合社.信通金卡','622510':'高要市农村信用合作社联社.信通金卡','622516':'上海浦东发展银行.东方-轻松理财卡白金卡','622516':'上海浦东发展银行.东方-轻松理财卡白金卡','622517':'上海浦东发展银行.东方-轻松理财卡普卡','622517':'上海浦东发展银行.东方-轻松理财卡普卡','622518':'上海浦东发展银行.东方-轻松理财卡钻石卡','622518':'上海浦东发展银行.东方-轻松理财卡钻石卡','622519':'上海浦东发展银行.东方-新标准准贷记卡','622519':'上海浦东发展银行.东方-新标准准贷记卡','622521':'上海浦东发展银行.东方卡','622521':'上海浦东发展银行.东方卡','622522':'上海浦东发展银行.东方卡','622522':'上海浦东发展银行.东方卡','622523':'上海浦东发展银行.东方卡','622523':'上海浦东发展银行.东方卡','622525':'深圳发展银行.人民币信用卡金卡','622525':'深圳发展银行.人民币信用卡金卡','622526':'深圳发展银行.人民币信用卡普卡','622526':'深圳发展银行.人民币信用卡普卡','622538':'深圳发展银行.发展卡','622538':'深圳发展银行.发展卡','622546':'大丰银行有限公司.人民币借记卡','622546':'大丰银行有限公司.人民币借记卡','622547':'大丰银行有限公司.港币借记卡','622547':'大丰银行有限公司.港币借记卡','622548':'大丰银行有限公司.澳门币借记卡','622548':'大丰银行有限公司.澳门币借记卡','622549':'哈萨克斯坦国民储蓄银行.Halykbank Classic','622549':'哈萨克斯坦国民储蓄银行.Halykbank Classic','622550':'哈萨克斯坦国民储蓄银行.Halykbank Golden','622550':'哈萨克斯坦国民储蓄银行.Halykbank Golden','622561':'德阳市商业银行.锦程卡定活一卡通白金卡','622561':'德阳市商业银行.锦程卡定活一卡通白金卡','622562':'德阳市商业银行.锦程卡定活一卡通金卡','622562':'德阳市商业银行.锦程卡定活一卡通金卡','622563':'德阳市商业银行.锦程卡定活一卡通','622563':'德阳市商业银行.锦程卡定活一卡通','622575':'招商银行.招商银行信用卡','622575':'招商银行银行.招商银行银行信用卡','622576':'招商银行.招商银行信用卡','622576':'招商银行银行.招商银行银行信用卡','622577':'招商银行.招商银行信用卡','622577':'招商银行银行.招商银行银行信用卡','622578':'招商银行.招商银行信用卡','622578':'招商银行银行.招商银行银行信用卡','622579':'招商银行.招商银行信用卡','622579':'招商银行银行.招商银行银行信用卡','622580':'招商银行.一卡通','622580':'招商银行银行.一卡通','622581':'招商银行.招商银行信用卡','622581':'招商银行银行.招商银行银行信用卡','622582':'招商银行.招商银行信用卡','622582':'招商银行银行.招商银行银行信用卡','622588':'招商银行.一卡通','622588':'招商银行银行.一卡通','622598':'招商银行.公司卡','622598':'招商银行银行.公司卡','622600':'民生银行.民生信用卡','622600':'民生银行.民生信用卡','622601':'民生银行.民生信用卡','622601':'民生银行.民生信用卡','622602':'中国民生银行.民生银联白金信用卡','622602':'中国民生银行.民生银联白金信用卡','622603':'中国民生银行.民生银联商务信用卡','622603':'中国民生银行.民生银联商务信用卡','622615':'民生银行.民生借记卡','622615':'民生银行.民生借记卡','622617':'中国民生银行.民生借记卡','622617':'中国民生银行.民生借记卡','622619':'中国民生银行.民生借记卡','622619':'中国民生银行.民生借记卡','622622':'中国民生银行.民生借记卡','622622':'中国民生银行.民生借记卡','622630':'华夏银行.华夏卡','622630':'华夏银行.华夏卡','622631':'华夏银行.华夏至尊金卡','622631':'华夏银行.华夏至尊金卡','622632':'华夏银行.华夏丽人卡','622632':'华夏银行.华夏丽人卡','622633':'华夏银行.华夏万通卡','622633':'华夏银行.华夏万通卡','622650':'中国光大银行.炎黄卡普卡','622650':'中国光大银行.炎黄卡普卡','622655':'中国光大银行.炎黄卡白金卡','622655':'中国光大银行.炎黄卡白金卡','622658':'中国光大银行.炎黄卡金卡','622658':'中国光大银行.炎黄卡金卡','622660':'光大银行.阳光卡','622660':'光大银行.阳光卡','622678':'中信实业银行信用卡中心.中信银联标准贷记卡','622678':'中信实业银行信用卡中心.中信银联标准贷记卡','622679':'中信实业银行信用卡中心.中信银联标准贷记卡','622679':'中信实业银行信用卡中心.中信银联标准贷记卡','622680':'中信实业银行信用卡中心.中信银联标准贷记卡','622680':'中信实业银行信用卡中心.中信银联标准贷记卡','622681':'江西省农村信用社联合社.百福卡','622681':'江西省农村信用社联合社.百福卡','622682':'江西省农村信用社联合社.百福卡','622682':'江西省农村信用社联合社.百福卡','622684':'渤海银行.渤海银行公司借记卡','622684':'渤海银行.渤海银行公司借记卡','622688':'中信实业银行信用卡中心.中信银联标准贷记卡','622688':'中信实业银行信用卡中心.中信银联标准贷记卡','622689':'中信实业银行信用卡中心.中信银联标准贷记卡','622689':'中信实业银行信用卡中心.中信银联标准贷记卡','622690':'中信实业银行.中信借记卡','622690':'中信实业银行.中信借记卡','622691':'中信实业银行.中信借记卡','622691':'中信实业银行.中信借记卡','622692':'中信实业银行.中信贵宾卡','622692':'中信实业银行.中信贵宾卡','622696':'中信银行.中信理财宝金卡','622696':'中信银行.中信理财宝金卡','622698':'中信银行.中信理财宝白金卡','622698':'中信银行.中信理财宝白金卡','622700':'建设银行.龙卡储蓄卡','622700':'中国建设银行.龙卡储蓄卡','622725':'中国建设银行.龙卡准贷记卡','622725':'中国建设银行.龙卡准贷记卡','622728':'中国建设银行.龙卡准贷记卡金卡','622728':'中国建设银行.龙卡准贷记卡金卡','622750':'中国银行澳门分行.人民币信用卡','622750':'中国银行澳门分行.人民币信用卡','622751':'中国银行澳门分行.人民币信用卡','622751':'中国银行澳门分行.人民币信用卡','622752':'中国银行.长城人民币信用卡','622752':'中国银行.长城人民币信用卡-个人普卡','622753':'中国银行.长城人民币信用卡','622753':'中国银行.长城人民币信用卡-个人金卡','622754':'中国银行.长城人民币信用卡-专用卡普卡','622755':'中国银行.长城人民币信用卡','622755':'中国银行.长城人民币信用卡-员工金卡','622756':'中国银行.长城人民币信用卡','622756':'中国银行.长城人民币信用卡-员工金卡','622757':'中国银行.长城人民币信用卡','622757':'中国银行.长城人民币信用卡-员工金卡','622758':'中国银行.长城人民币信用卡','622758':'中国银行.长城人民币信用卡-单位普卡','622759':'中国银行.长城信用卡','622759':'中国银行.长城人民币信用卡-单位金卡','622760':'中国银行.银联单币贷记卡','622760':'中国银行.银联单币贷记卡','622761':'中国银行.长城信用卡','622761':'中国银行.长城信用卡','622762':'中国银行.长城信用卡','622762':'中国银行.长城信用卡','622763':'中国银行.长城信用卡','622763':'中国银行.长城信用卡','622770':'中国银行澳门分行.中银卡','622770':'中国银行澳门分行.中银卡','622777':'曲靖市商业银行.珠江源卡','622777':'曲靖市商业银行.珠江源卡','622821':'农业银行.金穗校园卡','622821':'农业银行.金穗校园卡','622822':'农业银行.金穗星座卡','622822':'农业银行.金穗星座卡','622823':'农业银行.金穗社保卡','622823':'农业银行.金穗社保卡','622824':'农业银行.金穗旅游卡','622824':'农业银行.金穗旅游卡','622825':'农业银行.金穗青年卡','622825':'农业银行.金穗青年卡','622826':'农业银行.复合介质金穗通宝卡','622826':'农业银行.复合介质金穗通宝卡','622827':'农业银行.金穗海通卡','622836':'农业银行.金穗贷记卡','622836':'农业银行.金穗贷记卡','622837':'农业银行.金穗贷记卡','622837':'农业银行.金穗贷记卡','622840':'农业银行.金穗通宝卡(暂未使用)','622840':'农业银行.金穗通宝卡','622841':'农业银行.金穗惠农卡','622842':'农业银行.金穗通宝卡(暂未使用)','622843':'农业银行.金穗通宝贵宾卡(银)','622844':'农业银行.金穗通宝卡(暂未使用)','622844':'农业银行.金穗通宝卡','622845':'农业银行.金穗通宝贵宾卡(金)','622845':'农业银行.金穗通宝卡','622846':'农业银行.金穗通宝贵宾卡(白金)','622846':'中国农业银行.金穗通宝卡','622847':'农业银行.金穗通宝卡(单位卡)','622847':'农业银行.金穗通宝卡','622848':'农业银行.金穗通宝卡(个人普卡)','622848':'农业银行.金穗通宝卡','622849':'农业银行.金穗通宝贵宾卡(钻石)','622855':'江苏东吴农村商业银行.新苏卡','622855':'江苏东吴农村商业银行.新苏卡','622856':'桂林市商业银行.漓江卡','622856':'桂林市商业银行.漓江卡','622857':'日照市商业银行.黄海卡','622857':'日照市商业银行.黄海卡','622858':'浙江省农村信用社联合社.丰收卡','622858':'浙江省农村信用社联社.丰收卡','622859':'珠海农村信用合作社联社.信通卡','622859':'珠海农村信用合作联社.信通卡','622860':'大庆市商业银行.玉兔卡','622860':'大庆市商业银行.玉兔卡','622861':'澳门永亨银行股份有限公司.人民币卡','622861':'澳门永亨银行股份有限公司.人民币卡','622864':'莱芜市商业银行.金凤卡','622864':'莱芜市商业银行.金凤卡','622865':'长春市商业银行.君子兰一卡通','622865':'长春市商业银行.君子兰一卡通','622866':'徐州市商业银行.彭城借记卡','622866':'徐州市商业银行.彭城借记卡','622867':'重庆市农村信用社联合社.信合平安卡','622867':'重庆市农村信用社联合社.信合平安卡','622869':'太仓农村商业银行.郑和卡','622869':'太仓农村商业银行.郑和卡','622870':'靖江市长江城市信用社.长江卡','622870':'靖江市长江城市信用社.长江卡','622871':'永亨银行.永亨尊贵理财卡','622871':'永亨银行.永亨尊贵理财卡','622877':'徽商银行.黄山卡','622877':'徽商银行.黄山卡','622878':'杭州市商业银行.西湖卡','622878':'杭州市商业银行.西湖卡','622879':'徽商银行.黄山卡','622879':'徽商银行.黄山卡','622880':'柳州市商业银行.龙城卡','622880':'柳州市商业银行.龙城卡','622881':'柳州市商业银行.龙城卡','622881':'柳州市商业银行.龙城卡','622882':'尧都区农村信用合作社联社.天河卡','622882':'尧都区农村信用合作社联社.天河卡','622884':'渤海银行.渤海银行借记卡','622884':'渤海银行.渤海银行借记卡','622885':'重庆市农村信用社联合社.信合希望卡','622885':'重庆市农村信用社联合社.信合希望卡','622886':'烟台市商业银行.金通卡','622886':'烟台市商业银行.金通卡','622891':'武进农村商业银行.阳湖卡','622891':'武进农村商业银行.阳湖卡','622892':'上海银行.申卡借记卡','622892':'上海银行.申卡借记卡','622893':'贵州省农村信用社联合社.信合卡','622893':'贵州省农村信用社联合社.信合卡','622895':'江苏锡州农村商业银行.金阿福','622895':'江苏锡州农村商业银行.金阿福','622897':'中外合资.南充市商业银行.熊猫团团卡','622897':'中外合资.南充市商业银行.熊猫团团卡','622898':'长沙市商业银行.芙蓉贷记卡','622898':'长沙市商业银行.芙蓉贷记卡','622900':'长沙市商业银行.芙蓉贷记卡','622900':'长沙市商业银行.芙蓉贷记卡','622901':'兴业银行.银联信用卡','622901':'兴业银行.银联信用卡','622908':'兴业银行.兴业自然人生理财卡','622908':'兴业银行.兴业自然人生理财卡','622909':'兴业银行.万能卡','622909':'兴业银行.万能卡','622940':'石嘴山城市信用社.麒麟卡','622982':'张家口市商业银行.好运卡','628218':'交通银行.太平洋卡','628288':'中国工商银行.公务卡','628366':'中国建设银行.公务卡','628368':'大庆市商业银行.公务卡','650600':'Discover Financial Services,Inc.发现卡','650600':'.发现卡','650700':'Discover Financial Services,Inc.发现卡','650700':'.发现卡','650800':'Discover Financial Services,Inc.发现卡','650800':'.发现卡','650900':'Discover Financial Services,Inc.发现卡','650900':'.发现卡','682900':'上海银行.上海明珠卡','682900':'上海银行.上海明珠卡','683970':'泉州市商业银行.海峡储蓄卡','683970':'泉州市商业银行.海峡储蓄卡','685800':'广东发展银行.广发信用卡','685800':'广东发展银行.广发VISA信用卡','685800':'广东发展银行.广发理财通','685800':'广东发展银行.广发VISA信用卡','685800':'广东发展银行.广发理财通','685800':'广东发展银行.广发信用卡','690755':'招商.招行一卡通','690755':'招商.招行一卡通','690755':'招商银行.招商银行银行一卡通','690755':'招商银行.招商银行银行一卡通','694301':'长沙市商业银行.芙蓉卡','694301':'长沙市商业银行.芙蓉卡','695800':'南通商业银行.金桥卡','695800':'南通商业银行.金桥卡','843010':'浦东发展银行.东方卡','843010':'浦东发展银行.东方卡','843360':'浦东发展银行.东方卡','843360':'浦东发展银行.东方卡','843420':'浦东发展银行.东方卡','843420':'浦东发展银行.东方卡','843610':'浦东发展银行.东方卡','843610':'浦东发展银行.东方卡','843730':'浦东发展银行.东方卡','843730':'浦东发展银行.东方卡','843800':'浦东发展银行.东方卡','843800':'浦东发展银行.东方卡','843850':'浦东发展银行.东方卡','843850':'浦东发展银行.东方卡','843900':'浦东发展银行.东方卡','843900':'浦东发展银行.东方卡','870000':'浦东发展银行.东方卡','870000':'浦东发展银行.东方卡','870100':'浦东发展银行.东方卡','870100':'浦东发展银行.东方卡','870300':'浦东发展银行.东方卡','870300':'浦东发展银行.东方卡','870400':'浦东发展银行.东方卡','870400':'浦东发展银行.东方卡','870500':'浦东发展银行.东方卡','870500':'浦东发展银行.东方卡','888000':'贵阳市商业银行.甲秀卡','888000':'贵阳市商业银行.甲秀卡','940056':'郑州市商业银行.世纪一卡通','955880':'工商银行.牡丹银联灵通卡-个人普卡','955881':'工商银行.牡丹银联灵通卡-个人普卡','955882':'工商银行.牡丹银联灵通卡-个人金卡','955888':'工商银行.牡丹银联理财金卡','984301':'上海浦东发展银行.东方卡','998800':'深圳发展银行.发展卡'}";private static Map<String, String> map = bankInfoJsonToMap();/*** 银行卡JSON转Map* */private static Map<String, String> bankInfoJsonToMap() {Map<String, String> map = JSON.parseObject(bankInfoJson, Map.class);return map;}/*** 根据银行卡号获取对应银行卡所属银行* */public static String getBankName(String bankNo) {if (StringUtils.isBlank(bankNo) || bankNo.length() < 16) {return null;}String bankBin = bankNo.substring(0, 6);return map.get(bankBin);}
}

里面有个字符串JSON:bankInfoJson,这里面有现在各个银行的卡号前6位,但随着后面银行的更新换代,里面肯定不齐全了,但现在可以作为参照使用。

--------------------------------

回到业务上,假设10个员工对应10个收款账户 对应 10条付款记录,每条付款记录里面肯定有一些字段我们用来记录付款信息的,我们假设有个字段,我们称为付款状态(payStatus),里面有四个值(待付款,付款中,付款成功,付款失败),没有付款前,状态为待付款,我们调用接口进行付款的时候,状态就要改为付款中了,由于付款结果不会从付款接口第一时间返回来,后面需要用IBAQ06批付款处理结果查询接口进行查询,查询了才知道是否付款成功,所以业务上我是这么处理的。

1:先校验收款账户信息。

2:生成付款流水号(请求流水号,唯一),请求接口的ReqSeqNo参数使用,后期用来查询交易结果的。

3:交易前业务处理。这里说一下,不要对整个付款流程装进一个事务里面,得分成几个事务。

        3.1:手动开始事务。

        3.2:更新业务数据(更新状态为付款中,记录下付款流水号啥的)。

        3.3:提交这次的事务(不要疑惑为什么要提交事务,前台用户提交交易申请,我们不用管有没有发起农行交易请求,农行付款请求成不成功,我们只管更新业务数据为付款中,至于后面情况如何,用交易查询接口查询一下就明白有没有交易成功了)。

4:开启两个线程,分别对应本行和他行的交易请求,随后直接返回结果给前台用户,告诉用户提交付款成功啥的,让他们过段时间再去查询交易结果。

 农行接口请求完成后,更新业务数据时,再手动开启事务,更新完提交事务就可以了,一般这里就记录请求返回的报文啥的。


测试接口

我写一个他行的测试就行了,大体都差不了多少。

        // 用来存储收款对象List<IBBF23RequestDTO.FileObject> fileObjectList = new ArrayList<>();// 遍历收款对象信息,收款对象信息List.forEach(e -> {IBBF23RequestDTO.FileObject fileObject = new IBBF23RequestDTO.FileObject();// 设置客户编号,本次交易内唯一,具体没啥用,随意赋值fileObject.setCustomerCode(e.getId());// 收款户名fileObject.setCrAccName(e.getBankAccountName());// 收款账号fileObject.setCrBankNo(e.getBankNo());// 币种,人民币,枚举类看我单笔汇兑文章,最后提有,这里就不粘出来了fileObject.setCur(CurrencyEnum.CNY.code());// 收款金额fileObject.setAmt(e.getAmount());// 摘要,长度不能超过60个GBK字节码if (StringUtils.isNotBlank(e.getFeeDesc())) {if (e.getFeeDesc().length() > 30) {fileObject.setExcerpt(e.getFeeDesc().substring(0, 30));} else {fileObject.setExcerpt(e.getFeeDesc());}}// 加急标志,0 不加急,估计没啥用fileObject.setUrgentSign("0");// 支行名fileObject.setCrBankBranchName(e.getBankBranchName());// 支行号fileObject.setCrBankBranchNo(e.getBankBranchCode());fileObjectList.add(fileObject);});IBBF23RequestDTO ibbf23Request = new IBBF23RequestDTO();// 本次交易请求流水号,流水号用于后期查询交易结果ibbf23Request.setReqSeqNo(流水号);// 设置收款对象集合ibbf23Request.setFileObjectList(fileObjectList);// 交易总金额ibbf23Request.setAmt(fileObjectList.stream().mapToDouble(e -> e.getAmt()).sum());IBBF23RequestDTO.Cmp cmp = new IBBF23RequestDTO.Cmp();// 省市代码,付款账户的省市代码,枚举类在我单笔汇总文章后面有,这里不粘了cmp.setDbProv(ProvinceCodeEnum.Guangdong.code());// 币种cmp.setDbCur(CurrencyEnum.CNY.code());// 付款账号cmp.setDbAccNo(payBankNo);// 收款对象数量cmp.setSumNum(fileObjectList.size());ibbf23Request.setCmp(cmp);IBBF23RequestDTO.Corp corp = new IBBF23RequestDTO.Corp();// 付款账户户名corp.setDbAccName(payBankAccountName);ibbf23Request.setCorp(corp);ibbf23Request.setFileObjectList(fileObjectList);

随后在他行线程里面,发起请求就可以了。

// 类上面记得先引入农行请求工具类
// @Autowired
// private AbcErpToIctSocket abcErpToIctSocket;Map<String, Object> erpSocketResultMap = abcErpToIctSocket.ibbf23(ibbf23Request);
// 处理请求接口后的结果
this.handlerSocketResponse(erpSocketResultMap );

请求完成就是更新业务数据,这里不要更新付款状态,除非明确确定没有发起农行的交易请求(农行请求工具类里面的接口返回的map,有个值是有没有发送请求,明确没有发送请求,可以直接定义为付款失败)。发送了农行接口交易请求,那就更新返回报文啥的就行了,付款结果后面再调用查询接口查询。

调用请求接口完成后续处理方法

    /*** 处理socket应答* @erpSocketResultMap socket请求接口返回结果* */private void handlerSocketResponse(Map<String, Object> erpSocketResultMap) {// 记录请求报文if (erpSocketResultMap.get("requestMessage") != null) {erpSocketResultMap.get("requestMessage").toString();}// 记录应答报文if (erpSocketResultMap.get("responseMessage") != null) {erpSocketResultMap.get("responseMessage").toString();}// 如果已经发送socket请求if (erpSocketResultMap.get("isAlreadyResq") != null) {} else {// 如果没有发送请求,那就是直接付款失败}// 响应的返回来源,由农行提供的String respSource = null;// 如果应答对象有值if (erpSocketResultMap.get("responseEntity") != null) {// 公共应答字段ResponseBaseEntity response = (ResponseBaseEntity) erpSocketResultMap.get("responseEntity");// 返回来源respSource = response.getRespSource();// 响应时间response.getRespTime();// 响应描述信息response.getRespInfo();// 响应拓展信息response.getRxtInfo();// 转换成具体的接口响应对象CFRT02ResponseDTO cfrt02Response = (CFRT02ResponseDTO) erpSocketResultMap.get("responseEntity");if (cfrt02Response.getCorp() != null) {// 是否落地处理cfrt02Response.getCorp().getWaitFlag();}} else if (erpSocketResultMap.get("isAlreadyResq") != null) {// 返回对象为空,但发送请求了,可能是因为响应超时,这里要注意,可能交易成功了,所以最好在业务上标记为已成功发送请求,后面在调用其他接口查询交易状态,不可轻易认为是交易失败}// 错误信息if (erpSocketResultMap.get("errorMessage") != null) {erpSocketResultMap.get("errorMessage").toString();}// 根据返回来源判断是否交易失败, -1 表明没有发送请求,交易明确是失败,其他值,就通过查询接口查询确定本次交易状态if (StringUtils.equals("-1", respSource)) {}}

请求报文:

0589   <ap><CCTransCode>IBBF23</CCTransCode><ProductID>ICC</ProductID><ChannelType>ERP</ChannelType><CorpNo></CorpNo><OpNo></OpNo><AuthNo></AuthNo><ReqSeqNo>PO231109092642090123</ReqSeqNo><ReqDate>20231109</ReqDate><ReqTime>092642</ReqTime><Sign></Sign><Amt>0.01</Amt><FileFlag>1</FileFlag><Cmp><DbProv></DbProv><DbAccNo>付款账号</DbAccNo><DbCur>01</DbCur><SumNum>1</SumNum><BatchFileName>16a8bc6a4b764d05812ddd41bfa761cb.bal</BatchFileName></Cmp><Corp><DbAccName>付款户名</DbAccName><NVoucherType>94合约账号类型</NVoucherType><NFAccNo>94合约号</NFAccNo></Corp>
</ap>

应答报文(由于94合约账号没有开启对应业务权限,所以这里返回了[请检查银企通账号权限]):

0467   <ap><Cmp><CmeSeqNo></CmeSeqNo><BatchFileName></BatchFileName><RespPrvData></RespPrvData></Cmp><transserialflag></transserialflag><RespDate></RespDate><RespTime></RespTime><RespSeqNo></RespSeqNo><RespSource>3</RespSource><RespCode>ETBAU0014</RespCode><RespInfo>ETBAU0014-[请检查银企通账号权限]-[]</RespInfo><RxtInfo></RxtInfo><Cme><RecordNum>0</RecordNum><FieldNum>0</FieldNum></Cme>
</ap>

收款对象生成的文件:

好了,终于码字码完了,上班的两天时间抽着时间码了出来,真累,好了,得继续打工了。

赶着写出来的,有不对的地方请指出.....

码字不易,于你有利,记得点赞。 

少年侠气,交结五都雄。肝胆洞。毛发耸。立谈中。死生同。一诺千金重

更多推荐

java农业银行

本文发布于:2024-03-07 05:54:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1717010.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:农业银行   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!