侧边栏壁纸
博主头像
极简笔记博主等级

极简笔记,书写你的精彩程序人生!

  • 累计撰写 147 篇文章
  • 累计创建 24 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

百旺云平台-发票开具接口文档

极简笔记
2022-06-29 / 0 评论 / 0 点赞 / 1,075 阅读 / 7,066 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-06-29,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

baiwang.output.invoice.issue

(此文档内容适用于SDK版本为3.4.233及以上版本)

接口简介

发票开具企业系统可以通过调用此接口传递发票开具所需数据,完成直连开票。此接口支持开具增值税专用发票、增值税纸质普通发票、增值税电子发票、增值税卷式发票和增值税电子专用发票。开具纸质发票时此接口只返回开具数据,打印纸质发票需要调用【发票打印】接口。此接口支持开具正数发票和负数发票(红冲)共用,通过开票类型参数区分。对于红冲:1. 电子发票只能红冲不能作废;纸质发票当月可以作废,跨月只能红冲。2. 专用发票红冲时,需先申请红字信息表。

一、公共参数

名称 类型 是否必须 描述
method String 接口名称。
appKey String 给开发者颁发的 key。
sign String 请求签名,使用MD5,用于安全控制。
token String token 用于调用接口前授权检查。
timestamp String Unix时间戳,例如:1506304524。
format String 响应格式。默认为json格式,可选值:xml,json。
version String API协议版本,当前版本号6.0。
type String 请求类型,默认 sync,可选值asyn,sync。
requestId String 请求唯一标识,标识唯一请求,默认UUID。

二、请求业务参数

ID 类型 长度 是否必须 描述
taxNo String 20 税号
invoiceTerminalCode String 30 服务器/税务ukey 用户专普票必填,电子票非必填;税务ukey终端使用机器编号;盘用户,盘号终端选填,如果只有一个终端可不填,全电票种选填
isSplit Object 10 是否需要拆分开具,默认不拆分(拆分只支持发票类型代码为 专票 004 普票 007 电子票 026的发票)
orgCode String 64 组织机构编码,如果为空则上传至税号对应的机构下,如果维护了机构则按照机构归属待开信息,根据判断自行信息管理选择是否设置开票相关信息;根据组织机构编码获取销方信息
taxDiskNo String 12 盘号终端选填,如果只有一个终端可不填
formatGenerate Object 10 是否需要生成版式返回版式链接(true / false)
formatPushType Object 1 版式生成是否推送(true / false)
completionCustom String 1 值为(1/0 1 需要补全 0不需要补全,默认为0)是否根据客户编码,购方税号,购方名称查询客户信息补全未填写的购方信息(购方税号,购方名称,购方地址电话,购方银行账号,邮箱,手机)
data Object ~ ~
└ invoiceTypeCode String 3 发票种类编码, 004:增值税专用发票;007:增值税普通发票;026:增值税电子发票;025:增值税卷式发票;028:增值税电子专用发票 01:电子发票(增值税专用发票) 02:电子发票(普通发票)
└ invoiceType String 32 开票类型 0:正数发票(蓝票) 1:负数发票(红票)默认0
└ invoiceSpecialMark String 2 特殊票种标志, 00:普通发票;01:农产品销售;02:农产品收购;08:成品油 12 机动车(默认是00普通发票) 发票类型代码为01,02时只支持普通发票
└ taxationMethod String 1 征税方式, 0:普通征税;2:差额征税(默认是0普通征税)发票类型代码为01,02时只支持普通征税
└ invoiceListMark String 1 0:无清单;1:带清单(专普票发票明细大于等于8行必须带清单):大于8行必须为清单票(电子票只能为非请单票)(默认是0无清单),发票类型代码为01,02时该字段无
└ priceTaxMark String 1 含税标志, 0:不含税;1:含税(默认不含税)
└ serialNo String 50 开票流水号, 唯一标志开票请求。支持数字字母下划线组合。
└ buyerTaxNo String 20 购方单位税号, invoiceTypeCode=004,增值税专用发票开具时必传
└ buyerName String 80 购方单位名称
└ buyerAddressPhone String 100 购方地址及电话, 增值税专用发票开具时必填,发票类型代码为01、02时该字段拆分为地址电话两个字段
└ buyerBankAccount String 100 购方开户行及账号, 增值税专用发票开具时必填,发票类型代码为01、02时该字段拆分为银行名称、账号两个字段
└ drawer String 20 开票人,20字符,如果终端有值取终端,如果没有去机构获取,如果都没有会自动获取机构下随机用户名称,,发票类型代码为01,02时必填
└ checker String 16 复核人, 16个字符; 为空时,如果终端有值取终端,如果没有去机构获取,若都没有则为空!
└ payee String 16 收款人, 16个字符;为空时,如果终端有值取终端,如果没有去机构获取,若都没有则为空!
└ invoiceTotalPrice BigDecimal 13 合计金额, 保留两位小数;支持价税分离
└ invoiceTotalTax BigDecimal 13 合计税额, 保留两位小数;支持价税分离
└ invoiceTotalPriceTax BigDecimal 13 价税合计, 保留两位小数;支持价税分离
└ remarks String 200 备注
└ redInfoNo String 20 红字信息表编号, invoiceType=1 and invoiceTypeCode=004,增值税专用发票负数票开具时必传
└ originalInvoiceCode String 12 原发票代码, invoiceType=1,负数票开具时必传
└ originalInvoiceNo String 8 原发票号码, invoiceType=1,负数票开具时必传
└ deductibleAmount BigDecimal 13 扣除额, taxationMode=2,差额征税时必传。数值必须小于价税合计。
└ sellerAddressPhone String 100 销方地址及电话,发票类型代码为01、02时该字段拆分为地址、电话两个字段
└ sellerBankAccount String 100 销方开户行及账号,发票类型代码为01、02时该字段拆分为银行名称、账号两个字段
└ ext Map ~ Map<String, Object>, 扩展字段
└ systemName String 150 第三方系统名称
└ systemId String 50 第三方系统id
└ buyerEmail String 100 客户邮箱
└ emailCarbonCopy String 100 抄送人邮箱,多个用英文逗号隔开,最多5个抄送人信息
└ buyerPhone String 40 客户电话
└ userAccount String 30 用户账号,用于个人维度数据标记
└ redIssueReason String 10 红冲原因(1 销货退回 2 开票有误 3 服务终止 4 销售折让),建议按实际开票情况传入红冲原因,若不传系统会自动根据情况判断并赋值。
└ discountType String 10 整单折扣类型 1 :按折扣金额价内折扣,2:按折扣金额价外折扣,3:按折扣率价内折扣,4:按折扣率价外折扣
└ discountAmount BigDecimal 20 整单折扣金额,大于0小于发票总金额,如果是含税发票,大于0小于含税总金额
└ discountRate Integer 100 整单折扣率,取值[1-100]正整数
└ mainGoodsName String 10 卷式发票票样 01 02 03 04 05 06 07
└ buyerBankName String 80 购买方银行名称,发票类型代码为01、02时该字段可用
└ buyerBankNumber String 20 购买方银行账号,发票类型代码为01、02时该字段可用
└ buyerAddress String 80 购买方地址,发票类型代码为01、02时该字段可用
└ buyerTelphone String 20 购买方电话,发票类型代码为01、02时该字段可用
└ sellerBankName String 80 销方银行名称,发票类型代码为01、02时该字段可用
└ sellerBankNumber String 20 销方银行账号,发票类型代码为01、02时该字段可用
└ sellerAddress String 80 销方地址,发票类型代码为01、02时该字段可用
└ sellerTelphone String 20 销方电话,发票类型代码为01、02时该字段可用
└ invoiceDetailsList List ~ List, 商品明细节点
└└ goodsLineNo Integer 4 明细行号
└└ invoiceLineNature String 1 发票行性质, 0:正常行;1:折扣行;2:被折扣行,默认为0
└└ goodsCode String 40 税收分类编码(末级节点)
└└ goodsPersonalCode String 50 商品编码, 可以支持根据商品名称或商品编码进行获取【增加商品编码字段】:平台必须维护商品信息
└└ goodsName String 100 商品名称, 支持根据商品或商品编码获取商品信息:平台必须维护商品信息   ~~二选一必填
└└ goodsSpecification String 36 规格型号
└└ goodsUnit String 14 计量单位 特殊票种为12时必填,只能为辆
└└ goodsQuantity BigDecimal 14 商品数量,总长13位,特殊票种为12时必填
└└ goodsPrice BigDecimal 13 商品单价,总长13位,特殊票种为12时必填
└└ goodsTotalPrice BigDecimal 13 金额,小数点后2位,超长自动保留两位小数
└└ goodsTotalTax BigDecimal 13 税额,小数点后2位,超长自动保留两位小数, 如果为空,根据金额、税率计算得出
└└ goodsTaxRate BigDecimal 5 税率,超长自动保留三位小数
└└ vatSpecialManagement String 200 优惠政策类型,preferentialMarkFlag=1,使用优惠政策时必传
└└ freeTaxMark String 1 零税率标识, 空代表无; 1:出口免税和其他免税优惠政策; 2:不征增值税;3:普通零税率
└└ preferentialMarkFlag String 1 是否使用优惠政策, 0:未使用;1:使用 根据商品信息获取
└└ goodsDiscountAmount BigDecimal 20 明细行折扣金额

备注:用 └ 标识层级关系

三、响应公共参数

名称 类型 描述
success Boolean 接口调用成功或失败的标志 true:成功,false:失败
method String 接口的唯一标识
requestId String 请求唯一标识, 与调用接口时传入的request_id一致
response 业务接口调用成功后返回的具体响应信息,不同的接口返回的model不同
errorResponse 错误响应信息
└ code String 调用失败后,返回的错误码(开放平台错误码)
└ message String 调用失败后,返回的错误信息(开放平台错误信息)
└ subCode String 调用失败后,返回的错误码(业务端返回错误码——详见【五、错误码】部分)
└ subMessage String 调用失败后,返回的错误信息(业务端返回错误信息——详见【五、错误码】部分)

四、响应业务参数

ID 名称 类型 长度 描述
fail 拆分开具失败返回拆分的发票金额明细信息 List List
└ serialNo 开票流水号 String 50 唯一标志开票请求
└ invoiceTotalPrice 合计金额 BigDecimal 13 ~
└ invoiceTotalTax 合计税额 BigDecimal 13 ~
└ invoiceTotalPriceTax 价税合计 BigDecimal 13 ~
└ invoiceDetailsList 商品明细 List List
└└ goodsLineNo 明细行号 String 4 ~
└└ invoiceLineNature 发票行性质 String 1 0:正常行 1:折扣行 2:被折扣行
└└ goodsCode 商品编码 String 40 ~
└└ goodsName 商品名称 String 92 ~
└└ goodsSpecification 规格型号 String 40 ~
└└ goodsUnit 计量单位 String 14 ~
└└ goodsQuantity 商品数量 String 14 ~
└└ goodsPrice 商品单价 BigDecimal 13 ~
└└ goodsTotalPrice 金额 BigDecimal 13 ~
└└ goodsTotalTax 税额 BigDecimal 13 ~
└└ goodsTaxRate 税率 BigDecimal 5 ~
└└ priceTaxMark 含税标志 String 1 0:不含税 1:含税
└└ vatSpecialManagement 增值税特殊管理 String 200 ~
└└ freeTaxMark 零税率标识 String 1 空代表无 1 出口免税和其他免税优惠政策 2 不征增值税 3 普通零税率
└└ preferentialMark 是否使用优惠政策 String 1 0:未使用,1:使用
success 开具成功返回数据 List ~ List, 部分开具或全部开具返回开具成功部分信息
└ invoiceCode 发票代码 String 12 ~
└ invoiceNo 发票号码 String 8 ~
└ invoiceCheckCode 校验码 String 22 ~
└ invoiceDate 开票日期 String 14 格式:yyyyMMddHHmmss
└ invoiceQrCode 二维码 String 8182 ~
└ taxControlCode 税控码 String 22 ~
└ invoiceTypeCode 发票类型代码 String 22 ~
└ serialNo 流水号 String 22 ~
└ eInvoiceUrl 电子发票地址 String 1024 ~
└ invoiceTotalPrice 合计金额 BigDecimal 13 ~
└ invoiceTotalPriceTax 价税合计 BigDecimal 13 ~
└ invoiceTotalTax 合计税额 BigDecimal 13 ~
└ invoiceDetailsList 发票明细集合 List ~ List
└└ goodsLineNo 明细行号 Integer ~ ~
└└ goodsName 商品名称 String 100 ~
└└ goodsCode 商品编码 String 50 ~
└└ goodsPrice 商品单价 BigDecimal 13 ~
└└ goodsUnit 单位 String 14 ~
└└ goodsQuantity 商品数量 BigDecimal 14 ~
└└ goodsTotalPrice 商品金额 BigDecimal 13 ~
└└ goodsTaxRate 税率 BigDecimal 5 ~
└└ goodsTotalTax 商品税额 BigDecimal 13 ~

五、错误码

名称 错误描述
00000004 没有USB设备
00000006 税控设备密码错误 DiskErr:090003
00000007 选择税务应用错误 DiskErr:09c000
0000000A 证书口令错误 CftCode:000000A7 CftError:未插USBKEY(0xA7)
0000000B 获取证书纳税人识别号时异常 CftCode:30000002 CftError:
00000014 获取税控设备时钟异常 DiskErr:09c000
00000016 获取税控设备发票类型异常,请确定是否开通该类型发票-304
00000030 获取税控盘当前发票模板时异常 DiskErr:09c000
00000034 当前可用发票份数为0,请领购发票-801
00000038 超过离线开票限定张数,请等待发票上传完毕后重试-706
000000A7 读取税控设备证书异常,请重试
00000200 通知单编号长度错误
00000201 购货单位识别号格式错误
00000204 第1行费用项目,此税率不合法
00000300 超出注册码截止时间
0009240B 发票开具-税控设备操作错误-商品库存偏移有误
0009C001 发票开具-税控设备操作错误-税务UKey未个性化
0009C007 发票开具-税控设备操作错误-控制开票标志已被启用,禁止开票
0009D101 已超过单张发票开票金额限额-707
0009D106 当前可用发票份数为0,请领购发票-801
0009D109 已到开票截止日期,禁止开票-805
0009D10B 校验税控设备口令-税控设备操作错误-口令锁定
0009D110 获取税控设备发票类型异常,请确定是否开通该类型发票-304
0009D11E 验签失败发票份数超过限定张数,请到开票软件中对验签失败发票进行作废
0009D11F 超过离线开票限定时间,请等待发票上传完毕后重试-706
0009D121 超过离线开票限定金额,请等待发票上传完毕后重试-706
0009D122 超过离线开票上传限定截止日期,请等待发票上传完毕后重试-706
00101010 没有USB设备
01000011 购货单位地址电话格式有误
01000022 商品折扣金额不能为非负数_FyxmN2
010000A1 小规模纳税人发票只能开具(5%、3%、1.5%、0%)的税率!_FyxmN1
010000B6 商品编码是汇总项或者商品编码已禁用_FyxmN1
010000B7 没有此税率的授权信息_FyxmN1
010000EC 税率为0%,零税率标识不能为空_FyxmN1
02000005 输入口令长度错误
0200000A 输入纳税人识别号有误
0200007F 根据税号盘号获取注册码信息失败,请检查维护的终端信息是否正确
10000 服务间调用超时
10005 平台中并未有此商品,请先去平台维护商品信息!
20019 调用[发票开具]接口失败!【开票类型代码】字段不能为空!!!
20020 根据开票点请求参数或盘用户默认唯一终端未获取到开票点信息!
20021 根据税控盘编号未获取到开票点信息!
20022 根据开票点代码未获取到开票点信息!
20023 未获取到电票开票点信息!
20024 根据查询条件获取到[6]个开票终端
20025 根据税号没有获取到组织机构!
30401 购方单位开户行及账号(xxx),因其中含有非GBK字符集编码的字符串导致部分信息显示异常,请核对并修改后重试
30406 当前请求流水号已存在!
30503015 销方单位地址及电话最多为100个字符,50个汉字!
30504009 开票类型错误
30504016 收款人最多为16个字符,8个汉字!
30504018 复核人最多为16个字符,8个汉字
30507001 合计金额不能为空!
30507006 商品明细不能为空!
30507011 电子票不能开具清单发票
30507013 不能开具合计金额为0的发票!
30507016 原发票查询失败,请确认原票是否开具成功!
30507018 此税率商品红冲金额超过原票金额!
30507024 合计金额大于原发票合计金额,不能开具!
30507041 行号为[ xx ]的商品,开具卷式发票商品数量和单价不能为空
30507042 行号为[ xx ]的商品,商品数量和单价应同时为空或同时非空
30507047 行号为[ xx ]的商品,专票不能开具零税率发票!
30507049 行号为[ xx ]的商品,优惠政策标识只能为0或1!
30507050 行号为[ xx ]的商品,优惠政策标识为0时不能使用增值税特殊管理
30507052 行号为[ xx ]的商品,零税率标识不为空时,商品必须为0税率!
30507054 行号为[ xx ]的商品,含税标志只能为0或1!
30507055 行号为[ xx ]的商品,商品编码不能为空
30507056 行号为[ xx ]的商品,商品编码不能小于19位!
30507059 行号为[ xx ]的商品,自定义商品名称长度不能超过90个字符!
30507065 行号为[ xx ]的商品,商品编码信息不存在!
30507075 行号为[ 1 ]的商品,规格型号不能超过40个字符
30507080 行号为[ xx ]的商品,开具成品油卷式发票单位只能为升!
30507083 行号为[ xx ]的商品,折扣行上一行必须为被折扣行
30507085 行号为[ xx ]的商品,折扣行金额不能大于被折扣行!
30507087 行号为[ xx ]的商品,折扣行,规格型号必须为空!
30507089 行号为[ xx ]的商品,折扣行,商品数量必须为空!
30507097 合计税额不正确!
30507101 商品明细不能为空!
30507102 行号为[ xx ]的商品,单价*数量不等于金额!误差值为:xxx
30507103 行号为[ xx ]的商品,税额计算有误!误差值为:xxx
30507108 行号为[ xx ]的商品,使用优惠政策,增值税特殊管理不能为空!
30507109 行号为[ xx ]的商品,使用优惠政策,使用优惠政策,增值税特殊管理不能自定义!
30507110 行号为[ xx ]的商品,税率不能小于0!
30507111 行号为[ xx ]的商品,对应的初始化商品税率不在可用税率范围内,请重新输入
30507113 行号为[ xx ]的商品,商品单价不能为负数!
30507114 行号为[ xx ]的商品,商品金额必须为正数
30507115 行号为[ xx ]的商品,商品金额必须为负数
30507119 超过8行商品的发票只能开具清单发票
30507122 行号为[ xx ]的商品信息中商品编码使用错误,开具非成品油发票不允许使用成品油编码
30511001 购方名称不能为空!
30511002 购方纳税人识别号不能为空
30511003 购方地址电话不能为空
30511004 购方开户行账号不能为空!
30511013 购方客户名称最多为100个字符,50个汉字
30511019 购方开户行账号最多为100个字符,50个汉字
30511023 购方地址电话最多为100个字符,50个汉字!
30511025 手机号格式错误!
30511028 邮箱格式错误!
30511029 购方纳税人识别号为7-20位数字或字母!
30801001 行号为[ xx ]的商品,税率不在核心板可用税率范围内
309040 发票请求流水号[xxx]对应的发票正在开具中,请15min稍后重试!
309110 红字信息表编号[ xx] 不符合规则,请检查后重试!
309149 开具增值税专用发票(机动车),行号为[ xx ]的商品,单价、数量、单位不能为空
309152 开具增值税专用发票(机动车),行号为[ 1 ]的商品,商品编码只能选择机动车类税收分类编码
309156 增值税专用发票(机动车)红字信息表编号再红字信息表中不存在
309158 备注不能超过xx个字符
31506010 购方税号不能全部为0,可能会导致发票验签失败,请修改后重试!
32001 09D103:发票已用完
33038 当前发票代码号码已存在,无法保存!
51108 调用税控系统未返回任何数据!
52103 税控盘【xx】不在线,请核实如下问题:1)云桌面/云助手是否已正常启动且配置正确;2)【税控盘】是否已正常连接电脑;3)网络状况是否畅通;确保以上问题正常无误后再进行重试,如仍存在问题,请联系管理员。

六、请求示例

json格式示例

POST http://ip:port/router/rest?method=baiwang.output.invoice.issue&version=6.0&appKey=1234567&format=json&timestamp=1656316776903&token=407ac1c7-cb33-44e5-81f6-bb9f45e5d0e6&type=sync&requestId=6ede1a11-24b4-4ae9-bea7-783417004f62&sign=4DED6399FFA323C54AE2B86F1F1D183C

{
	"isSplit":false,
	"completionCustom":"",
	"data":{
		"sellerTelphone":"",
		"discountRate":0,
		"priceTaxMark":"0",
		"buyerBankAccount":"中国工商银行海淀分行 62266693991223881",
		"buyerTelphone":"",
		"buyerEmail":"",
		"invoiceTotalTax":1.3,
		"discountAmount":0,
		"sellerAddress":"",
		"checker":"李佳佳",
		"mainGoodsName":"",
		"sellerAddressPhone":"",
		"taxationMethod":"0",
		"redInfoNo":"",
		"payee":"任盈盈",
		"buyerAddress":"",
		"systemName":"",
		"buyerBankName":"",
		"invoiceType":"0",
		"redIssueReason":"",
		"emailCarbonCopy":"",
		"discountType":"",
		"buyerAddressPhone":"北京市海淀区 010-83332891",
		"ext":{},
		"systemId":"",
		"buyerTaxNo":"91500000747150890S",
		"deductibleAmount":0,
		"drawer":"张一诺",
		"invoiceSpecialMark":"00",
		"buyerName":"百望测试40",
		"originalInvoiceNo":"",
		"invoiceListMark":"0",
		"invoiceTotalPriceTax":11.3,
		"serialNo":"T150000431379",
		"sellerBankNumber":"",
		"buyerPhone":"",
		"invoiceTotalPrice":10,
		"buyerBankNumber":"",
		"sellerBankAccount":"",
		"userAccount":"",
		"invoiceDetailsList":[
			{
				"goodsTaxRate":0.13,
				"invoiceLineNature":"0",
				"goodsTotalPrice":10,
				"preferentialMarkFlag":"0",
				"goodsPersonalCode":"",
				"goodsSpecification":"",
				"goodsPrice":1,
				"freeTaxMark":"",
				"goodsDiscountAmount":0,
				"goodsQuantity":10,
				"goodsUnit":"",
				"goodsTotalTax":1.3,
				"goodsCode":"1010101070000000000",
				"goodsName":"燕麦",
				"goodsLineNo":1,
				"vatSpecialManagement":""
			}
		],
		"invoiceTypeCode":"026",
		"sellerBankName":"",
		"remarks":"",
		"originalInvoiceCode":""
	},
	"orgCode":"",
	"invoiceTerminalCode":"dzpzd008",
	"taxNo":"512345678900000040",
	"formatPushType":false,
	"taxDiskNo":"",
	"formatGenerate":false
}

sdk调用示例

String url = "请求地址";
String appKey = "appKey";
String appSecret = "appSecret";
String username = "用户名";
String password = "用户密码";
String userSalt = "用户盐值";  

try {
    String requestId = UUID.randomUUID().toString(); //自定义请求唯一标识
    PasswordLoginConfig loginConfig = new PasswordLoginConfig();
    loginConfig.setUrl(url);
    loginConfig.setClientId(appKey);
    loginConfig.setClientSecret(appSecret);
    loginConfig.setUsername(username);
    loginConfig.setPassword(password);
    loginConfig.setUserSalt(userSalt);
    BopLoginClient loginClient = new PasswordLoginClient(loginConfig);

    // 获取token, token相关说明请参考 文档中心 -> 用户授权说明
    BopLoginResponse loginResponse = loginClient.login();
    // 重载方法,可以传自定义请求唯一标识
    // BopLoginResponse loginResponse = loginClient.login(requestId);
    String token = loginResponse.getResponse().getAccessToken();


    OutputInvoiceIssueRequest request = new OutputInvoiceIssueRequest();
    request.setIsSplit(false);
    request.setCompletionCustom("");
    OutputInvoiceIssuePreInvoice data = new OutputInvoiceIssuePreInvoice();
    data.setSellerTelphone("");
    data.setDiscountRate(0);
    data.setPriceTaxMark("0");
    data.setBuyerBankAccount("\u4E2D\u56FD\u5DE5\u5546\u94F6\u884C\u6D77\u6DC0\u5206\u884C 62266693991223881");
    data.setBuyerTelphone("");
    data.setBuyerEmail("");
    data.setInvoiceTotalTax(BigDecimal.valueOf(1.3));
    data.setDiscountAmount(BigDecimal.valueOf(0.0));
    data.setSellerAddress("");
    data.setChecker("\u674E\u4F73\u4F73");
    data.setMainGoodsName("");
    data.setSellerAddressPhone("");
    data.setTaxationMethod("0");
    data.setRedInfoNo("");
    data.setPayee("\u4EFB\u76C8\u76C8");
    data.setBuyerAddress("");
    data.setSystemName("");
    data.setBuyerBankName("");
    data.setInvoiceType("0");
    data.setRedIssueReason("");
    data.setEmailCarbonCopy("");
    data.setDiscountType("");
    data.setBuyerAddressPhone("\u5317\u4EAC\u5E02\u6D77\u6DC0\u533A 010-83332891");
    Map<String, Object> ext = new HashMap<String, Object>();
    data.setExt(ext);
    data.setSystemId("");
    data.setBuyerTaxNo("91500000747150890S");
    data.setDeductibleAmount(BigDecimal.valueOf(0.0));
    data.setDrawer("\u5F20\u4E00\u8BFA");
    data.setInvoiceSpecialMark("00");
    data.setBuyerName("\u767E\u671B\u6D4B\u8BD540");
    data.setOriginalInvoiceNo("");
    data.setInvoiceListMark("0");
    data.setInvoiceTotalPriceTax(BigDecimal.valueOf(11.3));
    data.setSerialNo("T150000431379");
    data.setSellerBankNumber("");
    data.setBuyerPhone("");
    data.setInvoiceTotalPrice(BigDecimal.valueOf(10.0));
    data.setBuyerBankNumber("");
    data.setSellerBankAccount("");
    data.setUserAccount("");
    List<OutputInvoiceIssueInvoiceDetail> invoiceDetailsList = new ArrayList<OutputInvoiceIssueInvoiceDetail>();
    OutputInvoiceIssueInvoiceDetail outputInvoiceIssueInvoiceDetail = new OutputInvoiceIssueInvoiceDetail();
    outputInvoiceIssueInvoiceDetail.setGoodsTaxRate(BigDecimal.valueOf(0.13));
    outputInvoiceIssueInvoiceDetail.setInvoiceLineNature("0");
    outputInvoiceIssueInvoiceDetail.setGoodsTotalPrice(BigDecimal.valueOf(10.0));
    outputInvoiceIssueInvoiceDetail.setPreferentialMarkFlag("0");
    outputInvoiceIssueInvoiceDetail.setGoodsPersonalCode("");
    outputInvoiceIssueInvoiceDetail.setGoodsSpecification("");
    outputInvoiceIssueInvoiceDetail.setGoodsPrice(BigDecimal.valueOf(1.0));
    outputInvoiceIssueInvoiceDetail.setFreeTaxMark("");
    outputInvoiceIssueInvoiceDetail.setGoodsDiscountAmount(BigDecimal.valueOf(0.0));
    outputInvoiceIssueInvoiceDetail.setGoodsQuantity(BigDecimal.valueOf(10.0));
    outputInvoiceIssueInvoiceDetail.setGoodsUnit("");
    outputInvoiceIssueInvoiceDetail.setGoodsTotalTax(BigDecimal.valueOf(1.3));
    outputInvoiceIssueInvoiceDetail.setGoodsCode("1010101070000000000");
    outputInvoiceIssueInvoiceDetail.setGoodsName("\u71D5\u9EA6");
    outputInvoiceIssueInvoiceDetail.setGoodsLineNo(1);
    outputInvoiceIssueInvoiceDetail.setVatSpecialManagement("");
    invoiceDetailsList.add(outputInvoiceIssueInvoiceDetail);
    data.setInvoiceDetailsList(invoiceDetailsList);
    data.setInvoiceTypeCode("026");
    data.setSellerBankName("");
    data.setRemarks("");
    data.setOriginalInvoiceCode("");
    request.setData(data);
    request.setOrgCode("");
    request.setInvoiceTerminalCode("dzpzd008");
    request.setTaxNo("512345678900000040");
    request.setFormatPushType(false);
    request.setTaxDiskNo("");
    request.setFormatGenerate(false);

    IBWClient client = new BWRestClient(url, appKey, appSecret); // 初始化一个客户端
    OutputInvoiceIssueResponse response = client.outputInvoice().issue(request, token);
    // 重载方法,可以传自定义请求唯一标识
    // OutputInvoiceIssueResponse response = client.outputInvoice().issue(request, token, requestId);
    System.out.println(response);
} catch (BWOpenException e) {
    System.out.println(e.getCode());
    System.out.println(e.getMessage());
    System.out.println(e.getSubCode());
    System.out.println(e.getSubMessage());
}

七、响应示例

成功返回示例

{
	"method":"baiwang.output.invoice.issue",
	"success":true,
	"requestId":"7ac7f0fc-c403-4bcf-baf4-b25a94806e05",
	"response":{
		"fail":[
			{
				"invoiceTotalPrice":0,
				"invoiceTotalTax":0,
				"invoiceDetailsList":[
					{
						"priceTaxMark":"",
						"goodsTaxRate":0,
						"invoiceLineNature":"",
						"goodsTotalPrice":0,
						"goodsSpecification":"",
						"goodsPrice":0,
						"freeTaxMark":"",
						"goodsQuantity":"",
						"goodsUnit":"",
						"goodsTotalTax":0,
						"goodsCode":"",
						"preferentialMark":"",
						"goodsName":"",
						"goodsLineNo":"",
						"vatSpecialManagement":""
					}
				],
				"invoiceTotalPriceTax":0,
				"serialNo":""
			}
		],
		"success":[
			{
				"eInvoiceUrl":"",
				"invoiceTotalTax":0,
				"invoiceDate":"20190612110126",
				"invoiceCode":"015123456789",
				"invoiceTotalPriceTax":0,
				"serialNo":"",
				"taxControlCode":"037-+9<56<>-0570/<+583/*9920545/4887/996/*96*384*/<--*12>>400*7<0/28>873+*68296*74>3723>681167010<0706367>1<612-",
				"invoiceCheckCode":"08566901911295514678",
				"invoiceQrCode":"iVBORw0KGgoAAAANSUhEUgAAAJQAAACUCAIAAAD6XpeDAAADCUlEQVR42u3cy24CMQwF0Pn/n6bbbiqVsa+dgZMlAprkBI0fUa8rMF6/xl+vV97z7t/qmn9lLddTBjx48OB9Cd6rMCqT7oKsrHFyH7q+Hx48ePDg9eB1bXrXYioY6Tmkgyl48ODBg/cMvApAV3A0eSAmAzp48ODBg/eMgKUSXCSCncnkGh48ePDgnYXXNbl0AzYxTihKHNFVgAcPHrwPxpu8gPTNrx89IMGDB++D8V6Do2s+k+s9eW/hwYMHD979uaUTw66GajrhTRSdEwVrePDgwYP33p6ni8WnJfVdB7QrECt9Fh48ePDg3cabXPwJAdQkWGS98ODBgwevfb2J5DRxESi9rsQFrXhTFx48ePDgRRPbrWZs4kQnDlZbQxgePHjw4N3O87oewl2bsrYRg8X0tkIBPHjw4MFrx0ssLB2wJA5oIvEvFSXgwYMHD95Rhel0I3Tr8J1QTIAHDx48eP25XbqYm7jkc9pFpjZ4ePDgwYPXnrCnX09/duuyU2IO8ODBgwfvPl7X5BLJbCLoSBcZEgX0K32y4MGDB+8L8bowRpuNgeLAVuL/9nzgwYMHD15HPzLyz60Tm5UOXiqF+8SPAR48ePDgPSNgOblJmz7QiUY3PHjw4MG7j5cu1CYe/omAKF3IPu6iETx48ODBWw8o0k3gBHDX5ajIRsCDBw8evHaA9HcmAqutYKQECQ8ePHjwog3YtYfzUsG6st5EEfxfjVl48ODBg3f7WT4ZFFQamOn3JA5Wej7w4MGDB28uz0t/dvI9iYJ4248EHjx48ODdxmuLdgrJ71YCnihGxwNDePDgwYP3VjE6MRLY6abu5GEt7QM8ePDgweveh7YHb+Ihv3U4ug7KddqABw8evC/B6wpMuh7IicJ3ImBJFKZLzVh48ODBg9fSjE0kwluBQ6KRmw76/lWkhgcPHjx463iVzZoMrNIXpSIHGh48ePDgreMl3rO1QVuFAnjw4MGD94zC9GRwccKGds3niGYsPHjw4H0w3tYFpMngJZ2kJ34Yo6jw4MGD97l4PxCtu/dLsRmSAAAAAElFTkSuQmCC",
				"invoiceTotalPrice":3.0,
				"invoiceDetailsList":[
					{
						"goodsTaxRate":0,
						"goodsPrice":0,
						"goodsQuantity":0,
						"goodsUnit":"",
						"goodsTotalTax":0,
						"goodsCode":"",
						"goodsName":"",
						"goodsLineNo":0,
						"goodsTotalPrice":0
					}
				],
				"invoiceTypeCode":"007",
				"invoiceNo":"00900554"
			}
		]
	}
}

失败返回示例

{
	"success": false,
	"method": "baiwang.output.invoice.issue",
	"requestId": "6ede1a11-24b4-4ae9-bea7-783417004f62",
	"errorResponse": {
		"code": 100002,
		"message": "token不正确",
		"subCode": null,
		"subMessage": null
	}
}

0

评论区