package com.idea.invoice.tool; import com.baiwang.bop.client.IBopClient; import com.baiwang.bop.client.impl.BopRestClient; import com.baiwang.bop.request.impl.bizinfo.CompanySearchRequest; import com.baiwang.bop.request.impl.invoice.common.InvoiceDetails; import com.baiwang.bop.request.impl.invoice.impl.FormatfileBuildRequest; import com.baiwang.bop.request.impl.invoice.impl.FormatfileQueryRequest; import com.baiwang.bop.request.impl.invoice.impl.InvoiceOpenRequest; import com.baiwang.bop.respose.entity.FormatfileBuildResponse; import com.baiwang.bop.respose.entity.FormatfileQueryResponse; import com.baiwang.bop.respose.entity.InvoiceOpenResponse; import com.baiwang.bop.respose.entity.bizinfo.CompanySearchResponse; import com.baiwang.bop.respose.entity.bizinfo.CompanySearchResult; import com.baiwang.bop.utils.ToolUtils; import java.util.ArrayList; import java.util.List; // 发票工具 public class InvoiceTool { // 授权信息 private static String url = "http://sandbox-openapi.baiwang.com/router/rest"; //接口地址 private static String appKey = "1000886"; //appKey private static String appSecret = "739df182-8ced-454e-8a89-ebacc0a1d0c5"; //appScrect private static String userSalt = "e6dcfccba146417b828ef8c075c66234"; //用户盐值 private static String username = "admin_3000000139924";//开发者账号用户名 private static String password = "Aa123456";//开发者账号密码 // 云抬头 获取 public static List companySearch(String companyName) { try { String token = ToolUtils.getToken(url, appKey, appSecret, username, password, userSalt); CompanySearchRequest request = new CompanySearchRequest(); request.setCompanyName(companyName);//沙箱环境只能获取“百望股份”相关信息 request.setAccuracy(""); request.setSort("{\"frequency\": 0}"); IBopClient client = new BopRestClient(url, appKey, appSecret); CompanySearchResponse response = client.execute(request, token, CompanySearchResponse.class); return response.getResult(); } catch (Exception e) { System.out.println(e); } return null; } // 版式文件生成 public static void formatfileBuild(String invoiceCode, String invoiceNo, String buyerEmail) { try { String token = ToolUtils.getToken(url, appKey, appSecret, username, password, userSalt); FormatfileBuildRequest request = new FormatfileBuildRequest(); // request.setSellerTaxNo("913202146816282140"); request.setSellerTaxNo("91500000747150430A"); request.setSerialNo(""); // request.setInvoiceCode("050003521106"); // request.setInvoiceNo("54092179"); request.setInvoiceCode(invoiceCode); request.setInvoiceNo(invoiceNo); request.setPushType("1"); request.setBuyerPhone(""); // request.setBuyerEmail("comma.liu@qq.com"); request.setBuyerEmail(buyerEmail); //同步请求 IBopClient client = new BopRestClient(url, appKey, appSecret); FormatfileBuildResponse response = client.execute(request, token, FormatfileBuildResponse.class); } catch (Exception e) { System.out.println(e); } } // 版式文件查询 public static void invoiceFormatQuery(){ try { String token = ToolUtils.getToken(url, appKey, appSecret, username, password, userSalt); FormatfileQueryRequest request = new FormatfileQueryRequest(); request.setInvoiceQueryType("0"); request.setSellerTaxNo("91500000747150430A"); request.setSerialNo(""); request.setInvoiceCode("011000100011"); request.setInvoiceNo("00203622"); request.setReturnType("3");//返回H5发票提取链接 //同步请求 IBopClient client = new BopRestClient(url, appKey, appSecret); FormatfileQueryResponse response = client.execute(request, token, FormatfileQueryResponse.class); System.out.println(response.toString()); } catch (Exception e) { System.out.println(e); } } //企业资料:销方参数 private static String sellerTaxNo = "91500000747150430A";//91500000747150430A private static String deviceType = "1";//设备类型固定值税盘/核心板/uk private static String serialNo = "wuxi-"+System.currentTimeMillis()+"-001";//请求流水号,全局唯一 private static String invoiceTypeCode = "026";//票种代码,纸质专票004,纸质普票007,电子普票026,电子专票028 // private static String invoiceTerminalCode = "410123456730";//设备终端代码 private static String invoiceTerminalCode = "410123456730";//设备终端代码 // 发票开具 public static InvoiceOpenResponse invoiceOpenTax(InvoiceModel model){ String token = ""; try { //获取token token = ToolUtils.getToken(url, appKey, appSecret, username, password, userSalt); InvoiceOpenRequest request = new InvoiceOpenRequest(); //销方资料 request.setSellerTaxNo(sellerTaxNo); //接口信息初始化 request.setSerialNo(serialNo); request.setDeviceType(deviceType); request.setOrganizationCode(""); request.setInvoiceSpecialMark("00");//特殊票种标记:00普通发票 request.setInvoiceTypeCode(invoiceTypeCode); request.setInvoiceTerminalCode(invoiceTerminalCode); //购方资料 // request.setBuyerTaxNo("91320213MA1TBCFU9A"); // request.setBuyerName("无锡全新百旺"); // request.setBuyerAddressPhone("深圳市福田区香蜜湖街道东海社区红荔西路8089号深业中城6号楼A单元34010755-61886688"); // request.setBuyerBankAccount("中国银行无锡南长街支行123456789987654321"); request.setBuyerTaxNo(model.getBuyerTaxNo()); request.setBuyerName(model.getBuyerName()); request.setBuyerAddressPhone(model.getBuyerAddressPhone()); request.setBuyerBankAccount(model.getBuyerBankAccount()); //根据企业财务规定设置,备注字段限制180字符,6行 request.setDrawer("赶企网络信息技术"); request.setChecker(""); // request.setPayee("收款人"); request.setPayee(model.getPayeeUser()); // NANJING/TAICANG-PARANAGUA/MANZANILLO/SANTOS//NKAB20054900//NKAB20056600/NKAB20056601/NKAB20056602/NKAB20056800//NKAB20056801/NKAB20056802/NKAB20056803/GAL00135438//GAL00135709 request.setRemarks("");//备注行 //发票性质设置:保留 request.setInvoiceType("0");//发票类型:0蓝字;1红字 request.setInvoiceListMark("0");//清单标志:0无清单;1带清单 request.setTaxationMode("0"); request.setSignatureParameter("0000004282000000"); request.setTaxDiskNo(""); request.setTaxDiskKey(""); request.setTaxDiskPassword(""); request.setGoodsCodeVersion(""); request.setConsolidatedTaxRate(""); request.setNotificationNo(""); request.setRedInfoNo(""); request.setOriginalInvoiceCode(""); request.setOriginalInvoiceNo(""); request.setDeductibleAmount(""); //根据发票行明细自动计算 //request.setInvoiceTotalPrice("28.57");//商品合计金额 //request.setInvoiceTotalTax("1.43");//商品合计税额 //request.setInvoiceTotalPriceTax("30.00");//商品价税合计 //request.setAutoSplit(true); /** AutoSplit=true时,返回为list,见下方Response示例 **/ //商品明细列表,票面显示8行,超过8行显示“详见清单” List invoiceDetailsList = new ArrayList(); //========================第一行明细,按简征收============================== InvoiceDetails invoiceDetails1 = new InvoiceDetails(); invoiceDetails1.setGoodsLineNo("1");//明细行号,依次递增,票面显示8行明细,超出8行开具清单发票 invoiceDetails1.setGoodsLineNature("0");//发票行性质 invoiceDetails1.setGoodsCode("304050202020000000001");//税收编码 invoiceDetails1.setGoodsExtendCode(""); // invoiceDetails1.setGoodsName("停车费");//商品名称 invoiceDetails1.setGoodsName(model.getGoodsName()); invoiceDetails1.setGoodsTaxItem(""); invoiceDetails1.setGoodsSpecification("");//规格型号 invoiceDetails1.setGoodsUnit("人");//计量单位 invoiceDetails1.setGoodsQuantity("");//数量 invoiceDetails1.setGoodsPrice("");//商品单价 // invoiceDetails1.setGoodsTotalPrice("30");//商品金额:30 invoiceDetails1.setGoodsTotalPrice(model.getGoodsTotalPrice()); //invoiceDetails1.setGoodsTotalTax("");//商品税额:1.43,含税模式下,自动计算 invoiceDetails1.setGoodsTaxRate("0.05");//税率 invoiceDetails1.setGoodsDiscountLineNo(""); invoiceDetails1.setPriceTaxMark("1");//0不含税;1含税 //商品行税收分类编码设置:由企业财务和百望公司共同确定 invoiceDetails1.setPreferentialMark("1");//是否使用优惠政策 invoiceDetails1.setVatSpecialManagement("按5%简易征收");//特殊征收方式字段 invoiceDetails1.setFreeTaxMark("");//零税率标识 //附加封装好的明细行 invoiceDetailsList.add(invoiceDetails1); //========================第二行明细,正常税率============================== // InvoiceDetails invoiceDetails2 = new InvoiceDetails(); // invoiceDetails2.setGoodsLineNo("2");//明细行号,依次递增,票面显示8行明细,超出8行开具清单发票 // invoiceDetails2.setGoodsLineNature("0");//发票行性质 // invoiceDetails2.setGoodsCode("307020102000000000001");//税收编码 // invoiceDetails2.setGoodsExtendCode(""); // invoiceDetails2.setGoodsName("报名费");//商品名称 // invoiceDetails2.setGoodsTaxItem(""); // invoiceDetails2.setGoodsSpecification("");//规格型号 // invoiceDetails2.setGoodsUnit("单位");//计量单位 // invoiceDetails2.setGoodsQuantity("1");//数量 // invoiceDetails2.setGoodsPrice("880");//商品单价 // invoiceDetails2.setGoodsTotalPrice("880");//商品金额:30 // //invoiceDetails2.setGoodsTotalTax("");//商品税额:1.43 // invoiceDetails2.setGoodsTaxRate("0.03");//税率 // invoiceDetails2.setGoodsDiscountLineNo(""); // invoiceDetails2.setPriceTaxMark("1");//0不含税;1含税 // //商品行税收分类编码设置:由企业财务和百望公司共同确定 // invoiceDetails2.setPreferentialMark("0");//是否使用优惠政策 // invoiceDetails2.setVatSpecialManagement("");//特殊征收方式字段 // invoiceDetails2.setFreeTaxMark("");//零税率标识 // invoiceDetailsList.add(invoiceDetails2); // //========================第三行明细,免税商品============================== // InvoiceDetails invoiceDetails3 = new InvoiceDetails(); // invoiceDetails3.setGoodsLineNo("1");//明细行号,依次递增,票面显示8行明细,超出8行开具清单发票 // invoiceDetails3.setGoodsLineNature("0");//发票行性质 // invoiceDetails3.setGoodsCode("3079900000000000000");//税收编码 // invoiceDetails3.setGoodsExtendCode(""); // invoiceDetails3.setGoodsName("物业管理费");//商品名称 // invoiceDetails3.setGoodsTaxItem(""); // invoiceDetails3.setGoodsSpecification("");//规格型号 // invoiceDetails3.setGoodsUnit("");//计量单位 // invoiceDetails3.setGoodsQuantity("");//数量 // invoiceDetails3.setGoodsPrice("");//商品单价 // invoiceDetails3.setGoodsTotalPrice("1");//商品金额:30 // //invoiceDetails3.setGoodsTotalTax("");//商品税额:1.43 // invoiceDetails3.setGoodsTaxRate("0");//税率 // invoiceDetails3.setGoodsDiscountLineNo(""); // invoiceDetails3.setPriceTaxMark("1");//0不含税;1含税 // //商品行税收分类编码设置:由企业财务和百望公司共同确定 // invoiceDetails3.setPreferentialMark("1");//是否使用优惠政策 // invoiceDetails3.setVatSpecialManagement("免税");//特殊征收方式字段 // invoiceDetails3.setFreeTaxMark("1");//零税率标识 // invoiceDetailsList.add(invoiceDetails3); // request.setInvoiceDetailsList(invoiceDetailsList); IBopClient client = new BopRestClient(url, appKey, appSecret); InvoiceOpenResponse response = client.execute(request, token, InvoiceOpenResponse.class); System.out.println("我是返回"+response.toString()); return response; } catch (Exception e) { System.out.println(e); } return null; } }