# nn-sdk **Repository Path**: sxjs/nn-sdk ## Basic Information - **Project Name**: nn-sdk - **Description**: 诺诺发票开具sdk - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-28 - **Last Updated**: 2024-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 诺税通SAAS沙箱 ```text APPKey: SD56531018 APPSecret: SD3C429B318C485E 税号:339901999999142 全电票传分机号:8889 其他增值税发票 传 分机号:0 终端号:1 机器编号:111111111111 *特殊:可测专票冲红,全电冲红流程。但是不能测试纸票作废,测纸票作废可以把税号换成339902999999789114 ``` ### 开票配置 ```yaml # 诺诺开票 nuonuo: # 接口地址 url: https://sdk.nuonuo.com/open/v1/services # 回调地址 callback: https://manage.powerchina.cn/psi/invoice/callback app-key: 27365482 app-secret: 6349BF9BA3364981 # 销方税号 saler-tax-num: 91420104300248374A # 销方名称 saler-name: 武汉既济电力商城有限公司 # 销方开户行及账号 saler-account: 汉口银行汉正街支行 179040120108001608 # 销方电话 saler-tel: 027-50537930 # 销方地址 saler-address: 武汉市硚口区利济南路2号 # 分机号 extension-number: 0 # 终端号 terminal-number: 1 # 机器编号 machine-number: 111111111111 # 复核人 checker: 向洁琼 # 开票人 clerk: 陈曦 # 收款人 payee: 彭莎 # 是否关闭所有日志 close-log: true # 回收请求日志 ret-log: true # 打印请求日志 print-log: true ``` ### 开具电子发票 ```java InvoiceGoods goods = new InvoiceGoods(){{ setSpecType("1"); setTaxRate(new BigDecimal(0.13)); setUnit("kg"); setFavouredPolicyName(""); setPrice(new BigDecimal(8)); setNum(new BigDecimal(1)); setZeroRateFlag(""); setFavouredPolicyFlag("0"); setGoodsCode("1090511030000000000"); setGoodsName("大米"); setTaxIncludedAmount(new BigDecimal(8)); }}; OpenInvoiceReq req = new OpenInvoiceReq(); req.setBuyerTel("1509-87366"); req.setCorpDisplayName("测试企业"); req.setClerkId(""); req.setRemark(""); req.setChecker("复核人"); req.setProjectNameDisplay("项目名称"); req.setPayee("收款人"); req.setBuyerAddress("西湖区"); req.setBuyerTaxNum("339901999999142"); req.setInvoiceLine("p"); req.setNeedGenerateEwmFlag(0); req.setSalerAccount("销方银行账号20200610"); req.setOrderNo("1234565479830335"); req.setSalerTel("0571-87022169"); req.setDeptId(""); req.setSpecNameDisplay("规格型号"); req.setBuyerName("诺诺网"); req.setAddDate(""); req.setNotifyPhone("13892827272"); req.setOrderTotal(8); req.setSalerAddress("金色西溪"); req.setClerk("开票人"); req.setBuyerAccount("工商银行账号88888888"); req.setProductOilFlag("0"); req.setSalerTaxNum("150301199811285326"); req.setDetail(new ArrayList(){{add(goods);}}); req.setNotifyEmail("19883@qq.com"); OpenInvoiceRes res = client.client(NMethod.OPEN_INVOICE, req); ``` ### 开具发票 ```java BillingNewReq req = new BillingNewReq(); InvoiceBuildingInfo info = new InvoiceBuildingInfo(){{ setBuildingAddress("浙江省杭州市西湖区"); setCrossCityFlag("0"); setItemName("宇宙城"); setLandVatItemNo(""); setDetailedAddress(""); }}; InvoiceTravellerTransport transport = new InvoiceTravellerTransport(){{ setTravellerCardType(""); setArrivePlace(""); setTravelDate("2023-01-01"); setTravelPlace(""); setVehicleLevel("经济舱"); setTravellerCardNo(""); setTraveller("张三"); setVehicleType("1"); }}; RealPropertySellInfo sellInfo = new RealPropertySellInfo(){{ setRealPropertyAddress("浙江省杭州市西湖区"); setCrossCityFlag("0"); setRealPropertyCertificate(""); setRealPropertyContractNumbe(""); setUnit("2"); setPrice(""); setIncrementTaxNumber(""); setDetailAddress("文一西路XXXX号"); setTaxAmount(""); }}; InvoiceDetail detail = new InvoiceDetail(){{ setSpecType("y460"); setTaxExcludedAmount("0.88"); setInvoiceLineProperty("0"); setFavouredPolicyName("0"); setNum(""); setWithTaxFlag("1"); setTax("0.12"); setFavouredPolicyFlag("0"); setTaxRate("0.13"); setUnit("台"); setDeduction("0"); setPrice(""); setZeroRateFlag("0"); setImmediateTaxReturnType("01"); setGoodsCode("1090511030000000000"); setSelfCode("130005426000000000"); setGoodsName("电脑"); setTaxIncludedAmount("1"); setdField1(""); setdField2(""); setdField3(""); setdField4(""); setdField5(""); }}; SecondHandCarInfo carInfo = new SecondHandCarInfo(){{ setOrganizeType("1"); setVehicleManagementName("杭州"); setSellerPhone("13888888888"); setSellerName("张三"); setBrandModel("宝马3系"); setVehicleCode("LHGK43284342384234"); setLicenseNumber("浙A12345"); setRegisterCertNo("330022123321"); setSellerAddress("杭州文一路888号"); setVehicleType("轿车"); setIntactCerNum(""); setSellerTaxnum("330100199001010000"); }}; DifferenceVoucherInfoList voucherInfo = new DifferenceVoucherInfoList(){{ setDetailIndex("1"); setInvoiceTime("2023-04-13"); setVoucherType("01"); setAllElectronicInvoiceNumbe(""); setVoucherNumber(""); setInvoiceNumber(""); setTaxtotal("103.14"); setRemark(""); setInvoiceCode(""); setVoucherSource(""); setDifferenceTaxtotal("100.14"); }}; AdditionalElementList element = new AdditionalElementList(){{ setElementValue("信息值"); setElementType("信息类型"); setElementName("信息名称"); }}; VehicleInfo vehicle = new VehicleInfo(){{ setTaxOfficeCode("13399000"); setManufacturerName("华晨宝马汽车生产有限公司"); setImportCerNum(""); setCertificate("WDL042613263551"); setEngineNum("10111011111"); setTaxOfficeName("杭州税务"); setBrandModel("宝马3系"); setProductOrigin("北京"); setVehicleCode("LHGK43284342384234"); setMaxCapacity("5"); setIntactCerNum(""); setTonnage("2"); setInsOddNum(""); setIdNumOrgCode("9114010034683511XD"); setVehicleType("轿车"); }}; InvoiceGoodsTransports transports = new InvoiceGoodsTransports(){{ setOrigin("上海"); setTransportTool("1"); setTransportToolNum("浙A12345"); setDestination("北京"); setGoodsName("零配件"); }}; RealPropertyRentInfo rentInfo = new RealPropertyRentInfo(){{ setRealPropertyAddress("浙江省杭州市西湖区"); setCrossCityFlag("0"); setRealPropertyCertificate(""); setUnit("2"); setRentEndDate("2023-01-30"); setDetailAddress("文一西路XXXX号"); setRentStartDate("2023-01-01"); }}; InvoiceOrder order = new InvoiceOrder(){{ setTerminalNumber(""); setListFlag("0"); setNaturalPersonFlag("0"); setPushMode("1"); setManagerCardNo(""); setDepartmentId("9F7E9439CA8B4C60A2FFF3EA3290B088"); setShowCheckerType("0"); setInvoiceDifferenceType("02"); setPaperInvoiceType(""); setChecker("王五"); setInvoiceNumEnd(""); setPayee("李四"); setBuyerAddress("杭州市"); setTaxRebateProxy("0"); setInvoiceType("1"); setShowBankAccountType("0"); setSpecificFactor("0"); setOrderNo("201701053332079312313"); setMachineCode("123456789123"); setTaxNumVerifyFlag(""); setVehicleFlag("1"); setInvoiceCode(""); setBuyerPhone("15858585858"); setSurveyAnswerType(""); setCertificateType("201"); setBuyerTel("0571-88888888"); setNextInvoiceNum(""); setClerkId(""); setRemark("备注信息"); setManagerCardType("201"); setBuyerTaxNum("339901999999198"); setInvoiceLine("p"); setBuyerManagerName("张三"); setRedReason("1"); setEmail("test@xx.com"); setNaturalPersonVerifyFlag(""); setSalerAccount(""); setSalerTel("0571-77777777"); setCallBackUrl("http:127.0.0.1/invoice/callback/"); setCcEmail("nuonuowang@qq.com,hahaha@qq.com"); setBillInfoNo("1403011904008472"); setBuyerName("企业名称/个人"); setInvoiceDate("2022-01-13 12:30:00"); setInvoiceNum(""); setHiddenBmbbbh("0"); setSalerAddress(""); setClerk("张三"); setbField1(""); setBuyerAccount("中国工商银行 111111111111"); setNextInvoiceCode(""); setExtensionNumber("0"); setbField3(""); setAdditionalElementName("测试模版"); setSalerTaxNum("339901999999199"); setbField2(""); setForceFlag("0"); setListName("详见销货清单"); setCcPhone("18399887766,18399882211"); setProxyInvoiceFlag("0"); setInvoiceBuildingInfo(info); setInvoiceTravellerTransport(new ArrayList(){{add(transport);}}); setRealPropertySellInfo(sellInfo); setInvoiceDetail(new ArrayList(){{add(detail);}}); setSecondHandCarInfo(carInfo); setDifferenceVoucherInfoList(new ArrayList(){{add(voucherInfo);}}); setAdditionalElementList(new ArrayList(){{add(element);}}); setVehicleInfo(vehicle); setInvoiceGoodsTransports(new ArrayList(){{add(transports);}}); setRealPropertyRentInfo(rentInfo); }}; req.setOrder(order); InvoiceRes res = client.client(NMethod.REQUEST_BILLING_NEW, req); ``` ### 查询发票详情 ```java InvoiceReq req = new InvoiceReq(); req.setSerialNos(new ArrayList(){{add("24040911522501187425");}}); List res = client.client(NMethod.QUERY_INVOICE_RESULT, req); ``` ### 开票重试 ```java ReInvoiceReq req = new ReInvoiceReq(); req.setFpqqlsh("20052515495203513451"); req.setOrderno("1231231"); req.setDigiAccount(""); req.setNextInvoiceCode(""); req.setInvoiceNumStart(""); req.setInvoiceNumEnd(""); String res = client.client(NMethod.RE_INVOICE, req); ``` ### 发票快捷冲红 ```java InvoiceRedReq req = new InvoiceRedReq(); req.setElecInvoiceNumber("23312000000000540837"); req.setOrderNo("20250623221952851952"); req.setCallBackUrl(""); req.setBillUuid("1d7f08b6ddb64cb19b095b0360f074d7"); req.setDeptId(""); req.setClerkId(""); req.setInvoiceCode(""); req.setOrderTime(""); req.setExtensionNumber(""); req.setInvoiceNumber(""); req.setInvoiceId(""); req.setInvoiceLine("pc"); req.setTaxNum("338801999999001"); req.setBillNo("202302089545783568390"); BillingNewRes res = client.client(NMethod.FAST_INVOICE_RED, req); ``` ### 发票作废 ```java InvoiceCancellationReq req = new InvoiceCancellationReq(); req.setSpecificReason(""); req.setInvoiceId("20052622361801000032"); req.setInvoiceNo("23501899"); req.setInvoiceCode("5000201530"); req.setInvalidReason(""); InvoiceCancellationRes res = client.client(NMethod.INVOICE_CANCELLATION, req); ``` ### 空白发票作废 ```java BlankInvoiceInvalidateReq req = new BlankInvoiceInvalidateReq(); req.setInvalidNum(""); req.setTerminalNumber(""); req.setMachineCode(""); req.setDeptid(""); req.setClerkid(""); req.setInvoiceLine(""); req.setTaxNo(""); req.setExtensionNum(""); req.setInvoiceCode(""); req.setInvoiceNum(""); Object res = client.client(NMethod.BLANK_INVOICE_INVALIDATE, req); ```