在wsdl-1.1.2和wsdl-1.2中定义的财政化库(hrvatska)

fisk的Python项目详细描述


财政收入

en:一个简单的财政库,用于财政化克罗地亚税务局的收据。

人力资源:Biblioteka za Fiskalizaciju ra_una poreznoj upravi republice hrvatske.

note1:此库与python 3不兼容。

安装

要从pypi安装此软件包,请使用以下命令:

$ pip install fisk

要求

  1. signxml-pip安装signxml(fiskpy支持版本2 v0.8.1)
  2. pycrypto库-https://www.dlitz.net/software/pycrypto/

用法

回声请求

importfiskimportlxml.etreeaset#As we did not set environment with FiskInit default environment is DEMO. This#works just with EchoRequest as it does not require key (with password) and certificate.#test echoecho=fisk.EchoRequest("Proba echo poruke")#send request and print server replyecho_reply=echo.execute()if(echo_reply!=False):printecho_replyelse:errors=echo.get_last_error()print"EchoRequest errors:"forerrorinerrors:printerror

Poslovniprostor请求

importfiskimportlxml.etreeasetfromdatetimeimportdate,timedelta#fiskpy initialization !!! must be used for PoslovniProstorZahtjevfisk.FiskInit.init('/path/to/your/key.pem',"kaypassword",'/path/to/your/cert.pem')#For production environment#fisk.FiskInit.init('/path/to/your/key.pem', "kaypassword", '/path/to/your/cert.pem', Ture)#create addresadresa=fisk.Adresa(data={"Ulica":"Proba","KucniBroj":"1","BrojPoste":"54321"})#create poslovni prostorpp=fisk.PoslovniProstor(data={"Oib":"12345678901","OznPoslProstora":"POS1","AdresniPodatak":fisk.AdresniPodatak(adresa),"RadnoVrijeme":"PON-PET 9:00-17:00","DatumPocetkaPrimjene":(date.today()+timedelta(days=1)).strftime('%d.%m.%Y')})#you can also access (set and get) attributes of fisk element classes aspp.SpecNamj="12345678901"printpp.OznPoslProstora#poslovni prostor requestppz=fisk.PoslovniProstorZahtjev(pp)ppz_reply=ppz.execute()if(ppz_reply==True):print"PoslovniProstorZahtjev seccessfuly sent!"else:errors=ppz.get_last_error()print"PoslovniProstorZahtjev reply errors:"forerrorinerrors:printerror#fiskpy deinitialization - maybe not needed but good for correct garbage cleaningfisk.FiskInit.deinit()

racun请求

importfiskimportlxml.etreeasetfromdatetimeimportdate,timedelta#fiskpy initialization !!! must be used for RacunZahtjevfisk.FiskInit.init('/path/to/your/key.pem',"kaypassword",'/path/to/your/cert.pem')#For production environment#fisk.FiskInit.init('/path/to/your/key.pem', "kaypassword", '/path/to/your/cert.pem', Ture)racun=fisk.Racun(data={"Oib":"12345678901","USustPdv":"true","DatVrijeme":"26.10.2013T23:50:00","BrRac":fisk.BrRac({"BrOznRac":"2","OznPosPr":"POS2","OznNapUr":"1"}),"Pdv":[fisk.Porez({"Stopa":"25.00","Osnovica":"100.00","Iznos":"25.00"}),fisk.Porez({"Stopa":"10.00","Osnovica":"100.00","Iznos":"10.00"})],"Pnp":[fisk.Porez({"Stopa":"25.00","Osnovica":"100.00","Iznos":"25.00"}),fisk.Porez({"Stopa":"10.00","Osnovica":"100.00","Iznos":"10.00"})],"OstaliPor":[fisk.OstPorez({"Naziv":"Neki porez","Stopa":"3.00","Osnovica":"100.00","Iznos":"3.00"})],"IznosOslobPdv":"100.00","IznosMarza":"100.00","IznosNePodlOpor":"50.00","Naknade":[fisk.Naknada({"NazivN":"test","IznosN":"10.00"})],"IznosUkupno":"500.00","NacinPlac":"G","OibOper":"12345678901","NakDost":"false","ParagonBrRac":"123-234-12","SpecNamj":"Tekst specijalne namjne"})#IWe did not supplied required element in constructor so now we set itracun.OznSlijed="P"#Zastitni kod is calculated so print itprint"ZKI: "+racun.ZastKod#change one variable and check new zastitni kodracun.IznosUkupno="1233.00"print"ZKI: "+racun.ZastKod#create Request and send it to server (DEMO) and print replyracunZahtjev=fisk.RacunZahtjev(racun)racun_reply=racunZahtjev.execute()if(racun_reply!=False):print"JIR is: "+racun_replyelse:errors=racunZahtjev.get_last_error()print"RacunZahtjev reply errors:"forerrorinerrors:printerror#fiskpy deinitialization - maybe not needed but good for correct garbage cleaningfisk.FiskInit.deinit()

provjera请求

importfiskfromlxmlimportetreeasetfromdatetimeimportdate,timedelta#fiskpy initializationfisk.FiskInit.init('/path/to/your/key.pem',"kaypassword",'/path/to/your/cert.pem')racun=fisk.Racun(data={"Oib":"12345678901","USustPdv":"true","DatVrijeme":"26.10.2013T23:50:00","BrRac":fisk.BrRac({"BrOznRac":"2","OznPosPr":"POS2","OznNapUr":"1"}),"Pdv":[fisk.Porez({"Stopa":"25.00","Osnovica":"100.00","Iznos":"25.00"}),fisk.Porez({"Stopa":"10.00","Osnovica":"100.00","Iznos":"10.00"})],"Pnp":[fisk.Porez({"Stopa":"25.00","Osnovica":"100.00","Iznos":"25.00"}),fisk.Porez({"Stopa":"10.00","Osnovica":"100.00","Iznos":"10.00"})],"OstaliPor":[fisk.OstPorez({"Naziv":"Neki porez","Stopa":"3.00","Osnovica":"100.00","Iznos":"3.00"})],"IznosOslobPdv":"100.00","IznosMarza":"100.00","IznosNePodlOpor":"50.00","Naknade":[fisk.Naknada({"NazivN":"test","IznosN":"10.00"})],"IznosUkupno":"500.00","NacinPlac":"G","OibOper":"12345678901","NakDost":"false","ParagonBrRac":"123-234-12","SpecNamj":"Tekst specijalne namjne"})#We did not supplied required element in constructor so now we set itracun.OznSlijed="P"#Zastitni kod is calculated so print itprint"ZKI: "+racun.ZastKod#change one variable and check new zastitni kodracun.IznosUkupno="1233.00"print"ZKI :"+racun.ZastKod#create Request and send it to server (DEMO) and print replyprovjeraZahtjev=fisk.ProvjeraZahtjev(racun)provjera_reply=provjeraZahtjev.execute()if(provjera_reply==False):print"Request and response data is not the same"elif(isinstance(provjera_reply,et._Element)):forgreskainprovjera_reply:printu"Code: {} -> Message: {}".format(greska[0].text,greska[1].text)else:print("Unhandled error")

密钥生成

校准密钥和证书在.p12或.pfx中提供 格式。要与此库一起使用,您应该将它们转换为.pem 格式。这可以通过openssl完成。

$ openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

现在certificate.pem同时持有密钥和证书。所以你应该 手动打开此文件并将每个文件复制到单独的文件中,包括 开始/结束语句。

私钥应加密,如果不是,则应运行:

$ openssl rsa -in key.pem -des3 -out passkey.pem

CA证书

版本>;=0.7.4

CA证书包含在发行版中。你不应该把它们提供给 拳击课。

版本<;0.7.4

演示和生产环境也需要CA证书。 验证过程需要此证书。

演示CA证书

您可以下载此证书 https://demo-pki.fina.hr/crl/democacert.cer

演示CA 2014证书(其中2个)

您可以下载此证书 http://www.fina.hr/Default.aspx?sec=1730

但是在编写本文时,您必须包括旧的demo ca证书 也在名单上,不能工作。

故障排除

500:内部服务器错误-这是0.7.5版之前的错误

valueerror:不支持rsa密钥格式-此错误可能 如果您的私钥未加密,则会发生这种情况。请检查您的 私钥已加密。如果不是,请加密它(“openssl rsa -in key.pem-des3-out passkey.pem')

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java从Struts操作的钩子更改表单值(Liferay 6.2)   java如何改变Spring MVC处理url“点”字符的行为   Clojure中使用Java接口的问题   junit如何模拟comosDB azure java集成客户端?   运行函数时发生java错误   netbeans Java。jar文件和依赖项   Eclipse中文本字段中的java输入类型   在JAVA中,将集合变量从实时批处理运行时传递到调用批处理文件   java通过Bean验证API中的自定义消息管理异常   XML到json的转换,在Java中,同时保留数据类型   根据JAVA中的列名从Excel文件中获取单元格值   在AsyncTask的doInBackground中未调用java FirebaseMessagingService   java如何在数据库中插入一行?