Files
ccdi/doc/对接流水分析/兰溪-流水分析对接.md

18 KiB
Raw Permalink Blame History

兰溪-流水分析对接文档

概述

本文档描述与见知现金流尽调系统的对接接口,用于拉取银行流水数据。


1. 新建项目并获取Token

1.1 接口请求地址

  • 测试环境: http://158.234.196.5:82/c4c3/account/common/getToken
  • 请求方法: POST

1.2 请求参数说明

接口备注第三方系统中点击需要查看的项目向见知现金流尽调系统请求访问token每个项目的token不同。现金流尽调系统根据 ProjectNo为唯一标识查找项目如果对应的项目不存在则自动创建项目。注意token使用一次后即失效再次访问项目需要重新申请。支持拉取金综和行内流水

参数名 示例值 参数类型 是否必填 参数描述
projectNo test-zjnx-1204 String 项目编号
entityName 浙江农信test1204 String 项目名称
userId test001 String 操作人员编号
userName 测试001 String 操作人员姓名
appId remote_app String 见知提供appId
appSecretCode 6ee87a361f29234ad25d7893da9975a9 String 安全码 md5(projectNo + "" + entityName + "" + appSecret)
role VIEWER String 人员角色VIEWER普通用户READER只读用户默认值VIEWER
orgCode 800000 String 行社机构号
entityId ZJNX1234567890 String 企业统信码或个人身份证号
xdRelatedPersons [{"relatedPerson":"上海上水纯净水有限公司","relation":"董事长"}] String 信贷关联人信息
jzDataDateId 0 String 拉取指定日期推送过来的金综链流水为0时标识不需要拉取金综链流水
innerBSStartDateId 0 String 拉取行内流水开始日期0:不需要拉取行内流水。流水分析系统根据entityId到数仓中查询行内流水
innerBSEndDateId 0 String 拉取行内流水结束日期0:不需要拉取行内流水。流水分析系统根据entityId到数仓中查询行内流水
analysisType -1 String 固定值
departmentCode 800111 String 客户经理所属营业部/分理处的机构编码

1.3 返回参数说明

成功响应 (200)

参数名 示例值 参数类型 参数描述
code 200 String 返回码
data.token eyJ0eXAi... String token
data.projectId 77 Integer 见知项目Id
data.projectNo test-zjnx-1204 String 项目编号
data.entityName 浙江农信test1204 String 项目名称
data.analysisType 0 Integer 分析类型
message create.token.success String 消息
status 200 String 状态
successResponse true Boolean 成功标识

错误码说明

错误码 说明
200 请求成功
40100 未知异常
40101 appId错误
40102 appSecretCode错误
40104 可使用项目次数为0无法创建项目
40105 只读模式下无法新建项目
40106 错误的分析类型,不在规定的取值范围内
40107 当前系统不支持的分析类型
40108 当前用户所属行社无权限

1.4 返回示例

{
  "code": "200",
  "data": {
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "projectId": 77,
    "projectNo": "test-zjnx-1204",
    "entityName": "浙江农信test1204",
    "analysisType": 0
  },
  "message": "create.token.success",
  "status": "200",
  "successResponse": true
}

2. 上传文件接口

2.1 接口请求地址

  • 测试环境: 158.234.196.5:82/c4c3/watson/api/project/remoteUploadSplitFile
  • 请求方法: POST
  • 请求头: X-Xencio-Client-Id: c2017e8d105c435a96f86373635b6a09

2.2 请求参数说明

参数 类型 参数名称 是否必填 说明
groupId Int 项目id -
files File 上传的文件 -

2.3 响应结果信息

字段 类型 备注
code String 200成功其他状态码失败
data Object 列表
accountName - 主体名称
accountNo - 账号
uploadFileName - 文件名称
fileSize - 文件大小单位Byte
status - 状态值
uploadStatusDesc - 文件状态描述
bank - 所属银行
currency - 币种
accountId - 账号id
logId - 文件id

注意: status等于-5且uploadStatusDesc等于data.wait.confirm.newaccount表示当前流水文件上传后解析成功。反之则没有成功。

2.4 返回示例

{
  "code": "200",
  "data": {
    "accountsOfLog": {
      "13976": [
        {
          "bank": "BSX",
          "accountName": "",
          "accountNo": "虞海良绍兴银行流水",
          "currency": "CNY"
        }
      ]
    },
    "uploadLogList": [
      {
        "accountNoList": [],
        "bankName": "BSX",
        "dataTypeInfo": ["CSV", ","],
        "downloadFileName": "虞海良绍兴银行流水.csv",
        "enterpriseNameList": [],
        "filePackageId": "14b13103010e4d32b5406c764cfe3644",
        "fileSize": 46724,
        "fileUploadBy": 448,
        "fileUploadByUserName": "admin@support.com",
        "fileUploadTime": "2025-03-12 18:53:29",
        "leId": 10724,
        "logId": 13976,
        "logMeta": "{\"lostHeader\":[],\"balanceAmount\":true}",
        "logType": "bankstatement",
        "loginLeId": 10724,
        "realBankName": "BSX",
        "rows": 0,
        "source": "http",
        "status": -5,
        "templateName": "BSX_T240925",
        "totalRecords": 280,
        "trxDateEndId": 20240905,
        "trxDateStartId": 20230914,
        "uploadFileName": "虞海良绍兴银行流水.csv",
        "uploadStatusDesc": "data.wait.confirm.newaccount"
      }
    ],
    "uploadStatus": 1
  },
  "status": "200",
  "successResponse": true
}

3. 拉取行内流水接口

3.1 接口请求地址

  • 测试环境: 158.234.196.5:82/c4c3/watson/api/project/getJZFileOrZjrcuFile
  • 请求方法: POST
  • 请求头: X-Xencio-Client-Id: c2017e8d105c435a96f86373635b6a09

3.2 请求参数说明

参数 类型 参数名称 是否必填 说明
groupId Int 项目id -
customerNo String 客户身份证号 -
dataChannelCode String 校验码 固定值: ZJRCU
requestDateId Int 发起请求的时间 当天请求时间
dataStartDateId Int 拉取开始日期 -
dataEndDateId Int 拉取结束日期 -
uploadUserId int 柜员号 -

3.3 响应结果信息

序号 字段 类型 备注
1 code String 200成功其他状态码失败
2 data Object 列表

3.4 返回示例(无行内流水)

{
  "code": "200",
  "data": {
    "code": "501014",
    "message": "无行内流水文件"
  },
  "status": "200",
  "successResponse": true
}

4. 判断文件是否解析结束

4.1 接口请求地址

  • 测试环境: http://158.234.196.5:82/c4c3/watson/api/project/upload/getpendings
  • 请求方法: POST
  • 请求头: X-Xencio-Client-Id: c2017e8d105c435a96f86373635b6a09

4.2 请求参数说明

参数 类型 参数名称 是否必填 说明
groupId Int 项目id -
inprogressList String 文件id -

4.3 响应结果信息

序号 字段 类型 备注
1 code String 200成功其他状态码失败
2 data Object 列表
3 uploadFileName - 上传文件名称
4 status - 文件解析后状态值
5 uploadStatusDesc - 文件解析后状态描述
6 parsing - 文件解析状态true表示解析中false表示解析结束

注意: 文件解析有个处理过程,parsing为false表示解析结束可以轮询调用此接口status等于-5且uploadStatusDesc等于data.wait.confirm.newaccount表示文件解析成功。

4.4 返回示例

{
  "code": "200",
  "data": {
    "parsing": false,
    "pendingList": [
      {
        "accountNoList": [],
        "bankName": "ZJRCU",
        "dataTypeInfo": ["CSV", ","],
        "downloadFileName": "230902199012261247_20260201_20260201_1772096608615.csv",
        "enterpriseNameList": [],
        "filePackageId": "cde6c7cf5cab48e8892f0c1c36b2aa7d",
        "fileSize": 53101,
        "fileUploadBy": 448,
        "fileUploadByUserName": "admin@support.com",
        "fileUploadTime": "2026-02-27 09:50:18",
        "isSplit": 0,
        "leId": 16210,
        "logId": 19116,
        "logMeta": "{\"lostHeader\":[],\"balanceAmount\":true}",
        "logType": "bankstatement",
        "loginLeId": 16210,
        "lostHeader": [],
        "realBankName": "ZJRCU",
        "rows": 0,
        "source": "http",
        "status": -5,
        "templateName": "ZJRCU_T251114",
        "totalRecords": 131,
        "trxDateEndId": 20240228,
        "trxDateStartId": 20240201,
        "uploadFileName": "230902199012261247_20260201_20260201_1772096608615.csv",
        "uploadStatusDesc": "data.wait.confirm.newaccount"
      }
    ]
  },
  "status": "200",
  "successResponse": true
}

5. 生成尽调报告接口

5.1 接口请求地址

  • 测试环境: 158.234.196.5:82/c4c3/watson/api/project/confirmStageUploadLogs
  • 请求方法: POST
  • 请求头: X-Xencio-Client-Id: c2017e8d105c435a96f86373635b6a09

5.2 请求参数说明

参数 类型 参数名称 是否必填 说明
groupId Int 项目id -
logIds Array 文件id数组 上传几个文件就用几个
userLogin Int 登录柜员号 -

5.3 响应结果信息

序号 字段 类型 备注
1 Code String 200成功其他状态码失败
2 Data Object 列表

5.4 返回示例

{
  "code": "200",
  "data": {
    "message": "upload.confirm.ok"
  },
  "status": "200",
  "successResponse": true
}

6. 判断尽调报告是否生成

6.1 接口请求地址

  • 测试环境: 158.234.196.5:82/c4c3/watson/api/project/upload/getallpendings?groupId=#{groupId}
  • 请求方法: GET
  • 请求头: X-Xencio-Client-Id: c2017e8d105c435a96f86373635b6a09

6.2 请求参数说明

参数 类型 参数名称 是否必填 说明
groupId Int 项目id -

6.3 响应结果信息

序号 字段 类型 备注
1 code String 200成功其他状态码失败
2 data Object 列表

注意: 生成尽调报告有个处理过程,pendingList为[]表示处理结束,可以轮询调用此接口。

6.4 返回示例

{
  "code": "200",
  "data": {
    "pendingList": []
  },
  "status": "200",
  "successResponse": true
}

7. 获取流水列表并存储到兰溪本地

7.1 接口请求地址

  • 测试环境: 158.234.196.5:82/c4c3/watson/api/project/upload/getBankStatement
  • 请求方法: POST
  • 请求头: X-Xencio-Client-Id: c2017e8d105c435a96f86373635b6a09

7.2 请求参数说明

参数 类型 参数名称 是否必填 说明
groupId Int 项目id -
logId Int 文件id -
pageNow Int 当前页码 -
pageSize Int 查询条数 -

7.3 响应结果信息

序号 字段 类型 备注
1 code String 200成功其他状态码失败
2 data Object 列表
3 bankStatementList - 流水列表
4 pageable - 分页参数
5 searchable - 查询参数

7.4 流水字段说明

字段名 说明 示例值
accountId 账户ID 0
accountMaskNo 账号 6228580199062321798
accountingDate 记账日期 2025-02-03
accountingDateId 记账日期ID 20250203
balanceAmount 余额 85688.37
bank 银行代码 AI
bankComments 银行备注 -
bankStatementId 流水ID 4585279
catalogName 交易名称 收单收入
crAmount 贷方金额 290
currency 币种 CNY
customerAccountMaskNo 客户账号 80100001471621000100
customerAccountName 客户账户名 系统内清算资金往来-全渠道收单平台
customerName 客户名称 系统内清算资金往来-全渠道收单平台
drAmount 借方金额 0
leName 企业名称 徐设华
transAmount 交易金额 290
transFlag 交易标志 R
transTypeName 交易名称 收单收入
trxDate 交易日期 2025-02-03 00:00:00
userMemo 用户备注 收单

7.5 返回示例

{
  "code": "200",
  "data": {
    "bankStatementList": [
      {
        "accountId": 0,
        "accountMaskNo": "6228580199062321798",
        "accountingDate": "2025-02-03",
        "accountingDateId": 20250203,
        "archivingFlag": 0,
        "attachments": 0,
        "balanceAmount": 85688.37,
        "bank": "AI",
        "bankComments": "",
        "bankStatementId": 4585279,
        "bankTrxNumber": "",
        "cashType": "",
        "catalogName": "收单收入",
        "commentsNum": 0,
        "crAmount": 290,
        "currency": "CNY",
        "customNoteCount": 0,
        "customerAccountMaskNo": "80100001471621000100",
        "customerAccountName": "系统内清算资金往来-全渠道收单平台",
        "customerId": 0,
        "customerName": "系统内清算资金往来-全渠道收单平台",
        "customerReference": "",
        "downPaymentFlag": 0,
        "drAmount": 0,
        "hasCustomNote": 0,
        "internalFlag": 0,
        "isMarked": 0,
        "leId": 16260,
        "leName": "徐设华",
        "sourceCatalogId": 405625,
        "split": 0,
        "subBankstatementId": 0,
        "toDoFlag": 0,
        "transAmount": 290,
        "transFlag": "R",
        "transTypeId": 405625,
        "transTypeName": "收单收入",
        "transformAmount": 290,
        "transformCrAmount": 290,
        "transformDrAmount": 0,
        "transfromBalanceAmount": 85688.37,
        "trxBalance": 0,
        "trxDate": "2025-02-03 00:00:00",
        "trxFlag": "R",
        "userMemo": "收单"
      }
    ],
    "pageable": {
      "hasNext": true,
      "hasPre": false,
      "isFirst": true,
      "isLast": false,
      "pageNow": 1,
      "pageSize": 1,
      "startPos": 0,
      "totalCount": 3392,
      "totalPageCount": 3392
    },
    "searchable": {
      "appInput": 0,
      "dayFromId": 0,
      "dayToId": 0,
      "endDateId": 0,
      "enterpriseId": 0,
      "groupTypeId": 0,
      "logId": 19060,
      "pageNow": 1,
      "pageSize": 1,
      "showDownPayment": 0,
      "startDateId": 0,
      "trxAmount": 0,
      "trxTypeId": 0,
      "uploadFromDateId": 0,
      "uploadToDateId": 0,
      "useForBsSearch": 0,
      "useNameExactMatching": 0,
      "withOrderBy": true
    }
  },
  "status": "200",
  "successResponse": true
}

接口调用流程

┌─────────────────────────────────────────────────────────────────┐
│  1. 初始化调用 /account/common/getToken 接口创建项目              │
│     ↓                                                           │
│  2. 调用 /remoteUploadSplitFile 接口上传文件                     │
│     或调用 /getJZFileOrZjrcuFile 拉取行内流水                    │
│     ↓                                                           │
│  3. 调用 /getpendings 获取文件解析状态                           │
│     - parsing=true 时间隔1s轮询                               │
│     - parsing=false 且 status=-5 表示解析成功                   │
│     ↓                                                           │
│  4. 调用 /confirmStageUploadLogs 接口生成尽调报告                │
│     ↓                                                           │
│  5. 调用 /getallpending 检查尽调报告生成状态                     │
│     - pendingList 不为空时间隔1s轮询                          │
│     - pendingList=[] 表示生成完成                               │
│     ↓                                                           │
│  6. 调用 /getBankStatement 接口获取流水数据存储到兰溪本地         │
└─────────────────────────────────────────────────────────────────┘

生产环境配置

配置项
生产IP 64.202.32.176
生产X-Xencio-Client-Id 通过接口获取

获取生产环境 Client-Id

GET http://64.202.32.176/c4c3/watson/api/common/GenerateAccessKey?userLogin={流水分析平台登录柜员号}

附录:公共请求头

请求头 说明
X-Xencio-Client-Id c2017e8d105c435a96f86373635b6a09 测试环境固定值
Content-Type application/json POST请求