第三章 模块接口(2) - 开票接口

## 3. 申请开票 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akApplyInvoice #### 请求方式:POST #### 注意: >d 1.在调用开票申请接口前,需要调用 [2. 个体户状态查询接口](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/g0ttyB85)查询 返回的taxStatus - 税务状态的状态变更为“已实名”,只有变更后,才能提交该个体户的开票申请;仅限新注册的个体户。 >2. 如果是老的个体户只需调用一次,保存在本地,后续可以不需要再去查询该个体户的税务状态信息。 #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |idCard|个体户身份证|String|是|| |mainstayId|个体户注册地|String|是|该参数值由[8.查询所拥有的主体发票行业接口](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/R9i1ih8S) 获得| |bankNameAccount|个体户开户行及账户信息|String|否|例:中国工商银行杭州富春支行 330501164xxxxxxx| |invoiceAmount|开票金额|String|是|精确到分 例如:"10.01"代表 十元零一分| |invoiceCode|开票内容编码|String|是|该参数值由[8.查询所拥有的主体发票行业接口](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/R9i1ih8S) 获得| |taxPointConf|税点|String|是|税点 0:代表税率为3% 1:代表税率为1% | |invoiceType|发票类型|String|是|0代表增值税普通发票 1代表增值税专用发票| |remarks|开票备注|String|否|| |purchaserInvoiceTitle|购买方发票抬头|String|是|例:xxxx有限公司| |purchaserTaxNumber|购买方税号|String|是|例:91330100FS234(纳税人识别号)| |purchaserAddressPhone|购买方地址、电话|String|是|例:浙江省杭州市滨江区网商路xx号 130xxxx3381| |purchaserBankAccount|购买方开户行及账号|String|是|例:中国工商银行杭州富春支行 330501164xxxxxxx| |addressee|收件人|String|是|例:张三| |phone|收件人电话|String|是|例:130xxxx3381| |area|收件人所在地区|String|是|例:浙江省杭州市滨江区| |detailAddress|收件人详细地址|String|是|网商路xx号 | |email|收件人邮箱地址|String|是|130xxxxx@163.com| #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| |paymentAmount|应付总金额|BigDecimal|是|含增值税、附加税、个税、服务费 精确到分 例如:"10.01"代表 十元零一分| |personIncomeTaxAmount|个税|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |additionalTaxAmount|附加税|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |serviceAmount|服务费|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |valueAddedTaxAmount|增值税|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |totalIncomeTaxAmount|个体户已缴纳个税|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |totalTaxableAmount|应纳个税金额|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |totalInvoiceAmount|已开票总金额|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |status|开票状态|Integer|是|[2.开票状态码对照表](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/g0ttyB85)| |failReason|失败原因|String|是|该参数内容可能为空,成功的时候失败原因为空字符串| ### 字段解释: (1)个体户已缴纳个税:指的是用户的个税选择的是累进制,记录用户之前已缴纳的个税金额。 (2)应纳个税金额:指的是本次开票金额里的应缴纳的个税金额。 (3)已开票总金额:指的是记录个体户之前已开发票的总金额,由于个体户开票年度总金额的限制的原因;开票年度计算方式,个体户连续12月开票金额不得超过495W,例如:在2021年2月注册个体户,2月份没有开票,3月份开票10W,从2021年3月份往回倒推12个月的开票金额不得超过495W,4月份依次类推。 ## 4.上传证据链接口 >d 注意:证据链 链接字段(urls)英文逗号分割,最多三个,如果文件和链接同时传,优先使用文件,两种方式(传证据链文件、传证据链 链接)至少传一种 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/evidenceFileUpload #### 请求方式:POST form-data方式 #### 请求参数说明: |参数名称|数据类型|参数含义|是否必填|参数备注| |-|-|-|-|-| |files|MultipartFile数组|上传的文件|否|支持批量上传| |data|String|该参数为发票订单号,上传文件类型json加密后的值|是|说明示例如下 | >d data参数示例说明如下 ```java String paramsJson = "{'invoiceBillNo':'订单号','type':'1','urls':'https://xxxx/xxxx.pdf,https://xxxx/xxxx.png'}" /*invoiceBillNo 为订单号*/ /*type为文件类型 1:业务合同文件 2:银行流水文件 3:自定义模板*/ /*urls上传证据文件链接,英文逗号分割*/ /*该处进行rsa加密*/ String data= RSAHelper.encryptByPublicKey(paramsJson, publicKey); ``` #### 响应参数解密后data字段说明: |参数名称| 数据类型|参数含义| 是否必有| 参数备注| |-|-|-|-|-| |invoiceBillNo|String|发票单号|是|| |status|Integer|发票状态|是|| |businessContractFinish|boolean|业务合同是否上传完成|是|| |bankStatementFinish|boolean|银行流水文件是否上传完成|是|| |mark|String|备注说明|是|| java接口代码示例: ```java @PostMapping(value = "/batchUpload") @ResponseBody @NoPermission public String upload(MultipartFile[] files) { String appKey = "贵司appke"; String version = "1.0"; String secretkey = "贵司secretkey "; String publicKey = "贵司公钥"; /* 记得换baseUrl*/ String url = "http://127.0.0.1:8081/open/api/v1/ak/evidenceFileUpload"; try { /** * invoiceBillNo 发票订单号 * type 文件类别 1:业务合同文件 2:银行流水文件 3:自定义模板 */ String paramJson = "{\"invoiceBillNo\":\"需要上传证据链的订单号\",\"type\":1,\"urls\":\"https://xxxx/xxxx.pdf,https://xxxx/xxxx.png\"}"; String data = ""; try { /*参数加密*/ data = RSAHelper.encryptByPublicKey(paramJson, publicKey); } catch (Exception e) { e.printStackTrace(); } String timestamp = String.valueOf(System.currentTimeMillis()); /*签名*/ String localString = data +"&Timestamp=" + timestamp + "&AppKey=" + appKey + "&Version=" + version + "&SecretKey" + secretkey; String sigin = Md5Util.getMd5(localString); MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM); for (int i=0;i< files.length;i++) { byte[] bytes = files[i].getBytes(); okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(MediaType.parse("application/octet-stream"), bytes); builder.addFormDataPart("files",files[i].getName(),requestBody); } /*切记将 data 填充*/ builder.addFormDataPart("data",data); Request request = new Request.Builder() .post(builder.build()) .addHeader("AppKey", appKey) .addHeader("Timestamp", timestamp) .addHeader("Version", "1.0") .addHeader("Sign", sigin) .url(url) .build(); Call call = HttpUtil.getOkHttpClient().newCall(request); try { Response response = call.execute(); String res = response.body().string(); log.info("res====" +res); return res; } catch (IOException e) { log.error("HttpUtil.post网络请求失败:{}", e.getMessage()); return "网络请求失败"; } catch (Exception e) { e.printStackTrace(); } } catch (IOException e) { log.warn("fail to read file", e); } return null; } ``` >d postman 直接请求示例: ![1.png](https://cos.easydoc.net/44383407/files/kco5rwrk.png)![2.png](https://cos.easydoc.net/44383407/files/kco5rxco.png) ## 5. 开票费用支付 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akInvoicePay #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| |status|开票状态|Integer|是|[2.开票状态码对照表](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/g0ttyB85)| |failReason|失败原因|String|是|该参数内容可能为空,成功的时候失败原因为空字符串| ## 6. 开票结果查询 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akInvoiceResultQuery #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| #### 响应参数说明: |参数名称| 参数含义| 数据类型| 是否必有| 参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| |invoiceStatus|开票状态|Integer|是|[2.开票状态码对照表](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/g0ttyB85)| |invoiceMainstayId|注册地|Integer|是|| |invoiceType|开票类型|Integer|是|0代表增值税普通发票 1代表增值税专用发票| |invoiceAmount|开票金额|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| |invoiceContent|开票内容|String|是|| |invoiceRemark|开票备注|String|否|| |purchaserInvoiceTitle|购买方发票抬头|String|是|例:xxxx有限公司| |purchaserTaxNumber|购买方纳税人识别号|String|是|例:91330100FS234(纳税人识别号)| |purchaserPhoneAddress|购买方个体户手机号、注册地|String|是|例:浙江省杭州市滨江区网商路xx号 130xxxx3381| |purchaserBankNameAccount|购买方开户行及账户信息|String|是|例:中国工商银行杭州富春支行 330501164xxxxxxx| |addressee|收件人|String|是|例:张三| |consignerMobile|收件人电话|String|是|例:130xxxx3381| |area|收件人所在地区|String|是|例:浙江省杭州市滨江区| |detailAddress|收件人详细地址|String|是|网商路xx号| |email|收件人邮箱地址|String|否|130xxxxx@163.com| |sellerInvoiceTitle|销售方发票抬头 |String|是|例:xxxx有限公司| |sellerTaxNumber|销售方纳税人识别号|String|是|例:91330100FS234(纳税人识别号)| |sellerPhoneAddress|销售方个体户手机号、注册地|String|是|例:浙江省杭州市滨江区网商路xx号 130xxxx3381| |sellerBankNameAccount|销售方开户行及账户信息|String|是|例:中国工商银行杭州富春支行 330501164xxxxxxx| |bankFlowProve|银行流水证明|String|是|例:xx.jpg,yy.pdf,zz.png | |businessContract|业务合同|String|是|例:xx.jpg,yy.pdf,zz.png | |otherProve|其他证明材料|String|是|例:xx.jpg,yy.pdf,zz.png| |expressCompany|快递公司|String|是|例:顺丰速运有线公司| |expressNo|快递单号|String|是|例:9899361402666| |refuseReason|开票失败原因|String|是|当开票失败时,此值不为空| |postStatus|邮寄状态|String|是|0:未邮寄 1.已邮寄| ## 7. 余额查询 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akBalanceQuery #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |balance|账户余额|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| ## 8. 查询企业行业、开票内容 >d 通过该接口可获取公司的可开发票列表,以及所拥有主体列表,无需频繁请求。请求到之后保存自己库即可。当签署主体信息有变更。或者发票内容有调整重新请求接口即可。 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/queryInvoices #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|是否必填|参数备注| |-|-|-|-| |无参数|||该接口无需参数| #### 响应参数说明: |参数名称| 参数含义|数据类型| 是否必有| 参数备注| |-|-|-|-|-| |name| 主体名称| String|是|主体名称| |mainstayId| 主体ID|int| 是|主体ID| |invoiceOpResponseList| 发票列表| 是|发票列表为List数组| |industryCode| 行业编码|String| 是|invoiceOpResponseList里面属性| |industryName| 行业名称|String| 是|invoiceOpResponseList里面属性| |invoiceCode| 发票编码|String| 是|invoiceOpResponseList里面属性| |invoiceContent| 发票名称|String| 是|invoiceOpResponseList里面属性| 解密结果示例如下: ```json [ { "invoiceOpResponseList":[ { "industryCode":"KJHY_01", //行业编码 "industryName":"科技行业", //行业名称 "invoiceCode":"XXJSFWJSFWF", //发票编码 "invoiceContent":"信息技术服务*技术服务费" //发票名称 }, { "industryCode":"YXTG_01", "industryName":"营销推广", "invoiceCode":"XDFWYXFWF", "invoiceContent":"现代服务*营销服务费" } ], "mainstayId":1, //主体ID "name":"xxx" //主体名称 } ] ``` ## 9.个体户状态回调接口 >d 该接口需要第三方自行编写提供接口到发放平台 接口编写示例如下。 #### 请求方式:POST ```java @PostMapping("employedCallBack") @ResponseBody public String signCallBack(HttpServletRequest request, @RequestBody String data){ String publicKey = "该公钥由发放平台提供发放到贵司邮箱"; //解密 String decode = RSAHelper.decryptByPublicKey(data, publicKey); /*贵公司处理业务逻辑*/ return "success"; } ``` 解密工具类在 [JAVA_DEMO](https://gitee.com/xinfudblog/lxapi_java_demo) 的 RSAHelper 类中 >d > 1.贵司写完后提供到接口url给发放平台即可。回调成功必须返回success,不然会重复回调,至多重试8次。 > 2.每次回调的间隔时间2N次方分钟,比如第一次回调间隔时间为2分钟,第二次就为4分钟,依次往后推,最多重试8次; postman中模拟接口是否正常接收数据如下操作 ![微信截图_20191111122018.png](https://cos.easydoc.net/44383407/files/k2tx5nl4.png) #### 传给回调接口参数data 解密结果json说明: 解密结果示例如下: ```json {"companyName":"bobo","companySocialCreditCode":"","idCard":"360111199504000000","license":"","mobile":"17366629999","name":"xxx","status":0}; ``` |参数名称| 参数含义|数据类型| 是否必有| 参数备注| |-|-|-|-|-| |name| 个体户姓名|String| 是|| |status| 个体户状态|Integer|是|[1.个体户状态码对照表](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/g0ttyB85)| |taxStatus|税务状态|Integer|是|0:未实名,1:已实名。当该状态变为“已实名”后才可以进行开票申请操作|| |idCard| 个体户身份证|String| 是|| |mainstayName| 注册地|String| 是|| |companyName| 公司名|String| 是|| |companySocialCreditCode| 纳税人识别号|String| 是|例:91330100FS234(纳税人识别号)| |mobile| 手机号|String| 是|| |license| 营业执照|String| 是|| |failReason| 拒绝原因|String| 是|| |url| 实名采集链接地址|String| 是|| ## 10. 开票列表信息查询 >d 通过该接口可获取公司的开票列表信息 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/queryInvoicesList #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |startDate|开始时间|String| 是|示例:"startDate":"2020-05-04 14:56:07"| |endDate|结束时间|String| 是|示例:"endDate":"2020-09-05 14:56:07"| |pageSize|页大小|Integer| 否|默认10 示例:"pageSize":10| |pageNo|页数|Integer| 否|默认1 示例:"pageNo":1| 请求参数示例如下: ```json {"endDate":"2020-09-05 14:56:07","pageNo":1,"pageSize":1,"startDate":"2020-05-04 14:56:07"} ``` #### 注意事项 >d 如果入参pageNo的参数大于真实数据条数,返回的信息只有页数、总页数、页大小、总条数、命中计数;例如用户的真实数据是100条、按页数只有10页,用户传入的是页数是11超过了10页,就只能返回真实数据明细:页数:1页、总页数:10页、页大小:10条、总条数:100条、命中计数:100条; #### 响应参数说明: >d 注意:该接口中响应字段records中包含返回的开票列表信息 |参数名称| 参数含义|数据类型| 是否必有| 参数备注| |-|-|-|-|-| |current|页数|Integer|是|示例:"current":1| |pages|总页数|Integer|是|示例:"pages":20| |size|页大小|Integer|是|示例:"size":10| |total|总条数|Integer|是|示例:"total":20| |hitCount|命中计数|boolean|是|该参数可忽略 示例:"hitCount":false| |orders|~|list|是|该参数可忽略 示例:"orders":[]| |searchCount|~|boolean|是|该参数可忽略 示例:"searchCount":true| |records|开票数据列表内容|list|是|下面字段数据皆属于该字段内容 示例:"records":[{...}{...}]| |invoiceBillNo|开票订单号|String|是|示例:"invoiceBillNo":"2020091720135423517696"| |invoiceStatus|开票状态|Integer|是|[2.开票状态码对照表](https://easydoc.xyz/doc/61859569/g2Oi7Qz8/g0ttyB85)| |invoiceMainstayId|注册地|Integer|是|示例:"invoiceMainstayId":1| |invoiceType|开票类型|Integer|是|0代表增值税普通发票 1代表增值税专用发票 示例:"invoiceType":1| |invoiceAmount|开票金额|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分 示例:"invoiceAmount":10.01| |invoiceContent|开票内容|String|是|示例:"invoiceContent":"信息技术服务*技术服务费"| |invoiceRemark|开票备注|String|否|示例:"invoiceRemark":"xxx"| |purchaserInvoiceTitle|购买方发票抬头|String|是|例:xxxx有限公司 示例:"purchaserInvoiceTitle":"xxxx有限公司"| |purchaserTaxNumber|购买方纳税人识别号|String|是|例:91330100FS234(纳税人识别号)示例:"purchaserTaxNumber":"91330100FS234"| |purchaserPhoneAddress|购买方个体户手机号、注册地|String|是|示例:"purchaserPhoneAddress":"浙江省杭州市滨江区网商路xx号 130xxxx3381"| |purchaserBankNameAccount|购买方开户行及账户信息|String|是| 示例:"purchaserBankNameAccount":"中国工商银行杭州富春支行 330501164xxxxxxx"| |addressee|收件人|String|是|示例:"addressee":"张三"| |consignerMobile|收件人电话|String|是|示例:"consignerMobile":"130xxxx3381"| |area|收件人所在地区|String|是|示例:"area":"浙江省杭州市滨江区"| |detailAddress|收件人详细地址|String|是|示例:"detailAddress":"浙江省绍兴市XX区XX街道XX小区XX单元XX楼"| |email|收件人邮箱地址|String|否|示例:"email":"130xxxxx@163.com"| |sellerInvoiceTitle|销售方发票抬头|String| 是|示例:"sellerInvoiceTitle":"xx"| |sellerTaxNumber|销售方税号|String| 是|示例:"sellerTaxNumber":"4104221993XXXX1278"| |sellerPhoneAddress|销售方地址、电话|String| 是|示例:"sellerPhoneAddress":"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"| |sellerBankNameAccount|销售方开户行及账号|String| 是|示例:"sellerBankNameAccount":"xx银行xx分行xx部 15000xx8626431"| |bankFlowProve|银行流水证明|String|是|示例:"bankFlowProve":"xx.jpg,yy.pdf,zz.png"| |businessContract|业务合同|String|是|示例:"businessContract":"xx.jpg,yy.pdf,zz.png"| |otherProve|其他证明材料|String|是|示例:"otherProve":"xx.jpg,yy.pdf,zz.png"| |expressCompany|快递公司|String|是|示例:"expressCompany":"顺丰速运有线公司"| |expressNo|快递单号|String|是|示例:"expressNo":"9899361402666"| |refuseReason|开票失败原因|String|是|示例:"refuseReason":"xxx"| |postStatus|邮寄状态|String|是|0:未邮寄 1.已邮寄 示例:"postStatus":"0"| 响应参数示例如下: ```json {"current":1,"hitCount":false,"orders":[],"pages":25,"records":[{"addressee":"十多个","area":"北京北京西城区","detailAddress":"好地方","email":"qpzm69xx118@126.com","expressCompany":"","expressNo":"","invoiceAmount":10.000,"invoiceBillNo":"20200615112720xx927104","invoiceContent":"信息技术服务*技术服务费","invoiceStatus":0,"invoiceStatusDesc":"待审核","phone":"1440099xx02","purchaserAddressPhone":"","purchaserBankAccount":"","purchaserInvoiceTitle":"吴xx","purchaserTaxNumber":"","refuseReason":"","remark":""}],"searchCount":true,"size":1,"total":25} ``` ## 11. 服务费开票申请 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址: /open/api/v1/ak/preCreateServiceInvoice #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |mainstayId|主体id|int|是|| |invoiceClassification|开票类型|int|是|0.增值税普通发票 1.增值税专用发票| |remark|开票备注|int|否|备注| |addressee|收件人|String|是|快递收件人| |phone|联系电话|String|是|| |area|所在地区|String|是|例如:浙江省杭州市拱墅区| |detailAddress|详细地址|String|是|例如:祥符街道大悦城A座1601室| |email|电子邮箱|String|否|例如:130xxx@163.com| #### 接口响应参数data字段解密后的参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| |invoiceAmount|开票金额|String|是|开票金额| |invoiceContent|开票内容|String|是|| |sellerInvoiceTitle|销售方发票抬头|String|是|| |sellerTaxNumber|销售方税号|String|是|| |sellerAddressPhone|销售方地址、电话|String|是|| |sellerBankAccount|销售方开户行及账号|String|是|| |purchaserInvoiceTitle|购买方发票抬头|String|是|| |purchaserTaxNumber|购买方税号|String|是|| |purchaserAddressPhone|购买方地址、电话|String|是|| |purchaserBankAccount|购买方开户行及账号|String|是|| ```json # 响应参数示例如下。只有当 success等于true的时候才会有data里面的值 { "resopnseType":0, "errorCode":"", "errorMessage":"", "status":0, "data":"FD5ximjnUYLHMCmkpmrFucBqxSatZHw/vL0g94Ir0kbj3ll1If7L1K9EubwPmPDhEB/ZIzTOCrTDEShz/6q3oxZBoZTBOI3CHH3AzSv+i2aLEJGVFwhKUjCkN0BPday4wpQLBbcYrOLUE5Dx/uAAcYMFEbhbosUoIDpd7ozq6tB4hPACuloszugdt2BEzjRk7F8fQdny1thwWE0aZSdV6/Zx0lwdrGYX4KrJ9pMZm9k2LqzdUIycS/ewke5fX/XJkzjF59MxLcU+qeWGrk2EtguGPCEwIbHWtZdvMrq/Slgeouziy/pyIjktGPQB51O2cj59humLjFdCUNf3JV/SVkINjyOQQs1KheksYEWpbkK7qSShbpXnotTyV6jC+n8HTx4ac6DQcsX84Hj2yDRjtJKzenZxyVx2Zv5f4qtUbZhAhX0h4VwKrMoPOSfPFI5Cv4Re2LweNnoHME21J3cWKdy/oxUUJet/GrL6vtNg66QYSuquOrzGOqAt2AYORn9fe3/jzkXfO6g5ogHtTCjZp3uVuzW0rUCgB8a42LnCjA/E2pB0ZihNcx4iquvg5beiqYgexvXk2EsoR6Lywhjp1QFVbalLQWr52EsEAy9Z56p5Em4O3BiaAhnp7/S1WMCpMH261eF1C/vuXtd1QDKr1onEShb55ft0PNxypS3J1GpximWZH47ijZ+KMHY9zLPL867Pd4+0SCq/l9/DYo4Hw25BwwkyJDUU1P6E9iAo7ymdNnrvTjSD108PLhSq0U6LihK2sh7kDc/AE0f5IO6J1tHHCqIEnJbAgr6NkqcbNXLdPIebqmIrOvw5XOdo62cV1feRCvMTGw/CxwX7/0eEByNp7ARwiM8FlEyZX+3tr9FNxsFPSeFsx3jsFepgEbHwoCIBnw3wUnrJc2Z+x5nQNK09zZ7qnK0MoDtQCEzUIRo=", "ext":null, "extMessage":null, "success":true } data解密后的内容: { "invoiceAmount":10058.35, "invoiceBillNo":"2020091817143583891968", "invoiceContent":"信息技术服务*技术服务费", "purchaserAddressPhone":"134567895585", "purchaserBankAccount":"啊啊啊啊啊", "purchaserInvoiceTitle":"", "purchaserTaxNumber":"010203050408", "sellerAddressPhone":"浙江省杭州市拱墅区隐秀路1号杭悦商业中心A座1604室 13777488831", "sellerBankAccount":"1202021209900411273 工商银行杭州武林支行营业室", "sellerInvoiceTitle":"浙江河马管家网络科技有限公司", "sellerTaxNumber":"91330105MA2H1GKA4T" } ``` ## 12. 服务费开票确认接口 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址: /open/api/v1/ak/createServiceInvoice #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |mainstayId|主体id|int|是|| |invoiceBillNo|开票订单号|String|是|预下单返回的开票订单号| #### 接口响应参数data字段解密后的参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|预下单订单号和开票订单一致| |invoiceAmount|开票金额|String|是|开票金额| |invoiceStatus|开票状态|int|是|0:待审核 1:待开票 2:已开票 3:已拒绝| ```json # 响应参数示例如下。只有当 success等于true的时候才会有data里面的值 {"resopnseType":0,"errorCode":"","errorMessage":"","status":0,"data":"lgKtpBOg8if9i9higcGTJbr36Q6EekvNYJOX2ObEd2zIr6hqC1f3LcyLRk18w3GvvHSxJJLMy2291SEvIGv4jJEsb6ttWH0NxcG1ogbeztuCkLdnKx4qeM2yPSJ6yXxpqwrLsYvIWWSAKlPCzF3AqULJGXWdhMB1op79lrN6CqYFOpsXKbjqD0A8epuoT4iqPqIKYI6CLo+dFlKkssnSyRrglUQrTQvtNz0y0j61Q2gFxADovRIoU6VlQqnGozFk","ext":null,"extMessage":null,"success":true} data解密后的内容: {"invoiceAmount":10008.00,"invoiceBillNo":"2020091817143583891968","invoiceStatus":0} ``` ## 13. 服务费开票查询接口 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址: /open/api/v1/ak/queryServiceInvoicesStatus #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|预下单返回的开票订单号| #### 接口响应参数data字段解密后的参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|预下单订单号和开票订单一致| |invoiceAmount|开票金额|String|是|开票金额| |invoiceStatus|开票状态|int|是|0:待审核 1:待开票 2:已开票 3:已拒绝| |invoiceContent|开票内容|String|是|| |remark|开票备注|String|是|| |purchaserInvoiceTitle|购买方发票抬头|String|是|| |purchaserTaxNumber|购买方税号|String|是|| |purchaserAddressPhone|购买方地址、电话|String|是|| |purchaserBankAccount|购买方开户行及账号|String|是|| |addressee|收件人|String|是|| |phone|联系电话|String|是|| |area|所在地区(省市县\区)|String|是|| |detailAddress|详细地址|String|是|| |email|电子邮箱|String|是|| |expressCompany|快递公司|String|是|| |expressNo|快递单号|String|是|| |refuseReason|拒绝原因|String|否|当invoiceStatus = 3 时,拒绝原因肯定不为空| #### 示例: ```json # 响应参数示例如下。只有当 success等于true的时候才会有data里面的值 {"resopnseType":0,"errorCode":"","errorMessage":"","status":0,"data":"sftRYvZ1t99njOlyefTRQUCPNIHaG0+EnJIxF9qAwKHmf3PYnm6EX6WBma24Yjo6/7Q26RqekgLRzsrkBtfbUGBkZEKTlftWBTQQSUvZEM5zMcDFsV2MY9NeSmj9tujEUuUyIvbtgL5LVeePe0diuBh0Qg44EmvXhvud0P+afEkmCa1Fw1CWQT448A/hivpCX37bV8/i01Fkm1XGeOvmYwi1bOWOQhyyZtk8cmL5sCM/KMZQt6CslZS854M4RLJup4JWKtNHqmM4IAE3VdHubfCN7O4iSun2JgG8Gdn48vCYzhLsZBqFWM1v++HZIVEiTjPRzdxIUPPKgX59a4bcg5GefkL/FGrs0Qs1ojptK4XRk1WPVyI+6PO/7KLwAeLP4gmNHmRnTqBqeptt0/LGUJIJ3gaHMOKIR7wQbOSHWgCDsEpf+5V1gTt/SI2v6w4ud+/7HenDxGhHuqKNG5JK2IHYIhDsUp9MX4my/twqUuvXGoC7FT8LA25Vmj7DlIbpZ5YH3hINRRmQtGH7FfuHHq01l2pW6RuZWLdDeQPXtp/bF1Q9Aj8q22sxYwB+nsukGMa5huUtJsmu47OR2s5+2EzmPFZ432cybZVhRGEJfi4zINNG1YSI9rt4OwD6/0/g0FmQspUTok2mWEkNyJ3STeJ+I66QaRcMyE4qQtbclsuaIEiQXMiDRJO0Yv2VgeMjH8/GCR7a6jTwAppPORNUfCHuQwqVj5LAU9HKSF0kSvQjCukm2D+V6lQiizCdXh5VHlYyaFJTaLmiNc7D5l+PKuJTRVZ7FVeLcycPxN8+D+uS+CtD9YPZqeu40EuzQUqWzncxR/Ak9BEkloymSxB5BqoUAEaA600aV57sKYWbm+vfYdzNrUIsfhuy4vV13pwt8hyFkPBYILzVW1F7sBKXcR/myZ8r2FCX2z7t2xPukac=","ext":null,"extMessage":null,"success":true} data解密后的内容: {"addressee":"收件人","area":"浙江省南昌市湾里区","detailAddress":"详细地址","email":"13033613078@163.com","expressCompany":"","expressNo":"","invoiceAmount":10008.000,"invoiceBillNo":"2020091817143583891968","invoiceContent":"信息技术服务*技术服务费","invoiceStatus":0,"invoiceStatusDesc":"待审核","phone":"13033613078","purchaserAddressPhone":"134567895585","purchaserBankAccount":"啊啊啊啊啊","purchaserInvoiceTitle":"翰一号测试","purchaserTaxNumber":"010203050408","refuseReason":"","remark":"这是一个备注"} ``` ## 14 开票取消接口 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址: /open/api/v1/ak/invoice/cancel #### 请求方式:POST #### 请求参数说明: |参数名称|参数类型|参数含义|是否必填|参数备注| |-|-|-|-|-| |invoiceBillNo|String|创建发票返回的开票订单号|是|| #### 接口响应参数data字段解密后的参数说明: >d 该接口响应参数中无响应data字段 ,success 等于true代表取消成功,false 代表失败 errorMessage中有错误信息反馈 ## 15 个体户可结算金额查询 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akSelfEmployedSettledAmountQuery #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |idCard|个体户身份证号|String|是|| |mainstayId|主体ID|String|是|该参数值由8. 查询企业行业、开票内容| #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |name|个体户姓名|String|是|例:张三| |idCard|个体户身份证号|String|是|例:410422199405051167| |thisMonthSettledAmount|本月已结算金额|String|是|例:0| |thisMonthSurplusOfAmount|本月剩余可结算金额|String|是|例:400000| |surplusOfInvoiceAmount|剩余可开票金额|String|是|例:4950000| #### 字段解释: (1)剩余可开票金额:指的是记录个体户剩余可开发票的金额,由于个体户开票年度总金额的限制的原因;开票年度计算方式,个体户连续12月开票金额不得超过495W,例如:从2021年3月份往前推12个月的开票金额不得超过495W,4月份依次类推。例如:495W - 2020年4月份到2021年的3月份之前开票的金额 = 剩余可开票金额;