功能模块接口 - 开票流程

## 综合服务云平台 - API功能模块接口明细 ## 版本更新记录 |修订日期|修订内容|修订人| |-|-|-| |2020.07.15|云平台 V1.0 发布|彭晓伟| ## 开票时序图 ![账管家__开票时序图.jpg](https://cos.easydoc.net/87516830/files/kghofb80.jpg) >d 接口调用细节流程: ◆ 参数RSA加密[接口签名,加解密说明](https://easydoc.xyz/doc/90689852/YkCCKKo8/zVVCnXHl) ◆ 将加密结果以及公共参数拼接成新的字符串通过MD5加密生成签名 ◆ 将公共参数以及签名通过header传输,参数加密结果通过body传输,发起http请求 ◆ 返回结果解密[接口签名,加解密说明](https://easydoc.xyz/doc/90689852/YkCCKKo8/zVVCnXHl) #### 接口响应参数都为如下固定json格式 |参数名称|参数含义|数据类型|是否必有|参数备注| |-|-|-|-|-| |resopnseType| 返回类型|int|是|无需关注此值| |errorCode|错误码 |String|是|详情参考[系统错误码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |errorMessage| 错误信息|String|是|详情参考[系统错误码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |status|状态码|int|是|详情参考[系统错误码](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |success|是否成功|boolean|是|true:成功 false:失败| |data|返回结果数据|String|否|只有当success为true才会有该值,该值为RSA加密值,需解密使用,解密规则请看[接口签名,加解密说明](https://easydoc.xyz/doc/90689852/YkCCKKo8/zVVCnXHl)| ## 4. 开票接口 ## 4.1 申请开票 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 注意 >d 1.在调用开票申请接口前,需要调用 [3.6 个体户状态查询接口](https://easydoc.xyz/doc/90689852/YkCCKKo8/kf4eEg5c)查询 返回的taxStatus - 税务状态的状态变更为“已实名”,只有变更后,才能提交该个体户的开票申请;仅限新注册的个体户。 >2. 如果是老的个体户只需调用一次,保存在本地,后续可以不需要再去查询该个体户的税务状态信息。 #### 接口地址:/open/api/v1/ak/akApplyInvoice #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |idCard|个体户身份证|String|是|| |mainstayId|个体户注册地|String|是|该参数值由[查询所拥有的主体发票行业接口](https://easydoc.xyz/doc/90689852/YkCCKKo8/XUyNWEBU) 获得| |bankNameAccount|个体户开户行及账户信息|String|否|例:中国工商银行杭州富春支行 330501164xxxxxxx| |invoiceAmount|开票金额|String|是|精确到分 例如:"10.01"代表 十元零一分| |invoiceCode|开票内容编码|String|是|该参数值由[查询所拥有的主体发票行业接口](https://easydoc.xyz/doc/90689852/YkCCKKo8/XUyNWEBU) 获得| |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/90689852/YkCCKKo8/Y0HFC5LJ)| |failReason|失败原因|String|是|该参数内容可能为空,成功的时候失败原因为空字符串| #### 字段解释 (1)个体户已缴纳个税:指的是用户的个税选择的是累进制,记录用户之前已缴纳的个税金额。 (2)应纳个税金额:指的是本次开票金额里的应缴纳的个税金额。 (3)发放前开票金额:指的是记录个体户之前已开发票的总金额,由于个体户开票年度总金额的限制的原因;开票年度计算方式,如果用户在2019年10月份开过一次发票,他的年度限制就是到2020年的9月,如果用户是第一次新开发票,就以当前月份往后推12月的时间。 ## 4.2 上传证据链接口 >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) ## 4.3 开票费用支付 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akInvoicePay #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| |status|开票状态|Integer|是|[开票状态码对照表](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |failReason|失败原因|String|是|该参数内容可能为空,成功的时候失败原因为空字符串| ## 4.4 开票结果查询 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akInvoiceResultQuery #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| #### 响应参数说明: |参数名称| 参数含义| 数据类型| 是否必有| 参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|| |invoiceStatus|开票状态|Integer|是|[开票状态码对照表](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |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.已邮寄| ## 4.5 余额查询 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址:/open/api/v1/ak/akBalanceQuery #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| #### 接口响应参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |balance|账户余额|BigDecimal|是|精确到分 例如:"10.01"代表 十元零一分| ## 4.6 个体户开票状态回调接口 >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 贵司写完后提供到接口url给发放平台即可。回调成功需返回success,不然回重复回调,至多重试5次 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| 是|个体户注册详情请参阅[状态码对照表](https://easydoc.xyz/doc/90689852/YkCCKKo8/Y0HFC5LJ)| |idCard| 个体户身份证|String| 是|| |mainstayName| 注册地|String| 是|| |companyName| 公司名|String| 是|| |companySocialCreditCode| 纳税人识别号|String| 是|例:91330100FS234(纳税人识别号)| |mobile| 手机号|String| 是|| |license| 营业执照|String| 是|| |failReason| 拒绝原因|String| 是|| |url| 实名采集链接地址|String| 是|| ## 4.7 服务费开票申请 开发环境: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字段解密后的参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |provisionalInvoiceNo|开票确认号|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 } ``` ```json #data解密后的内容: { "invoiceAmount":10058.35, "provisionalInvoiceNo":"2020091817143583891968", "invoiceContent":"信息技术服务*技术服务费", "purchaserAddressPhone":"134567895585", "purchaserBankAccount":"啊啊啊啊啊", "purchaserInvoiceTitle":"", "purchaserTaxNumber":"010203050408", "sellerAddressPhone":"浙江省杭州市拱墅区隐秀路1号杭悦商业中心A座1604室 13777488831", "sellerBankAccount":"1202021209900411273 工商银行杭州武林支行营业室", "sellerInvoiceTitle":"浙江河马管家网络科技有限公司", "sellerTaxNumber":"91330105MA2H1GKA4T" } ``` ## 4.8 服务费开票确认接口 开发环境:https://pay-dev.lx-rhino.com 生产环境:https://api.lx-rhino.com #### 接口地址: /open/api/v1/ak/createServiceInvoice #### 请求方式:POST #### 请求参数说明: |参数名称|参数含义|数据类型|是否必填|参数备注| |-|-|-|-|-| |provisionalInvoiceNo|开票订单号|String|是|预下单返回的开票订单号| #### 接口响应参数data字段解密后的参数说明: |参数名称|参数含义| 数据类型|是否必有|参数备注| |-|-|-|-|-| |invoiceBillNo|开票订单号|String|是|预下单订单号和开票订单一致| |invoiceStatus|开票状态|int|是|参看系统编码 - 开票状态码,如果是待审核中状态说明已成功提交,等待审核即可,如果是待结算证明上传则还需要调用上传证明接口| ```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 } ``` ## 4.9 服务费开票查询接口 开发环境: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": "这是一个备注" } ```