1.申请开票接口
1.1使用场景
①用户首次申请开具电子发票,后端保存好申请信息后,需要调用本接口进行开发票
②用户申请开具电子发票失败后,主动更新了自己的开票信息数据,后端更新好申请信息后,需要调用本接口进行再次的开发票
1.2使用说明
开发者保存或更新用户开票申请信息后,需要将用户的开票信息数据,订单信息数据和订单明细数据封装成InvoiceCreateRequest
对象丢入开票队列即可
1.3接口入参
注:*为必填字段
{
"operId":"操作人编号",
"operName":"操作人姓名",
"invoiceOrderInfoInDto": {
*"orderNo": "订单号",
*"orderSource": "订单来源:1:电商 2:全员营销 3:X6",
*"applyId":"发票申请编号",
*"totalAmount": "订单总金额",
*"invoiceConfigId": "配置编号"
},
"invoiceOrderDetailInDtoList": [{
*"id":"订单明细编号",
*"name": "商品名称",
"unit": "商品单位",
"specificationModel": "商品规格型号",
*"num": "数量",
*"price": "单价",
*"taxCode": "商品税务分类编码",
*"amount": "商品明细小计"
},....],
"buyerInfoInDto": {
*"name": "开票方名称(个人姓名或公司名称)",
"taxpayerId": "公司税号",
*"phone": "开票方手机号",
"address": "开票方公司地址",
"fixedTel": "开票方公司固定电话",
"email": "开票方邮箱",
"bankInfoAddress":"开票方银行地址信息",
"bankInfoAccount":"开票方银行账号信息",
*"enterpriseType": "企业类型:01:企业 02:.. 03:..."
}
}
1.4接口出参
注: 需要注册消费者消费队列消息
字段 | 说明 | 一定存在? |
---|---|---|
returnCode | 响应码: 1:开具成功 2:购货方信息错误 3:发票业务异常,请联系客服人员 |
是 |
returnMsg | 开具成功 购货方信息错误 发票业务异常,请联系客服人员 |
是 |
applyId | 发票申请编号 | 是 |
operId | 操作人编号 | 否 |
operName | 操作人姓名 | 否 |
2.冲销发票(异步)
2.1使用场景
用户开完发票后进行了退货,此时此发票需要被作废(冲销),后端需要调用发票冲销接口完成冲销
2.2使用说明
开发者需要向接口传入订单号和发票单号即可,在调用本接口前一定要调用第4个接口来进行红冲发票的数据生成和红冲条件判断
2.3接口入参
注:*为必填字段
{
"operId":"操作人编号",
"operName":"操作人姓名",
*"invoiceFrom":"发票来源:1:电商 2:全员营销 3:X6",
*"applyId":"发票申请编号",
*"invoiceNo":"发票号",
"invoiceOrderDetailInDtoList": [{
*"id":"订单明细编号",
*"name": "商品名称",
"unit": "商品单位",
"specificationModel": "商品规格型号",
*"price": "单价",
*"taxCode": "商品税码"
},....],
"buyerInfoInDto": {
*"name": "开票名称(个人名称或公司名称)",
"taxpayerId": "公司税号",
*"phone": "开票方手机号",
"address": "开票方公司地址",
"fixedTel": "开票方公司固定电话",
"email": "开票方邮箱",
"bankInfoAddress":"开票方银行地址信息",
"bankInfoAccount":"开票方银行账号信息",
*"enterpriseType": "企业类型:01:企业 02:.. 03:..."
}
}
2.4接口出参
注: 需要注册消费者消费队列消息
字段 | 说明 | 一定存在? |
---|---|---|
returnCode | 响应码: 1:红冲成功 2:开具错误 |
是 |
returnMsg | 红冲成功 开具错误 |
是 |
applyId | 发票申请编号 | 是 |
originalInvoiceNo | 原发票号 | 是 |
operId | 操作人编号 | 否 |
operName | 操作人姓名 | 否 |
3.冲销发票(同步)/redFlushInvoice
3.1使用场景
3.2使用说明
开发者向接口传入订单号和发票单号后,会同步接收到一个R的返回,此接口无需调用第4个接口
3.3接口入参
注:*为必填字段
{
*"invoiceFrom":"发票来源:1:电商 2:全员营销 3:X6",
*"applyId":"发票申请编号",
*"invoiceNo":"发票号",
"invoiceOrderDetailInDtoList": [{
*"id":"订单明细编号",
*"name": "商品名称",
"unit": "商品单位",
"specificationModel": "商品规格型号",
*"price": "单价",
*"taxCode": "商品税码"
},....],
"buyerInfoInDto": {
*"name": "开票名称(个人名称或公司名称)",
"taxpayerId": "公司税号",
*"phone": "开票方手机号",
"address": "开票方公司地址",
"fixedTel": "开票方公司固定电话",
"email": "开票方邮箱",
"bankInfoAddress":"开票方银行地址信息",
"bankInfoAccount":"开票方银行账号信息",
*"enterpriseType": "企业类型:01:企业 02:.. 03:..."
}
}
3.4接口出参
成功返回
{
"code": 200,
"msg": null,
"data": "发票流水号"
}
错误返回
{
"code": 501,
"msg": "发票信息不存在",
"data": null
}
{
"code": 501,
"msg": "发票暂未开具成功,无法红冲",
"data": null
}
{
"code": 501,
"msg": "发票已经被红冲",
"data": null
}
4.异步冲销发票数据生成 /isCanRedFlushInvoice
4.1使用场景
开发者希望使用异步的冲销发票接口(接口2),此时必须先调用本接口来对红冲发票进行相关判断并生成红冲发票信息
4.2使用说明
一定在异步冲销发票接口(2)调用前调用,R的返回为成功时可调用异步冲销接口(2接口)
4.3接口入参
和接口2完全相同
{
"operId":"操作人编号",
"operName":"操作人姓名",
*"invoiceFrom":"发票来源:1:电商 2:全员营销 3:X6",
*"applyId":"发票申请编号",
*"invoiceNo":"发票号",
"invoiceOrderDetailInDtoList": [{
*"id":"订单明细编号",
*"name": "商品名称",
"unit": "商品单位",
"specificationModel": "商品规格型号",
*"price": "单价",
*"taxCode": "商品税码"
},....],
"buyerInfoInDto": {
*"name": "开票名称(个人名称或公司名称)",
"taxpayerId": "公司税号",
*"phone": "开票方手机号",
"address": "开票方公司地址",
"fixedTel": "开票方公司固定电话",
"email": "开票方邮箱",
"bankInfoAddress":"开票方银行地址信息",
"bankInfoAccount":"开票方银行账号信息",
*"enterpriseType": "企业类型:01:企业 02:.. 03:..."
}
}
4.4接口出参
{
"code": 200,
"msg": null,
"data": null
}
5.发票单列表获取 /obtainInvoiceList
5.1使用场景
5.2使用说明
5.3接口入参
字段 | 说明 | 是否必填 |
---|---|---|
invoiceFrom | 发票申请来源:1:电商2:全员营销 3:X6 | 是 |
applyId | 发票申请编号 | 是 |
5.4接口出参
{
"code": 200,
"msg": null,
"data": {
"invoiceRecordOutDtoList": [
{
"invoiceSerialNo": "发票流水号",
"invoiceNo": "发票号",
"invoiceCode": "发票代码",
"invoiceUrl": "发票链接",
"invoiceStatus": "发票状态:1:未开票 2:已开票 3:已下载",
"invoiceType":"发票类型 1-电子票2-纸质票",
"invoiceTime":"开票日期",
"isRed":"是否为红票 0-非红票 1-红票",
"originalInvoiceNo":"原发票号",
"originalInvoiceCode":"原发票代码"
}
]
}
}
6.电子发票手动下载 /downloadManualInvoice
6.1使用场景
6.2使用说明
6.3接口入参
字段 | 说明 | 是否必填 |
---|---|---|
invoiceSerialNo | 发票流水号 | 是 |
6.4接口出参
成功的情况
{
"code": 200,
"msg": null,
"data": {
"invoiceRecordOutDto": {
"invoiceSerialNo": "发票流水号",
"invoiceNo": "发票号",
"invoiceCode": "发票代码",
"invoiceUrl": "发票地址",
"invoiceStatus": "发票状态:1:未开票 2:已开票 3:已下载"
}
}
}
失败的情况
#流水号有误
{
"code": 501,
"msg": "发票流水号有误,无发票信息",
"data": null
}
#未开具不可下载
{
"code": 501,
"msg": "发票未开具成功,无法下载",
"data": null
}
#未下载成功
{
"code": 501,
"msg": "发票下载链接努力准备中,请稍后重试",
"data": null
}
7.纸质发票单号回填 /paperInvoiceBackFill
7.1使用场景
用户申请纸质发票,此时需要财务线下开具发票后回填发票号到系统
7.2使用说明
7.3接口入参
字段 | 说明 | 是否必填 |
---|---|---|
invoiceFrom | 发票来源 | 是 |
orderNo | 订单号 | 是 |
applyId | 发票申请编号 | 是 |
invoiceNo | 发票单号 | 是 |
7.4接口出参
成功返回
{
"code": 200,
"msg": null,
"data": null
}
失败返回
{
"code": 501,
"msg": "发票号重复",
"data": null
}