银行卡验证(四要素)和 银行联行号查询(阿里云平台)

使用场景:

  1. 用户绑定银行卡
  2. 根据地区、银行卡号、银行名称获取该地 银行支行信息及联行号

一:银行卡验证

阿里云接口文档说明,可以先买个免费的用于测试


BankValidationService(示例):

@Service
public interface BankValidationService {/*** 验证银行卡* @param param* @return*/Result verifyBank(BankCardParam param);}

BankValidationServiceImpl(示例):

@Slf4j
@Service
@Data
@ConfigurationProperties(prefix = "xym.bank")
public class BankValidationServiceImpl implements BankValidationService {/*** 请求地址*/private String url;/*** appCode码*/private String appCode;@Overridepublic Result verifyBank(BankCardParam param) {Map<String, Object> params = new HashMap<>();params.put("idcard", param.getIdcard());params.put("name", param.getName());params.put("bankcard", param.getBankcard());params.put("mobile", param.getMobile());String response = HttpUtil.createGet(url).form(params).header("Authorization", "APPCODE " + appCode).execute().body();log.info("银行卡验证信息:response:{}", response);JSONObject result = JSONObject.parseObject(response);if ("200".equals(result.getString("code"))) {JSONObject data = JSONObject.parseObject(result.getString("data"));if ("0".equals(data.getString("result"))) {return Result.success();} else {log.error("用户银行卡四要素验证失败,原因:result:{},msg:{},desc:{}", data.getString("result"), data.getString("msg"), data.getString("desc"));return Result.failure(data.getString("desc"));}} else {log.error("用户银行卡四要素验证失败,原因:code:{},msg:{}", result.getString("code"), result.getString("msg"));return Result.failure(result.getString("msg"));}}
}

二:获取联行号

阿里云接口文档说明


OpenBankValidationService(示例):

@Service
public interface OpenBankValidationService {/*** 开户行查询*/Result verifyOpenBank(OpenBankParam param);
}

OpenBankValidationService(示例):

@Slf4j
@Configuration
@Data
@ConfigurationProperties(prefix = "xym.openbank")
public class OpenBankValidationServiceImpl implements OpenBankValidationService {/*** 请求地址*/private String url;/*** appCode码*/private String appCode;@Overridepublic Result verifyOpenBank(OpenBankParam param) {HashMap<String, Object> map = new HashMap<>();map.put("bank",param.getBank()); //银行名称map.put("bankcard",param.getBankcard()); //银行卡号map.put("province",param.getProvince());map.put("city",param.getCity());map.put("key",param.getKey());map.put("page",param.getPage());try {String response = HttpUtil.createGet(url).form(map).header("Authorization", "APPCODE " + appCode).execute().body();JSONObject result = JSONObject.parseObject(response);System.out.println(result.toJSONString());if (result.getString("code").equals("200")){//请求成功JSONObject data = result.getJSONObject("data");JSONObject results = data.getJSONObject("result");return Result.success(results);}else if (result.getString("code").equals("400")){return Result.failure("参数错误");}else if (result.getString("code").equals("501")){return Result.failure("第三方服务异常");}else if (result.getString("code").equals("604")){return Result.failure("接口停用");}else {return Result.failure("其他类型错误");}} catch (Exception e) {e.printStackTrace();}return Result.success();}
}

说明:

  • HttpUtil: 我没有用阿里云上下载的,这里用的是 hutool 的,大家可以自行选择
<!--hutool工具--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.3.4</version></dependency>
  • Result: 自己定义的泛型返回值
@ApiModel(value = "返回结果")
@Data
@ToString
@AllArgsConstructor
public class Result<T> {/*** 状态码*/@ApiModelProperty(value = "状态码")private Integer code;/*** 信息*/@ApiModelProperty(value = "错误消息")private String message;/*** 数据*/@ApiModelProperty(value = "数据")private T data;/*** 列表数量*/@ApiModelProperty(value = "列表总条数")private Integer count = 0;public static <T> Result<T> success() {return new Result(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), "", 0);}public static <T> Result<T> success(T data) {return new Result(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data, 0);}public static <T> Result<T> success(T data, int count) {return new Result(ResultCode.SUCCESS.getCode(), ResultCode.SUCCESS.getMessage(), data, count);}public static <T> Result<T> failure() {return new Result(ResultCode.FAILURE.getCode(), ResultCode.FAILURE.getMessage(), "", 0);}public static <T> Result<T> failure(String message) {return new Result(ResultCode.FAILURE.getCode(), message, "", 0);}public static <T> Result<T> failure(Integer code, String message) {return new Result(code, message, "", 0);}public static <T> Result<T> failure(IErrorCode resultCode) {return new Result(resultCode.getCode(), resultCode.getMessage(), "", 0);}public static <T> Result<T> NoEmail() {return new Result<>(ResultCode.NOEMAIL.getCode(), ResultCode.NOEMAIL.getMessage(), null, 0);}}
  • ResultCode: Result 的状态码
@Getter
@AllArgsConstructor
public enum ResultCode implements IErrorCode {SUCCESS(200,"成功"),FAILURE(500, "失败"),NOEMAIL(501,"没有找到邮箱地址"),;private Integer code;private String message;
}
  • application.yml 中添加 urlappcode (购买正式版后会显示,此前加密),如图:


有用的话点个 吧,要不就像下图难受了

银行卡验证(四要素)和银行联行号查询相关推荐

  1. 银行联行号怎么查询?

    联行号怎么查询?1.电话查询,拨打银行客服电话,2.网上查询,都挺麻烦的,给你推荐一个简单的方法用AI智能机器人查询步骤如下 在机器人页面输入关键词 银行,找到银行联行号查询机器人,点击使用 点击AI ...

  2. 银行联行号-联行号api接口-联行号数据源

    接口地址: https://登录后显示/api/180/348(支持:http/https) 数据源:https://www.wapi.cn/source/8.html 网站地址:https://ww ...

  3. 阿里云 验证四要素 服务

    阿里云 验证四要素 [quote] https://fuwu.aliyun.com/products/56928004/cmapi013074.html#sku=yuncode707400008 ht ...

  4. 银行联行号cnasp

    1,联行号12位 位数 3 4 4 1 含义 行别 城市 编号 识别码 2,银行行别 第一位数字 数字 含义 0 中央银行 1 国有独资商业银行 2 政策性银行 3 其他商业银行 4 非银行金融机构 ...

  5. 微信小程序篇】四. 案例:根据单号查询快递编号

    快递查询(2020-1-7亲测) 项目准备 创建项目demo4-expressQuery(因为练习取过这个名所以案例里面是demo-expressQuery ) 操作步骤同demo3 不过second ...

  6. 银行卡三元素检测 根据姓名+身份证号+银行卡卡号验证信息是否匹配

    银行卡检测api,根据姓名+身份证号+银行卡卡号验证信息是否匹配. 接口名称:银行卡检测api 接口平台:聚合数据 接口地址:http://v.juhe.cn/verifybankcard3/quer ...

  7. 认证(身份证-手机实名-银行四要素)接口规范

    一.简介 此文档为易联认证提供的认证接口,在我公司认证通过后融入到项目中再提供接口出来供使用方调用.更多规范可参考:<易联认证接口规范V1.0.doc> 二.Database 2.1. 数 ...

  8. 企业工商四要素核验是对哪些信息进行验证?

    企业工商四要素核验中的四要素是指企业营业执照名称.统一社会信用代码.法定代表人姓名和法定代表人身份证号,通过核验这四要素来判断企业信息的真实性,杜绝绝大数的企业注册欺诈行为. 企业工商四要素核验产品介 ...

  9. BankCardUtils(根据银行卡号 获取 银行卡类型、银行名称和银行编码 自动格式化银行卡号、手机号、身份证号输入的工具类)

    BankCardUtils 根据银行卡号 获取 银行卡类型.银行名称和银行编码 自动格式化银行卡号.手机号.身份证号输入的工具类 效果图 特点 支持自动根据银行卡号获取出银行名称.银行编码.银行卡类型 ...

  10. 使用正则表达式验证银行帐号

    银行帐号是在任何特定银行开设账户后分配给账户持有人的唯一编号.从技术上讲,我们可以将银行帐号视为主键.银行帐号使我们能够进行借记.贷记和其他交易.根据 RBI 指南,银行帐号具有独特的结构.Accou ...

最新文章

  1. JMC | 人工智能在药物合成中的当前和未来作用(3)
  2. 春天来了,我也发“芽”了!
  3. Dotnet创建Linux下的Service应用
  4. 用于Play框架分布式应用程序的Init.d Shell脚本
  5. lingo逻辑运算符
  6. win7变成linux桌面背景,教大家把Ubuntu界面改造成Windows7系统
  7. 上海大学计算机学院调剂,上海大学微电子学院2021年硕士研究生调剂有关事项说明...
  8. window.location.href跳转无效 IE Bug【转载】
  9. 云服务器里面安装虚拟服务器,云服务器里面安装虚拟服务器
  10. 如何给AWARD BIOS刷L5420微码?
  11. python脚本编程100例_python 100例 (持续更新)
  12. C语言编程的双大于号,VC 双小于 双大于号
  13. 【雅思大作文考官范文】——第十一篇:'homework' essay
  14. DataCastle租金预测数据竞赛个人总结
  15. c语言炉石传说测试数据库,炉石传说:王师傅微博分享算法入门题 网友:快把C语言播完吧!...
  16. 2019年股票股息率分红最高排名
  17. 学生成绩字典、获取最高分科目分数python_实例:找出分数最高的学生
  18. pandas自动化实战小任务1--对excel表格分 供应商 付款年月 进行汇总(涉及根据即有相同也有不同的index的表格合并)公司的数据
  19. 忙里偷闲看电影《无人区》
  20. 网页引入腾讯视频小记

热门文章

  1. 简单介绍企业erp系统究竟是什么?
  2. ESP32 之 ESP-IDF 实战(一)—— 物联网风力摆控制系统(①姿态解算部分)
  3. layui整合Echart
  4. 逢看必会的三子棋小游戏:原来可以这么简单
  5. 局域网之间两台计算机同屏,如何实现内网多电脑同屏协同?
  6. 龙果学院Java并发编程原理与实战
  7. 手心输入法 -无广告不骚扰
  8. java程序员转正述职报告PPT
  9. C++实现双人对战五子棋(附源码)
  10. LU分解、LDLT分解和Cholesky分解