# Finance APIs

此组api用来实现业务系统和财务预约系统的整合。

此组api实现以下目的:

  • 引导用户启动一个财务预约申请,限制用户修改预约中的部分信息项
  • 撤销一个之前启动的预约申请
  • 获取预约处理的状态

由此组api启动的每笔财物预约在业务系统中均需对应一业务系统业务,以businessType+businessNo唯一确定

  • businessType: 业务系统内部的业务分类,最长6位字符串,由业务系统自行确定
  • businessNo: 业务号,最长20位字符串。对于流程平台的应用,推荐使用流程流水号。

# 一般交互设计

  • 业务系统根据自身业务规则产生报销需求后,通过PUT接口提交该财务报销的相关数据
  • 业务系统向用户提供进入财务预约系统编辑该项预约的操作入口,入口地址在PUT或GET操作的响应数据中提供
  • 用户进入财务预约系统,编辑或者补充必要信息,提交预约单并按常规报销流程办理
  • 业务系统通过GET接口轮询业务的办理状态
  • 如业务系统发现业务状态为已入账(已入账的建议判断逻辑为:response.status.code in (20, 30) 并且更新时间response.updateTime早于当天零点),在完成自身业务处理后,通过POST接口标记业务为已完成
  • 如业务规则允许用户修改信息后重新预约,业务系统应在用户修改前,调用DELETE接口先行撤销该笔业务,如果撤销失败,业务系统应阻止用户修改。

# 获取所有预约处理的状态

# 功能介绍

获取指定业务分类下所有预约处理的状态

# 请求参数

  • 路径参数 businessType 自拟定业务分类
  • 请求参数 fetchAll true: 查询所有预约(目前暂不支持), false: 仅查询财务已处理完成但业务系统未完成的预约

# 响应参数

所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。

  • Appointment 财务预约 Structure
{
    "businessType":{string},        //业务分类,长度最大6,由业务系统自定义。
    "businessNo":{string},          //业务号,长度最大20,推荐使用流程流水号。businessType + businessNo应在业务系统中唯一标识一笔报销业务。
    "attachmentCount":{int},        //附件张数。0表示不指定,如果指定,将不可修改。
    "remark":{string},              //备注初始值。操作人在财务预约系统中可以修改。
    "type":{string},                //*业务类型。合法值有:"日常报销", "暂借", "校内经费转账", "酬金", "因公出国", "因公出国借款", "境外专家来访", "会议"
    "subType1":{string},            //业务子类型1。
    "subType2":{string},            //业务子类型2。业务子类型1、2的取值根据业务类型而定,酬金业务,子类型1填写酬金性质(如奖学金),子类型2填写人员性质(如本科生)
    "targetType":{string},          //*支付方式。合法值有:"person" 个人转卡, "external" 银行汇款, "internal" 校内经费转账, "combined" 个人转卡+银行汇款
    "applyer": {                    //申请人(登录财务预约系统提交预约单的用户)信息。
        "id":{string},              //*工号
        "name":{string},            //*姓名
        "telephone":{string},       //*联系电话。
        "mobile":{string},          //*联系手机
        "email":{string}            //*联系邮箱
    },
    "operator": {string},           //*实际报销人姓名
    "finished":{boolean},           //业务系统是否确认该业务为已完成。一项业务只有业务系统调用"标记业务处理完成"接口明确标记为已完成后,该属性才为true。
                                    //同时,调用"标记业务处理完成"接口时,该属性需要设置为true,且仅需设置该属性

    "details":[{                    //报销明细项。对于校内转账,不支持多条明细
        "sourceAccount":{string},   //*经费来源的财务账号。不提供时可在财务系统预约界面再指定,但sourceAccount和code应至少指定一项。
        "code":{string},            //*报销项代码。取值业务对接时咨询财计处。不提供时可在财务系统预约界面再指定,但sourceAccount和code应至少指定一项。
        "amount":{number}           //*报销金额。不提供表示不限制金额,可在财务系统预约界面再指定;0表示不允许的报销项目,一般和特定的报销项代码组合使用。
    }],

    "targets":[{                    //支付对象明细。每个支付对象应在person、external、internal中提供且仅提供一项,并应和支付方式(targetType)吻合
        "person": {                 //转卡
            "name":{string},        //姓名
            "code":{string}         //学工号
        },
        "external": {               //汇款
            "name":{string},        //对方单位名称/姓名
            "identityNo":{string},  //对方身份证号。业务类型(type)为酬金时必须提供
            "bankAccount": {string},//银行账号
            "bankCode":{string}     //银行联行号
        },
        "internal": {               //校内转账
            "targetAccount":{string}//转入的财务经费账号
        },
        "amount":{number},          //*支付金额。
        "remark":{string}           //*支付附言。
    }],
  
    "mallItems":[{                  //商城物品清单。报销商城订单商品时提供,总金额不能超时根据报销明细或者支付明细确定的金额。
        "mallId": {string},         //商城id
        "orderNo": {string},        //商城订单号
        "skuNo": {string},          //商品编号
        "amount": {number}          //商品金额
    }],
  
    "attachments": [{               //报销附件。暂时和attachmentCount不构成对照检查
        "name":{string},            //附件名称
        "invoice": {boolean},       //附件是否发票。2024-04-15新增,默认false。
        "url":{string},             //附件下载地址
        "digest":{string}           //附件内容md5
    }],

    /*****  以下属性只读  *****/
    "amount":{number},              //总金额,由报销明细项金额或者支付明细项金额累加所得,如均未指定,此项为0。
    "url":{string},                 //在财务系统中打开该预约的连接。该属性仅在获取单个业务或者提交新业务时返回
    "urlNew":{string},              //在财务系统(智能报销预约,推荐使用)中打开该预约的连接。该属性仅在获取单个业务或者提交新业务时返回
    "createTime":{long},            //业务创建时间。Unix时间戳

    /*****  以下属性由财务系统反馈,用户在财务系统中提交预约单后提供,如预约单被撤销(包括通过DELETE接口或者用户在财务系统中操作),反馈信息同时删除  *****/
    "response": {                   //财务系统反馈
        "appointmentNo":{string},   //预约号。
        "actualAmount":{number}     //实际入账总金额。
        "updateTime":{long},        //反馈更新时间。Unix时间戳
        "status": {                 //业务状态。可能的状态有:10 预约成功, 15 财务拒绝, 16 异常, 20 已做账未审核, 30 已做账已审核
            "code":{int},           //状态码。如10
            "description":{string}  //状态文字描述。如"预约成功"
        },
        "flowStatus": {             //预约系统物流状态码。
                                    //可能的状态有:
                                    //1 预约成功,2 预约单已接收,等待分配,3 预约单已分配,等待制单,4 制单完成,等待复核,
                                    //5 复核完成,7 临时挂起,8 报销失败,9 报销完成,21 取消预约单接收,31 取消预约单分配
            "code":{int},           //状态码。如1
            "description":{string}  //状态文字描述。如"预约成功"
        },
        "details":[{                      //入账明细
            "sourceAccount":{string},     //经费来源账号
            "code":{string},              //报销项代码
            "name":{string},              //报销项名称
            "voucherNo":{string},         //凭证号。财务系统原始返回值去除分录后的值,如2021 3B 28920
            "amount":{number},            //入账金额
            "originalVoucherNo":{string}  //原始凭证号。财务系统的原始返回值,如2021 3B 28920,1
        }]
    }
}
 
* 这些属性一旦指定值,操作人将不能在财务预约系统中修改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

# 获取单个预约处理的状态

# 功能介绍

获取单个预约处理的状态

# 请求参数

  • 路径参数 businessType 自拟定业务分类
  • 路径参数 businessNo 业务号

# 响应参数

所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。

同获取指定业务分类下所有预约处理的状态接口,参见以上的Appointment 财务预约响应参数

# 提交新的业务

# 功能介绍

提交新的业务

# 请求参数

  • 路径参数 businessType 自拟定业务分类
  • 路径参数 businessNo 业务号
  • 请求体参数 财务预约数据,结构参见Appointment 财务预约

# 响应参数

所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。

同获取指定业务分类下所有预约处理的状态接口,参见以上的Appointment 财务预约响应参数

# 撤销业务

# 功能介绍

对应业务若已在财务系统中预约,将尝试在财务系统中撤销,如财务系统撤销失败,本接口也将失败。业务撤销成功后,查询接口将不再返回该笔业务的相关数据,视作已删除。

# 请求参数

  • 路径参数 businessType 自拟定业务分类
  • 路径参数 businessNo 业务号

# 标记业务处理完成

# 功能介绍

标记业务处理完成

# 请求参数

  • 路径参数 businessType 自拟定业务分类
  • 路径参数 businessNo 业务号

# 响应参数

所有API的响应参数都具有相同的通用结构,本文档只描述通用结构中entities数组返回的数据对象。

同获取指定业务分类下所有预约处理的状态接口,参见以上的Appointment 财务预约响应参数