精华内容
下载资源
问答
  • 人行征信接口

    千次阅读 2017-04-25 17:46:55
    人行征信接口

    接口文档:http://zxapi.mydoc.io


    展开全文
  • 在银行对接征信查询时用到鹏元征信接口的可以参见该附件里面的接口Demo,希望对你有所帮助
  • 互联网征信接口之移动通信API接口

    千次阅读 2017-07-08 16:18:46
    对于七侠犬征信大数据技术的不断进步,为小贷公司和P2P企业的金融征信提供了相关数据获取和分析,根据移动数据的分析判断用户个人的征信情况。 以中国移动通宵数据为例,2017年中移动用户超过8.5亿,其中包含的套餐...

    对于七侠犬征信大数据技术的不断进步,为小贷公司和P2P企业的金融征信提供了相关数据获取和分析,根据移动数据的分析判断用户个人的征信情况。

    以中国移动通宵数据为例,2017年中移动用户超过8.5亿,其中包含的套餐概括了多年龄段,有学生群体的“动感地带”,针对商务人士的神“神州行”和“全球通”,以及手机证券。飞信等增值服务,因为获取移动数据得API接口,可以为客户的信用程度有更全名的认识。

    七侠犬征信是一家从事金融数据服务的公司,通过丰富的数据资源、风控模型、大数据分析挖掘技术,面向金融机构推出金融征信解决方案,实现大数据、小场景、微应用,为客户提供从贷前、贷中、贷后、资产管理的全价值链信用服务。

    在中国通讯移动数据方面,七侠犬征信 提供了中国电信”“中国移动”‘中国联通’’国有三大电信运营商的API接口,为相关金融企业进行数据对接分析服务,让企业在最短时间内获知授权用户的移动数据。

     

    七侠犬征信的移动数据接口提供的数据包括对方的基本信息,近半年移动账单和增值业务,近半年办理业务信息,近半年上网数据信息,通话次数信息记录以及短信记录等。

    对于企业来说,七侠犬征信提供企业查询移动数据有两种方式,一是在七侠犬征信微信或者APP上进行查询,移动查询平均响应时间是2分钟,首轮查询时间为20秒,连续轮询等待时间为5秒。

    另外一种是使用七侠犬征信提供的企业专享移动API接口,企业在使用七侠犬征信提供的移动数据接口时需要进行开发前准备工作,准备工作结束后,输入相应的移动API接口参数即可使用。

    展开全文
  • 注意:接口数据传输通过xml,无论发送请求,还是获取响应都需要经过经过xml格式转化。 1,CisReportRoot cisReportRoot = getCisReportRoot(doc); pyQueryBean--Map--doc--xmL // 实体转化为Map 2,Map, String> ...
    数据传输格式报文格式:xml
    public CisReportRoot queryCisReport(PyQueryBean pyQueryBean) throws Exception {
    CisReportRoot cisReportRoot = invokePy(pyQueryBean){
    CisReportRoot cisReportRoot = queryCisReportFromPyServer(pyQueryBean);   } } 
    
    pyQueryBean--CisReportRoot 
    注意:接口数据传输通过xml,无论发送请求,还是获取响应都需要经过经过xml格式转化。 
    1,CisReportRoot cisReportRoot = getCisReportRoot(doc); pyQueryBean--Map--doc--xmL
    //实体转化为Map 2,Map<String, String> map = CommonUtils.beanToMap(pyQueryBean);
    //Map转化为指定标签的xml字符串 Map-doc-xml 3,String queryInfo = XmlUtil.createQueryCondition(map);
    //从鹏元获取Xml,转化为doc xml-doc- 4,Document doc = pyClient.connectToPyClient(queryInfo);
    //解析doc中数据,赋值到实体
    5,CisReportRoot cisReportRoot = getCisReportRoot(doc); 具体实现如下:
    2, public static Map<String, String> beanToMap(Object obj) { if (obj == null) { return null; } Map<String, String> map = new HashMap<>(); try { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor property : propertyDescriptors) { String key = property.getName(); // 过滤class属性 if (!"class".equals(key)) { // 得到property对应的getter方法 Method getter = property.getReadMethod(); Object value = getter.invoke(obj); map.put(key, String.valueOf(value)); } } } catch (Exception e) { System.out.println("transBean2Map@CommonUtils_Exception" + e); } return map; } 3, 构建请求xml public static String createQueryCondition(Map<String, String> map) throws Exception { Document document = DocumentHelper.createDocument(); document.setXMLEncoding(ENCODING); Element root = document.addElement("conditions"); Element conditionElement = root.addElement("condition"); conditionElement.addAttribute("queryType", map.get("queryType")); Element itemName = conditionElement.addElement("item"); itemName.addElement("name").addText("name"); itemName.addElement("value").addText(map.get("name") == null ? "" : map.get("name")); Element itemDocumentNo = conditionElement.addElement("item"); itemDocumentNo.addElement("name").addText("documentNo"); itemDocumentNo.addElement("value").addText(map.get("documentNo") == null ? "" : map.get("documentNo")); Element itemPhone = conditionElement.addElement("item"); itemPhone.addElement("name").addText("phone"); itemPhone.addElement("value").addText(map.get("phone") == null ? "" : map.get("phone")); Element itemQueryReasonID = conditionElement.addElement("item"); itemQueryReasonID.addElement("name").addText("queryReasonID"); itemQueryReasonID.addElement("value").addText(map.get("queryReasonID") == null ? "" : map.get("queryReasonID")); Element itemSubreportIDs = conditionElement.addElement("item"); itemSubreportIDs.addElement("name").addText("subreportIDs"); itemSubreportIDs.addElement("value").addText(map.get("subreportIDs") == null ? "" : map.get("subreportIDs")); Element itemRefID = conditionElement.addElement("item"); itemRefID.addElement("name").addText("refID"); itemRefID.addElement("value").addText(map.get("refID") == null ? "" : map.get("refID")); return document.asXML(); } 4,获取鹏飞响应Xml /** * 连接到鹏飞服务端 * * @param queryInfo 查询信息--Xml格式 * @return 返回查询结果 */ public Document connectToPyClient(String queryInfo) throws Exception { try { Client client = new Client(new URL(configInfo.getPy_ssl_ip())); Object[] results = client.invoke(QUERY_REPORT, new Object[]{configInfo.getPy_username(), configInfo.getPy_password(), queryInfo, "xml"}); Document dom4j; if (results[FIRST_NODE] instanceof org.w3c.dom.Document) { //FIRST_NODE = 0 org.w3c.dom.Document doc = (org.w3c.dom.Document) results[FIRST_NODE]; org.w3c.dom.Element element = doc.getDocumentElement(); //获取所有子节点 NodeList children = element.getChildNodes(); //获取第一个子节点 //xml to dom dom4j = XmlUtil.getDoc(children.item(FIRST_NODE).getNodeValue()); //获取根节点 Element root = dom4j.getRootElement(); Element statusElement = root.element(STATUS); String ba64; if (statusElement.getData().equals(SUCCESS)) { /*客户端获取该returnValue值后需要依次做以下工作: 1、 把returnValue值用Base64解码,把字符串(string)转成字节流(byte[]); 2、 把字节流解压缩后,获取到相应的多个输出文件,其中html和pdf是压缩文件; 3、 解析reports.xml获取xml报告的详细内容;*/ //1、 把returnValue值用Base64解码,把字符串(string)转成字节流(byte[]); ba64 = root.element(RETURN_VALUE).getData().toString(); byte[] re = Base64Utils.decode(ba64); //2、 把字节流解压缩后,获取到相应的多个输出文件,其中html和pdf是压缩文件; String xml = CompressStringUtil.decompress(re); logger.info(xml); //3、 解析reports.xml获取xml报告的详细内容; return XmlUtil.getDoc(xml); } else { StringBuilder sb = new StringBuilder(PyCreditServiceErrorEnum.PY_SYS_ERROR.getMsg()); String xml = XmlUtil.getString(dom4j); logger.error(xml); if (null != root.element("errorMessage")) { sb.append(", ").append(root.element("errorMessage").getData().toString()); logger.error("py server has problem, errorMessage: " + sb.toString()); } throw new CreditException(PyCreditServiceErrorEnum.PY_SYS_ERROR.getCode(), sb.toString()); } } return null; } catch (SocketTimeoutException e) { logger.error("level0_loadClient@PyClientService_Exception", e); throw new CreditException(PyCreditServiceErrorEnum.PY_SYS_TIMEOUT.getCode(), PyCreditServiceErrorEnum.PY_SYS_TIMEOUT.getMsg()); } catch (Exception e) { logger.error("level0_connectToPyClient@ConnectToPyClient_Exception", e); throw e; } } 5,解析xml报告中数据
    CisReportRoot cisReportRoot = getCisReportRoot(doc);
    总括:解析doc每一层节点,获取属性,当前子节点数据,以此类推分层解析。
    思路:属性,子节点List-map-通过反射给实体赋值
    /**
         * @return com.pingan.credit.model.py.CisReportRoot
         * @Description: 解析报告里的数据
         * @author chiyuanzhen743
         * @date 2017/8/24 14:53
         */
        private CisReportRoot getCisReportRoot(Document doc) throws Exception {
            CisReportRoot cisReportRoot;
            Element root = doc.getRootElement();
         //(1)获取根节点属性 cisReportRoot
    = getRootAttribute(root); Element cisReport = root.element("cisReport"); CisReportChild crc = new CisReportChild(); // 获取报告节点的所有属性 if (!ListUtil.isEmpty(cisReport.attributes())) { List<Attribute> eRootAttributeList = (List<Attribute>) cisReport.attributes(); crc = getChildReportAttribute(eRootAttributeList); } ReportElement re = new ReportElement(); //(2)获取报告所有子节点数据 re = getCisReportChild(cisReport, re); crc.setReportElement(re); cisReportRoot.setCisReportChild(crc); return cisReportRoot; }
    //(1)获取根节点属性
    /**
         * 获取根节点所有属性
         *
         * @param root 根节点
         * @return 报告根节点对象
         */
        private CisReportRoot getRootAttribute(Element root) throws Exception {
            List<Attribute> attributeList = root.attributes();
            Map<String, String> result = attributeList.stream()
                    .collect(Collectors.toMap(Attribute::getName, Attribute::getValue));
            CisReportRoot cisreportRoot = new CisReportRoot();
            CommonUtils.setValue(cisreportRoot, result);
            return cisreportRoot;
        }
    //(2)获取报告所有子节点数据
        /**
         * @param cisReport, re
         * @return com.pingan.credit.model.py.ReportElement
         * @Description: 获取报告中 每个节点的数据
         * @date 2017/10/23 20:25
         */
        private ReportElement getCisReportChild(Element cisReport, ReportElement re)
                throws Exception {
    
            // 2.获取身份认证 policeCheckInfo
            Element policeCheckInfoElement = cisReport.element("policeCheckInfo");
         //(3)获取节点属性 List
    <Attribute> policeCheckInfoAttributeList = policeCheckInfoElement.attributes();
         //通过反射给实体赋值 PoliceCheckInfo pci
    = getPoliceCheckInfoNode(policeCheckInfoElement, policeCheckInfoAttributeList); re.setPoliceCheckInfo(pci);
    //(3)获取节点属性
    xml样例
    <policeCheckInfo subReportType="10602" subReportTypeCost="96040" treatResult="1" errorMessage="">
    <item>
        <name>测试一</name>
        <documentNo>14043019900217914X</documentNo>
        <result>1</result>
    </item>
    </policeCheckInfo>
     
     /**
         * @param policeCheckInfoElement, policeCheckInfoAttributeList
         * @return com.pingan.credit.model.py.PoliceCheckInfo
         * @Description: 身份认证节点
         * @author chiyuanzhen743
         * @date 2017/10/20 15:13
         */
        private PoliceCheckInfo getPoliceCheckInfoNode(Element policeCheckInfoElement,
                                                       List<Attribute> policeCheckInfoAttributeList) throws Exception {
            try {
                // 获取子节点的全部属性
                Map<String, String> attributeMap = policeCheckInfoAttributeList.stream()
                        .collect(Collectors.toMap(Attribute::getName, Attribute::getValue));
           //(4)获取属性给父类赋值,因为节点属性是相同的,抽象为父类
                PoliceCheckInfo pci = (PoliceCheckInfo) CommonUtils.setValueOfSuperClass(PoliceCheckInfo.class, attributeMap);
                if (SUCCESS.equals(attributeMap.get("treatResult"))) {
                    // 获取身份认证内容节点
                    List<Element> policeCheckInfoList = policeCheckInfoElement.element("item").elements();
              //(5)节点内容转化为map Map
    <String, String> resultMap = XmlUtil.getResultMap(policeCheckInfoList);
              //(6)反射赋值 pci
    = (PoliceCheckInfo) CommonUtils.setValue(pci, resultMap); } else { throw new CreditException(PyCreditServiceErrorEnum.IDENTITY_NOT_MATCH.getCode(), PyCreditServiceErrorEnum.IDENTITY_NOT_MATCH.getMsg()); } return pci; } catch (Exception e) { logger.error("getPoliceCheckInfoNode@PyServiceImpl_Expection", e); throw e; } }
    //(4)获取属性给父类赋值,因为节点属性是相同的,抽象为父类。
    /**
         * @param clazz, attributeMap
         * @return java.lang.Object
         * @Description: 通过反射给目标对象的父类设置属性
         * @date 2017/8/30 9:42
         */
        public static Object setValueOfSuperClass(Class<?> clazz, Map<String, String> attributeMap) throws Exception {
            try {
                Object object = Class.forName(clazz.getName()).newInstance();
                Class<?> obj = object.getClass().getSuperclass();
                Field[] fields = obj.getDeclaredFields();
                setValue(object, attributeMap, fields);
                return object;
            } catch (Exception e) {
                logger.info(e.getMessage());
                throw e;
            }
        }

    //(5)节点内容转化为map

     /**
         * 将元素节点转换成map
         */
        public static Map<String, String> getResultMap(List<Element> items) {
            Map<String, String> map = new HashMap<>(32);
            for (Element e : items) {
                if (StringUtils.isNotEmpty(e.getData().toString())) {
                    map.put(e.getName(), e.getData().toString());
                }
            }
            return map;
        }

    //(6)反射赋值

        /**
         * @param object, resultMap
         * @return java.lang.Object
         * @Description: 通过反射为实体类赋值
         * @date 2017/8/30 9:43
         */
        public static Object setValue(Object object, Map<String, String> resultMap) throws Exception {
            try {
                Class<?> obj = object.getClass();
                Field[] fields = obj.getDeclaredFields();
                setValue(object, resultMap, fields);
    
                return object;
            } catch (IllegalAccessException e) {
                logger.info("IllegalAccessException@CommonUtils:" + e.getMessage());
                throw e;
            } catch (Exception e) {
                logger.info("Exception@CommonUtils:" + e.getMessage());
                throw e;
            }
        }

     

     

    
    

     

    
    

     

    
    

     

    
    

     

    转载于:https://www.cnblogs.com/shenkebky/p/8302416.html

    展开全文
  • 前技术领域全面做上述征信数据解决方案的公司不多,南有七侠犬,北有聚合,大家以各自的区域、需求、费率等综合情况进行评估后选定伙伴。 随着电商、金融业和移动互联网的普及,个人身份画像较十年前有了跨越式的...

    前技术领域全面做上述征信数据解决方案的公司不多,南有七侠犬,北有聚合,大家以各自的区域、需求、费率等综合情况进行评估后选定伙伴。

    随着电商、金融业和移动互联网的普及,个人身份画像较十年前有了跨越式的发展。十几年前仅能获取到网友的发帖回帖记录、QQ等级,而对涉及到金融的消费类数据基本无从下手,产业还没有实现规模化,也就无法谈数据源的普适度。

     

    今天是很好的时代。网银接口、社保接口、公积金接口、淘宝消费接口、京东消费接口、外卖消费接口、滴滴打车接口、身份证接口、银行卡验证接口、手机运营商接口,都已经完善到足以产业化,这类数据在十几年前基本是不可想象的。

     

    要满足以上各种征信数据,需要大量的研发人员,大量的开发时间,并耗费大量的成本。以我从业12年的研发经验,一般公司不太必要研发全面的自有爬虫采集系统,也很难一直保持跟随各数据平台的升级。

     

    在使用征信接口时,建议以下架构方案:

    client-server-api

    由客户端向项目的服务端发起请求,在SERVER处理业务时调取真正的征信API接口,此举可隐藏API源,避免被抓包分析或被竞争对手利用API通道恶意、频繁请求扣费。

     

    我在项目中的应用如下:

    微信H5 -> SERVER -> API路由 -> 调取七侠犬API->对API返回的数据进行入库处理->调取评分模型(自有/第三方均可)->系统自动评估用户征信分->得出可放贷额度->订单处理

    注意这个征信过程通常至少需要5个以上的信息维度,如果维度过少,自动评估系统不宜工作。

    展开全文
  • 征信报送T+1接口规范

    2019-01-18 10:49:57
    人行征信报送接口规范,希望帮助到想了解此方面的人。
  • 1. 适用范围 本规范适用于各数据报送机构向网络金融征信系统报送借款数据,涉及的借款业务品种为个人 借款。...注:本接口规范的报文结构主要针对以TXT格式报送的报文,对EXCEL 格式的报文,数据项的定义解释亦适用。
  • 随着电商、金融业和移动互联网的普及,个人身份画像...网银接口、社保接口、公积金接口、淘宝消费接口、京东消费接口、外卖消费接口、滴滴打车接口、×××接口、银行卡验证接口、手机运营商接口,都已经完善到足以...
  • 网络征信技术接口(架构篇)

    千次阅读 2017-07-18 09:29:05
    随着电商、金融业和移动互联网的普及,个人身份画像较十年...网银接口、社保接口、公积金接口、淘宝消费接口、京东消费接口、外卖消费接口、滴滴打车接口、身份证接口、银行卡验证接口、手机运营商接口,都已经完善到足
  • 温馨提示:本源码提供给大家学习研究借鉴美工之用,请勿用于商业和违法用途,无任何技术支持! 服务器系统:Linux + Centos7.x + 宝塔 亲测环境:Nginx ...后台的征信接口 https://www.apix.cn/这里申请
  • 如今个人征信愈来愈重要,小编想提醒大家,请不要随便在征信中心官网和人民银行网点以外的地方查询征信,也不要随意授权其他机构查询征信。 在大众眼里,如果人行征信中心以外的机构可以查询征信,那就意味着这是...
  • 腾讯征信公司技术架构分享资料主要包括腾讯征信服务平台架构及对征信行业的分析和展望
  • 外行谈征信

    2015-12-13 23:12:23
    昨天,有人评论说,你不懂征信,建议不要写这样的文章。于是今天我就开心的写这一篇。 实话实说,我还真是外行,我要是内行我都去干互联网金融了,这么大金矿看着采不到你说我桑心不...
  • 征信立信

    2017-04-13 19:00:00
    (企业征信,个人征信) 企业官网:http://www.ccxcredit.com.cn 万象信用-网站:https://wx.ccxcredit.com/ 万象信用-公众号 个人可以使用 没见到数据分发平台 中智诚征信有限公司 (个人征信) 企业官网:...
  • 从2006年上线至今,一代征信系统已经走过了14年,在提升社会信用意识、优化金融服务质量的同时,也暴露出一系列的问题。本次上线的二代征信系统针对一代征信系统存在的问题,进行了优化。 众所周知,所有的成功都...
  • 人行二代征信系统查询的报告解读,可以用于接口查询和页面查询的开发、熟悉二代征信报告数据。里面有所以报告块和数据字典信息。
  • 人行二代征信系统查询的报告解读,可以用于接口查询和页面查询的开发、熟悉二代征信报告数据。里面有所以报告块和数据字典信息。
  • 人行征信分析api

    千次阅读 2017-04-12 16:38:24
    根据用户授权,自动化查询该用户在人行的征信报告。包括借贷记录,信用卡逾期等数据信息。 H5网页,3分钟部署集成 我们为您提供H5网页和API接口两种版本,您可以通过我们授权给您的H5网页,快速完成部署...
  • 中国人民银行征信中心发布《中国人民银行征信中心关于做好二代征信系统上线准备工作的通知》,通知指出人行征信中心对《人民银行征信系统标准个人、企业信用报告产品说明(二代试行)》和《征信系统数据查询接口规范...
  • 央行征信爬虫解决方案

    千次阅读 2019-04-16 09:50:26
    笔者所在公司是一家互联网金融公司,其中最大的一块业务就是贷款。当一个用户向我们申请贷款时,我们需要用户授权获取用户的征信数据,然后将数据交给风控规则引擎生成一份数据报告,凭借...方案一:基于接口的爬虫...
  • 《银行信贷登记咨询系统升级数据接口规范》(简称“数据接口规范”)规定了企业征信系统与外部系统进行信息交换时应遵循的有关信息格式和数据管理规定。
  • 央行征信中心方面日前给出的消息称,将在1月20日上线第二代个人征信系统并提供查询,在此前会有一段维护期,预计个人征信报送功能会延迟到5月份才正式上线。 不过,对于是否能在春节前顺利上线二代征信,目前官方并...
  • 2020年人行二代征信xml样例报文,报文大小89k。一级标签都有,主要的信贷标签都有样例数据。可用于报文解析的参考文档。
  • 立木征信配置

    千次阅读 2017-12-04 10:47:28
    添加 Jar 包。 初始化配置: LmzxSDK sdk = LmzxSdkImpl.getInstance(); sdk.setEnv(this.getApplicationContext(), rootUrl); sdk.init(this.getApplicationContext() ,apiKey, uid, callBackUrl);...
  • 近年来,随着互联网金融、民间金融、消费金融的快速发展,征信查询业务呈现爆发式增长。其中,一些不符合征信接入机构条件的金融机构为满足自身对信用报告的需求,通过非法的手段获取信息主体的信用报告,导致违规...
  • 基于中小型商业银行的个人征信报送平台的智能优化模型设计,卢泽纲,,本文针对目前中小型商业银行特别是城市商业银行在报送个人征信数据所遇到的种种问题进行现实客观的分析,提出了搭建个人征信报送
  • 个人征信系统机构接入工作流程

    千次阅读 2020-03-31 16:12:04
    本流程适用于征信分中心开展机构接入和接口验收工作。用于规范商业银行、公积金管理中心等新机构接入和接口验收,以及已接入机构更改接口的验收工作。 第一阶段 申请审核 1.接入机构向其总部所在地的征信分中心递交...
  • 金融服务需要以征信为基础,市场催生了需求,也唤醒市场对投资征信业的热情。在互联网、大数据、云计算的大背景之下,中国的征信业应该如何发展?在网络个人信息无处不在的情况下,如何处理好个人信息安全与征信业...
  • 目前中国人民银行批准了八家机构在做个人征信准备工作。个人信用征信主要服务于金融授信活动。针对个人征信市场的不同层次、不同需求,应该实行差异化监管。 互联网、移动互联网产生大数据,云计算为大数据挖掘提供...
  • 征信行业历史起源 征信机构始于19世纪30年代的美国。雏形是一些商业调研机构,服务民间或银行借贷业务,获取信息途径通过招募些调研人员去街巷走访,然后逐渐形成规模及规范化。 作为起源之地,美国有3大征信...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,630
精华内容 652
关键字:

征信接口