components: schemas: # 基础请求模型 BaseRequest: type: object xml: name: "in" namespace: "" prefix: "" required: - Version - InstId - TranCode - TranDate - TranSeq properties: Version: type: string description: 版本号 example: "1.0.1" InstId: type: string description: 机构编码 example: "00001" maxLength: 30 TranCode: type: string description: 交易码 example: "Query" maxLength: 20 TranDate: type: string description: 交易日期 pattern: '^\d{8}$' example: "20240101" TranSeq: type: string description: 交易流水号(银行生成的唯一标识) example: "123456789012" maxLength: 40 # 基础响应模型 BaseResponse: type: object xml: name: "out" namespace: "" prefix: "" required: - Version - InstId - TranCode - TranDate - TranSeq - RespCode - RespMessage properties: Version: type: string description: 版本号 example: "1.0.1" InstId: type: string description: 机构编码 example: "00001" TranCode: type: string description: 交易码 example: "QueryRes" TranDate: type: string description: 交易日期 pattern: '^\d{8}$' example: "20240101" TranSeq: type: string description: 交易流水号 example: "123456789012" RespCode: type: string description: 返回码 enum: - "AAAAAAA" # 成功 - "DEF0001" # 无相应记录 - "DEF0002" # 缴费金额不匹配 - "SYS1001" # 系统异常 - "SEC2001" # 加密错误 example: "AAAAAAA" RespMessage: type: string description: 返回消息 example: "成功" maxLength: 60 # 错误详情 ErrorDetail: type: object xml: name: "ErrorDetail" properties: ErrorCode: type: string description: 错误码 example: "DEF0001" ErrorMsg: type: string description: 错误消息 example: "用户编号123456不存在" ErrorTime: type: string format: date-time description: 错误时间 example: "2024-01-01T12:00:00.000Z" # 客户信息 Customer: type: object xml: name: "Customer" properties: BillKey: type: string description: 客户编号(缴费号) example: "123456" maxLength: 35 CustomerName: type: string description: 客户姓名 example: "张三" maxLength: 150 ContractNo: type: string description: 合同号 example: "CONTRACT001" maxLength: 30 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 # 账单信息 Bill: type: object xml: name: "Bill" properties: BillKey: type: string description: 客户编号 example: "123456" maxLength: 35 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 PayAmount: type: number format: decimal description: 缴费金额(单位:元) example: 150.00 minimum: 0.01 Balance: type: number format: decimal description: 余额(单位:元) example: 0.00 BeginDate: type: string format: date description: 账单开始日期 example: "2024-01-01" EndDate: type: string format: date description: 账单结束日期 example: "2024-01-31" BillStatus: type: integer description: 账单状态 enum: [0, 1] # 0:未缴费 1:已缴费 example: 0 # 交易记录 Transaction: type: object xml: name: "Transaction" properties: TranSeq: type: string description: 交易流水号 example: "TXN123456789012" maxLength: 40 BillKey: type: string description: 客户编号 example: "123456" maxLength: 35 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 TranCode: type: string description: 交易码 example: "Pay" maxLength: 20 PayAmount: type: number format: decimal description: 交易金额 example: 150.00 PayDate: type: string format: date-time description: 交易时间 example: "2024-01-01T12:00:00.000Z" SubChannel: type: integer description: 二级渠道 enum: [1, 2, 6] # 1:支付宝 2:微信 6:其它 example: 1 TranStatus: type: integer description: 交易状态 enum: [0, 1, 2] # 0:处理中 1:成功 2:失败 example: 1 RespCode: type: string description: 返回码 example: "AAAAAAA" RespMessage: type: string description: 返回消息 example: "成功" # 代扣协议 WithholdingAgreement: type: object xml: name: "WithholdingAgreement" properties: BillKey: type: string description: 客户编号 example: "123456" maxLength: 35 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 AccountName: type: string description: 开户名 example: "张三" maxLength: 150 AccountNo: type: string description: 开户账号 example: "6222001234567890" maxLength: 30 BankName: type: string description: 银行名称 example: "中国工商银行" maxLength: 150 ContractNo: type: string description: 合同号 example: "CONTRACT001" maxLength: 150 AgreementNo: type: string description: 协议号 example: "AGR001" maxLength: 150 BankType: type: integer description: 银行类型 enum: [0, 1] # 0:本行 1:他行 example: 0 AgreementStatus: type: integer description: 协议状态 enum: [0, 1, 2] # 0:未签约 1:已签约 2:已解约 example: 1 SigningDate: type: string format: date description: 签约日期 example: "2024-01-01" TerminationDate: type: string format: date description: 解约日期 example: "2024-12-31" # 账单查询请求 BillQueryRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - BillKey - CompanyId properties: BillKey: type: string description: 客户编号 example: "123456" maxLength: 35 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 # 账单查询响应 BillQueryResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: Data: type: object xml: name: "Data" properties: Customer: $ref: '#/components/schemas/Customer' Bills: type: array xml: name: "Bills" wrapped: true items: $ref: '#/components/schemas/Bill' ErrorDetail: $ref: '#/components/schemas/ErrorDetail' # 账单缴费请求 BillPayRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - BillKey - CompanyId - PayAmount properties: BillKey: type: string description: 客户编号 example: "123456" maxLength: 35 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 PayAmount: type: number format: decimal description: 缴费金额 example: 150.00 minimum: 0.01 SubChannel: type: integer description: 二级渠道 enum: [1, 2, 6] example: 1 # 账单缴费响应 BillPayResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: Data: type: object xml: name: "Data" properties: Transaction: $ref: '#/components/schemas/Transaction' ErrorDetail: $ref: '#/components/schemas/ErrorDetail' # 对账请求 PayCheckRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - CompanyId - PayDate - PayCount - PayMoney - FileName properties: CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 PayDate: type: string description: 对账日期 pattern: '^\d{8}$' example: "20240101" PayCount: type: string description: 交易总笔数 example: "100" maxLength: 8 PayMoney: type: string description: 交易总金额(单位:分) example: "15000" maxLength: 10 FileName: type: string description: 对账文件名 example: "654321_20240101.txt" maxLength: 100 # 对账响应 PayCheckResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: CompanyId: type: string description: 机构编码 example: "654321" PayDate: type: string description: 对账日期 example: "20240101" PayAmount: type: number format: decimal description: 交易总金额 example: 15000.00 # 取消代扣请求 CancelDiscRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - BatchNo - BillKey - CompanyId - AgreementNo properties: BatchNo: type: string description: 原批次号 example: "BATCH20240101001" maxLength: 50 BillKey: type: string description: 客户编号 example: "123456" maxLength: 35 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 AgreementNo: type: string description: 协议号 example: "AGR001" maxLength: 150 # 代扣状态查询请求 WithholdingStatusRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - BatchNo - CompanyId properties: BatchNo: type: string description: 批次号 example: "BATCH20240101001" maxLength: 50 CompanyId: type: string description: 机构编码 example: "654321" maxLength: 30 QueryDate: type: string description: 查询日期 pattern: '^\d{8}$' example: "20240101" # 代扣状态查询响应 WithholdingStatusResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: Data: type: object xml: name: "Data" properties: BatchNo: type: string description: 批次号 example: "BATCH20240101001" BatchStatus: type: string description: 批次状态 enum: ["PROCESSING", "SUCCESS", "FAILED", "PARTIAL"] example: "SUCCESS" TotalCount: type: integer description: 总笔数 example: 10 SuccessCount: type: integer description: 成功笔数 example: 8 FailCount: type: integer description: 失败笔数 example: 2 ProcessTime: type: string format: date-time description: 处理时间 example: "2024-01-01T12:00:00.000Z" # 客户基本信息查询请求 CustomerCheckRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - billKey - companyId properties: billKey: type: string description: 客户编号 example: "123456" maxLength: 35 companyId: type: string description: 机构编码 example: "654321" maxLength: 30 queryType: type: string description: 查询类型(0:基本信息,1:详细信息) enum: ["0", "1"] example: "0" contractNo: type: string description: 合同号 example: "CONTRACT001" maxLength: 30 filed1: type: string description: 备用字段1 maxLength: 100 filed2: type: string description: 备用字段2 maxLength: 100 # 客户基本信息查询响应 CustomerCheckResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: billKey: type: string description: 客户编号 example: "123456" companyId: type: string description: 机构编码 example: "654321" contractNo: type: string description: 合同号 example: "CONTRACT001" customerName: type: string description: 客户姓名 example: "张三" customerPhone: type: string description: 客户电话 example: "13812345678" customerAddress: type: string description: 客户地址 example: "北京市朝阳区xxx街道xxx号" customerStatus: type: string description: 客户状态(0:正常,1:暂停,2:销户) enum: ["0", "1", "2"] example: "1" serviceStatus: type: string description: 服务状态(0:停用,1:正常) enum: ["0", "1"] example: "1" registerDate: type: string description: 注册日期 pattern: '^\d{8}$' example: "20200101" lastPayDate: type: string description: 最后缴费日期 pattern: '^\d{8}$' example: "20231215" totalPayCount: type: string description: 累计缴费笔数 example: "36" totalPayAmount: type: string description: 累计缴费金额(单位:分) example: "540000" filed1: type: string description: 备用字段1 maxLength: 100 filed2: type: string description: 备用字段2 maxLength: 100 filed3: type: string description: 备用字段3 maxLength: 100 # 对账请求 PaymentCheckRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - companyId - payDate - payCount - payMoney - fileName properties: companyId: type: string description: 机构编码 example: "654321" maxLength: 30 payDate: type: string description: 对账日期 pattern: '^\d{8}$' example: "20240101" payCount: type: string description: 交易总笔数 example: "100" maxLength: 8 payMoney: type: string description: 交易总金额(单位:分) example: "150000" maxLength: 10 fileName: type: string description: 对账文件名 example: "654321_20240101.txt" maxLength: 100 # 对账响应 PaymentCheckResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: companyId: type: string description: 机构编码 example: "654321" payDate: type: string description: 对账日期 example: "20240101" payAmount: type: string description: 交易总金额 example: "150000" # 取消代扣交易请求 WithholdingCancelDiscRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - billKey - companyId - originalTranSeq - originalTranDate - contractNo - payAmount properties: billKey: type: string description: 客户编号 example: "123456" maxLength: 35 companyId: type: string description: 机构编码 example: "654321" maxLength: 30 originalTranSeq: type: string description: 原交易流水号 example: "ORIG123456789012" maxLength: 40 originalTranDate: type: string description: 原交易日期 pattern: '^\d{8}$' example: "20240101" cancelReason: type: string description: 取消原因 example: "用户申请取消" maxLength: 200 contractNo: type: string description: 合同号 example: "CONTRACT001" maxLength: 30 payAmount: type: string description: 缴费金额(单位:分) example: "15000" # 取消代扣交易响应 WithholdingCancelDiscResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: billKey: type: string description: 客户编号 example: "123456" companyId: type: string description: 机构编码 example: "654321" originalTranSeq: type: string description: 原交易流水号 example: "ORIG123456789012" cancelStatus: type: string description: 取消状态(1:成功,0:失败) enum: ["0", "1"] example: "1" cancelTime: type: string description: 取消时间 pattern: '^\d{14}$' example: "20240101120000" # 代扣送盘状态查询请求 WithholdingSendDiscCheckRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - billKey - companyId - originalTranSeq - originalTranDate - contractNo properties: billKey: type: string description: 客户编号 example: "123456" maxLength: 35 companyId: type: string description: 机构编码 example: "654321" maxLength: 30 originalTranSeq: type: string description: 原交易流水号 example: "ORIG123456789012" maxLength: 40 originalTranDate: type: string description: 原交易日期 pattern: '^\d{8}$' example: "20240101" contractNo: type: string description: 合同号 example: "CONTRACT001" maxLength: 30 # 代扣送盘状态查询响应 WithholdingSendDiscCheckResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: billKey: type: string description: 客户编号 example: "123456" companyId: type: string description: 机构编码 example: "654321" originalTranSeq: type: string description: 原交易流水号 example: "ORIG123456789012" discStatus: type: string description: 送盘状态(0:待处理,1:处理中,2:处理成功,3:处理失败,4:已取消) enum: ["0", "1", "2", "3", "4"] example: "2" discStatusDesc: type: string description: 送盘状态描述 example: "处理成功" discTime: type: string description: 处理时间 pattern: '^\d{14}$' example: "20240101120000" payAmount: type: string description: 缴费金额(单位:分) example: "15000" failReason: type: string description: 失败原因 example: "" # 代扣回盘状态查询请求 WithholdingBackDiscCheckRequest: allOf: - $ref: '#/components/schemas/BaseRequest' - type: object xml: name: "in" required: - billKey - companyId - originalTranSeq - originalTranDate - contractNo properties: billKey: type: string description: 客户编号 example: "123456" maxLength: 35 companyId: type: string description: 机构编码 example: "654321" maxLength: 30 originalTranSeq: type: string description: 原交易流水号 example: "ORIG123456789012" maxLength: 40 originalTranDate: type: string description: 原交易日期 pattern: '^\d{8}$' example: "20240101" contractNo: type: string description: 合同号 example: "CONTRACT001" maxLength: 30 batchNo: type: string description: 批次号 example: "BATCH20240101001" maxLength: 50 # 代扣回盘状态查询响应 WithholdingBackDiscCheckResponse: allOf: - $ref: '#/components/schemas/BaseResponse' - type: object xml: name: "out" properties: billKey: type: string description: 客户编号 example: "123456" companyId: type: string description: 机构编码 example: "654321" originalTranSeq: type: string description: 原交易流水号 example: "ORIG123456789012" discStatus: type: string description: 回盘状态(0:待处理,1:处理中,2:处理成功,3:处理失败,4:已取消) enum: ["0", "1", "2", "3", "4"] example: "2" discStatusDesc: type: string description: 回盘状态描述 example: "处理成功" discTime: type: string description: 处理时间 pattern: '^\d{14}$' example: "20240101120000" payAmount: type: string description: 缴费金额(单位:分) example: "15000" actualPayAmount: type: string description: 实际扣款金额(单位:分) example: "15000" batchNo: type: string description: 批次号 example: "BATCH20240101001" clearingDate: type: string description: 清算日期 pattern: '^\d{8}$' example: "20240102" failReason: type: string description: 失败原因 example: ""