文档
测试

审批开票

POST
[域名] /apiv2/api/invoice/invoiceinfo/beforeBilling

接口描述

推送订单到易票云,操作人员登录易票云进行审批开票

请求头

``` { "Accept": "application/json;charset=UTF-8", "Content-Type": "application/json;charset=UTF-8", "Authorization": "Bearer 51af08c2-85dd-41d9-85e9-05fa97b87fb8", "taxNo": "440300087980444", "machineNo": "0" } ```

请求参数

``` { "buyerAddr": "深圳市XX区,XX街道,XX号", "buyerBankName": "深圳建行ee", "buyerBankNum": "12345678912345678", "buyerEmail": "", "buyerMobile": "", "buyerName": "深圳XXX有限公司", "buyerProvince": "广东", "buyerTaxNo": "331021XXXX09085", "buyerTele": "0755-1234567", "buyerType": "01", "drawer": "张三", "majorItems": "辣条", "manualOrderDetails": [ { "amount": "10.00", "dataMark": 1, "invoiceNature": 0, "itemName": "零食", "itemNum": "1", "itemPrice": "10.00", "itemTaxCode": "1040112020000000000", "itemUnit": "份", "lslbs": "", "specMode": "小老板海苔", "tax": "0.3", "taxIncluded": "1", "taxRate": "0.03", "yhzcbs": "0", "zzstsgl": "" } ], "noTaxAmount": "string", "orderNo": "", "payee": "李四", "remarks": "首发商品", "reviewer": "王五", "sellerBankAcc": "深圳建行12345678912345678", "sellerAddressAndTel": "深圳航天信息 0755-95113", "taxTotal": "string", "totalAmountTax": "10.00", "kind": 51, "callbackUrl": "xxxx", "invoiceModality": 1, "listFlag": "0" } ```

请求报文字段说明

参数名
类型
描述
必填
buyerAddr
String
购方地址(若有值,购方地址+购方电话组合长度小于100)
可选
buyerBankName
String
购方开户行名称 若有值,购方开户行名称 + 购方开户行账号组合长度小于100
可选
buyerBankNum
String
购方开户行账号 若有值,购方开户行名称+购方开户行账号组合长度小于100
可选
buyerEmail
String
购方邮箱,多个邮箱以英文分号” ;”间隔,最多5个
可选
buyerMobile
String
购方手机号码,多个以英文分号” ;”间隔,最多5个
可选
buyerName
String
购方名称
必填
buyerProvince
String
购方省份
可选
buyerTaxNo
String
购方税号(购方类型是企业为必填)
可选
buyerTele
String
购方电话(若有值,购方地址+购方电话组合长度小于100)
可选
buyerType
String
购方类型: “01”:”企业”; “02”:”机关事业单位”; “03”:”个人”; “04”:”其他”
必填
drawer
String
开票人(易票云网页端>>销项设置>>接口开票设置如果没有设置开票人,则为必填)
可选
majorItems
String
主开商品
可选
manualOrderDetails
list
必填
amount
String
金额
必填
invoiceNature
Integer
0:正常 1:折扣行 2:被折扣行
必填
itemName
String
商品名[不要带星号]
必填
itemNum
String
商品数量(数量和单价可传其一)
可选
itemPrice
String
商品单价(数量和单价可传其一)
可选
itemTaxCode
String
税收分类编码,不足19位的自动在后面用0补齐
必填
itemUnit
String
计量单位
可选
specMode
String
商品型号
可选
tax
String
税额(税额 不传或者为空,则以易票云系统计算值为准)
可选
taxIncluded
String
含税标识(影响itemPrice、amount): 1>>含税 0>>不含税
必填
taxRate
String
税率>>固定值:0,0.01,0.015,0.03,0.04,0.05,0.06,0.09,0.10,0.11,0.13,0.16,0.17
必填
lslbs
String
零税率标识: 空:非零税率, 1:免税, 2:不征税, 3:普通零税率
可选
yhzcbs
String
是否享受优惠政策: 0:否, 1:是
必填
zzstsgl
String
享受优惠政策内容
可选
deduction
String
差额
可选
dataMark
Integer
被折扣行标识,存在折扣行时必填,当前details中唯一的行标识(Integer)
可选
discountLineDataMark
Integer
折扣行标识,存在折扣行时必填,填写值为被折扣行的dataMark
可选
noTaxAmount
String
总不含税金额,保留小数点后 2 位, 以 元 为单位精确到 分,若明细金额是含税的则非必填
可选
orderNo
String
订单号(单据号)系统间唯一标识
可选
payee
String
收款人
可选
remarks
String
备注: A、金税盘、税务Ukey、区块链长度不大于230个字符 B、税控盘 长度不大于160个字符
可选
reviewer
String
复核人
可选
sellerBankAcc
String
销方开户行及账号
可选
sellerAddressAndTel
String
销方地址、电话
可选
totalAmountTax
String
总价税合计,保留小数点后 2 位,以元为单位精确到分,不校验,易票云自动计算
必填
taxTotal
String
总税额,保留小数点后 2 位,以 元 为单位精确到 分,若明细金额是含税的则非必填
可选
kind
Integer
发票种类: 0:纸质专用发票, 2:纸质普通发票, 51:电子普通发票, 52:电子专用发票。 不填默认电子普通发票
可选
listFlag
String
清单标识: 0:根据开票系统规则决定是否生成清单, 1:必开清单, 2:不开具清单。 不填则默认为0
可选
printKind
String
打印标识: -1: 不打印 0:发票 1:清单。 不填则默认为 -1
可选
invoiceModality
Integer
开票方式: 0:同步开票, 1:异步开票。 不填默认为0
可选
callbackUrl
String
回调地址:开票方式为1时,必填
可选
dkflags
Integer
代开标识: 0:自开 1:代开 不填默认为0
可选
dkTaxNo
String
代开企业税号(dkflags 为 1 时必填)
可选
dkCompanyName
String
代开企业名称(dkflags 为 1 时必填) 代开企业税号和名称必须完全匹配
可选
dkDifferentPlaceFlag
Integer
异地标识: 0:非异地代开; 1:异地代开 dkflags 为 1 时必填
可选
dkComparisonFlag
Integer
代开比对标识[参与一窗式比对代开发票]: 0:不参与; 1:参与 dkflags 为 1 时必填
可选
linkType
Integer
发票二联或者五联(2:二联 5:五联),仅发票类型为增值税普通发票(“kind”:2,)时这个参数才有效,有多个联次时该参数必填。
可选

返回示例

**正确时返回:** ``` { "operateCode": "S", "message": "预开票成功", "datas": { "orderObjId": "5ffeb618cb51b700018d870d", "taxNo": "440300788329257", "orderNo": "5270623118771200", "serialNo": 5270623118787584, "pdfUrl": null, "ofdUrl": null, "qrcodeUrl": null, "invoiceDate": null, "invoiceCode": null, "invoiceNum": null, "listFlag": null, "invoiceDetailUrl": null }, "pageAndSort": null } ``` **错误时返回:** ``` 略 ```

响应参数

参数名
类型
描述
必填
orderObjId
String
订单id
必填
taxNo
String
税号
必填
oldOrderNo
String
旧订单编号: 未出现拆分开票则为null, 出现拆分开票时为拆分前传入的orderNo
必填
orderNo
String
订单编号: 未出现拆分开票则为传入的orderNo, 出现拆分开票时为易票云根据开票传入的orderNo生成的新的订单编号
必填
serialNo
Long
发票流水号
必填
pdfUrl
String
电子发票PDF下载地址, 注意事项:税务Ukey开票,该参数返回有可能会超时,建议使用异步开票,传参回调地址
必填
ofdUrl
String
发票ofd链接
必填
qrcodeUrl
String
开票成功后链接
必填
invoiceDate
Long
开票日期
必填
invoiceCode
String
发票代码
必填
invoiceNum
String
发票号码
必填
machineNo
String
分机号
必填
listFlag
String
纸质发票的清单标识(0-否,1是),电子发票则为null
必填
invoiceDetailUrl
String
发票详情地址链接
必填
blueInvoiceCode
String
蓝票发票代码: 非红冲时为null, 发票红冲且异步开票时返回蓝票的发票代码
必填
blueInvoiceNum
String
蓝票发票号码: 非红冲时为null, 发票红冲且异步开票时返回蓝票的发票号码
必填
sourceInvoice
Object
被重开蓝票的信息: 非重开发票时为null, 发票重开且异步开票时返回原蓝票的信息
必填
serialNo
Long
被重开蓝票的流水号
必填
invoiceCode
String
被重开蓝票的发票代码
必填
invoiceNum
String
被重开蓝票的发票号码
必填
orderNo
String
被重开蓝票的订单编号
必填

调用示例

**JAVA** ``` String url = "[域名]/apiv2/api/invoice/invoiceinfo/beforeBilling"; HttpClient httpClient = null; HttpPost httpPost = null; String result = null; try{ httpClient = new SSLClient(); httpPost = new HttpPost(url); httpPost.addHeader("Content-Type", "application/json;charset=UTF-8"); httpPost.addHeader("Accept", "application/json;charset=UTF-8"); httpPost.addHeader("Authorization", "Bearer 742be768-b3ea-4f86-b441-a1670f5574d0"); httpPost.addHeader("machineNo", "0"); httpPost.addHeader("taxNo", "440300087980444"); StringEntity se = new StringEntity("{ "buyerAddr": "深圳市XX区,XX街道,XX号", "buyerBankName": "深圳建行ee", "buyerBankNum": "12345678912345678", "buyerEmail": "", "buyerMobile": "", "buyerName": "深圳XXX有限公司", "buyerProvince": "广东", "buyerTaxNo": "331021XXXX09085", "buyerTele": "0755-1234567", "buyerType": "01", "drawer": "张三", "machineNo": "0", "majorItems": "辣条", "callbackUrl": "http://192.168.52.57:5000/mock/api/callback", "invoiceModality": 1, "manualOrderDetails": [ { "amount": "10.00", "dataMark": 1, "invoiceNature": 0, "itemName": "零食", "itemNum": "1", "itemPrice": "10.00", "itemTaxCode": "1040112020000000000", "itemUnit": "份", "lslbs": "", "specMode": "小老板海苔", "tax": "0.3", "taxIncluded": "1", "taxRate": "0.03", "yhzcbs": "0", "zzstsgl": "" } ], "noTaxAmount": "string", "orderNo": "123456789003", "payee": "李四", "remarks": "首发商品", "reviewer": "王五", "sellerBankAcc": "深圳建行12345678912345678", "sellerAddressAndTel": "深圳航天信息 0755-95113", "taxTotal": "string", "totalAmountTax": "10.00", "kind": 51, "listFlag": "0" }"); se.setContentEncoding(new BasicHeader("Content-Type", "json")); httpPost.setEntity(se); HttpResponse response = httpClient.execute(httpPost); if(response != null){ HttpEntity resEntity = response.getEntity(); if(resEntity != null){ result = EntityUtils.toString(resEntity,"UTF-8"); } } }catch(Exception ex){ ex.printStackTrace(); }finally { ((SSLClient) httpClient).close(); } System.out.println(result); ``` **C#** ``` string url = "[域名]/apiv2/api/invoice/invoiceinfo/beforeBilling"; string data = "{\"buyerAddr\":\"深圳市XX区,XX街道,XX号\",\"buyerBankName\":\"深圳建行ee\",\"buyerBankNum\":\"12345678912345678\",\"buyerEmail\":\"\",\"buyerMobile\":\"\",\"buyerName\":\"深圳XXX有限公司\",\"buyerProvince\":\"广东\",\"buyerTaxNo\":\"331021XXXX09085\",\"buyerTele\":\"0755-1234567\",\"buyerType\":\"01\",\"drawer\":\"张三\",\"majorItems\":\"辣条\",\"manualOrderDetails\":[{\"amount\":\"10.00\",\"dataMark\":1,\"invoiceNature\":0,\"itemName\":\"零食\",\"itemNum\":\"1\",\"itemPrice\":\"10.00\",\"itemTaxCode\":\"1040112020000000000\",\"itemUnit\":\"份\",\"lslbs\":\"\",\"specMode\":\"小老板海苔\",\"tax\":\"0.3\",\"taxIncluded\":\"1\",\"taxRate\":\"0.03\",\"yhzcbs\":\"0\",\"zzstsgl\":\"\"}],\"noTaxAmount\":\"string\",\"orderNo\":\"\",\"payee\":\"李四\",\"remarks\":\"首发商品\",\"reviewer\":\"王五\",\"sellerBankAcc\":\"深圳建行12345678912345678\",\"sellerAddressAndTel\":\"深圳航天信息 0755-95113\",\"taxTotal\":\"string\",\"totalAmountTax\":\"10.00\",\"kind\":51,\"callbackUrl\":\"xxxx\",\"invoiceModality\":1,\"listFlag\":\"0\"}"; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.PreAuthenticate = true; request.SendChunked = false; request.Timeout = 6000; request.Method = "POST"; byte[] bytes = Encoding.UTF8.GetBytes(data); request.ContentType = "application/json;charset=UTF-8"; request.ContentLength = bytes.Length; request.Headers.Add("Accept", "application/json;charset=UTF-8"); request.Headers.Add("Authorization", "bearer 3f3b6421-3730-41fb-bb4d-a959b81180b7"); request.Headers.Add("taxNo", "440300087980444"); request.Headers.Add("machineNo", "0"); Stream myResponseStream = request.GetRequestStream(); myResponseStream.Write(bytes, 0, bytes.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader myStreamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); string body = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } Console.WriteLine(body); ``` **GO** ``` url := "[域名]/apiv2/api/invoice/invoiceinfo/beforeBilling" payload := strings.NewReader("{\"buyerAddr\":\"深圳市XX区,XX街道,XX号\",\"buyerBankName\":\"深圳建行ee\",\"buyerBankNum\":\"12345678912345678\",\"buyerEmail\":\"\",\"buyerMobile\":\"\",\"buyerName\":\"深圳XXX有限公司\",\"buyerProvince\":\"广东\",\"buyerTaxNo\":\"331021XXXX09085\",\"buyerTele\":\"0755-1234567\",\"buyerType\":\"01\",\"drawer\":\"张三\",\"majorItems\":\"辣条\",\"manualOrderDetails\":[{\"amount\":\"10.00\",\"dataMark\":1,\"invoiceNature\":0,\"itemName\":\"零食\",\"itemNum\":\"1\",\"itemPrice\":\"10.00\",\"itemTaxCode\":\"1040112020000000000\",\"itemUnit\":\"份\",\"lslbs\":\"\",\"specMode\":\"小老板海苔\",\"tax\":\"0.3\",\"taxIncluded\":\"1\",\"taxRate\":\"0.03\",\"yhzcbs\":\"0\",\"zzstsgl\":\"\"}],\"noTaxAmount\":\"string\",\"orderNo\":\"\",\"payee\":\"李四\",\"remarks\":\"首发商品\",\"reviewer\":\"王五\",\"sellerBankAcc\":\"深圳建行12345678912345678\",\"sellerAddressAndTel\":\"深圳航天信息 0755-95113\",\"taxTotal\":\"string\",\"totalAmountTax\":\"10.00\",\"kind\":51,\"callbackUrl\":\"xxxx\",\"invoiceModality\":1,\"listFlag\":\"0\"}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Content-Type", "application/json;charset=UTF-8") req.Header.Add("Accept", "application/json;charset=UTF-8") req.Header.Add("Authorization", "bearer 3f3b6421-3730-41fb-bb4d-a959b81180b7") req.Header.Add("taxNo", "440300087980444") req.Header.Add("machineNo", "0") response, err := http.DefaultClient.Do(req) if err!=nil{ panic(err) } defer response.Body.Close() body, _ := ioutil.ReadAll(response.Body) fmt.Println(string(body)) ```