COM dll + VB Script + IIS

Mar 26, 2013 at 3:47 PM
Molim dobre duše koje su uspjele riješiti fiskalizaciju u ovoj kombinaciji da podijele source,... certifikate sam uspio instalirati. ZKI i test funkcije mi rade, al sad sam se pogubio sa načinima kako poslati račun u finu, ...!
Mar 26, 2013 at 4:15 PM
Dijelim svoj ASP source:
<%
Set Fiskal = Server.CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")

'varijable za XML, neke se mijenjaju svaki puta
Certifikat = Server.MapPath("demo.pfx")
Lozinka = "tvoja_lozinka"
Oib = "12345678900"
OibOperater = "12345678900"
Racun = 1
Poslovnica = 1
Operater = 1
Stopa = "25.00"
Osnovica = "100.00"
Iznos = "25.00"
Ukupno = "125.00"
Uuid = Fiskal.GenerirajUuid()
Pdv = "true"
NacinPlacanja = "T"

'zastitni kod izracun
Zki = Fiskal.ZastitniKodIzracunCertifikatDatoteka(Certifikat, Lozinka, Oib, "01.01.2013 12:00:00", Racun, Poslovnica, Operater, Ukupno)

'priprema XML-a
Xml = "" & _
"<?xml version=""1.0"" encoding=""utf-8""?>" & VbCrLf & _
"<tns:RacunZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" & VbCrLf & _
"  <tns:Zaglavlje>" & VbCrLf & _
"    <tns:IdPoruke>" & Uuid & "</tns:IdPoruke>" & VbCrLf & _
"    <tns:DatumVrijeme>01.01.2013T12:00:00</tns:DatumVrijeme>" & VbCrLf & _
"  </tns:Zaglavlje>" & VbCrLf & _
"  <tns:Racun>" & VbCrLf & _
"    <tns:Oib>" & Oib & "</tns:Oib>" & VbCrLf & _
"    <tns:USustPdv>" & Pdv & "</tns:USustPdv>" & VbCrLf & _
"    <tns:DatVrijeme>01.01.2013T12:00:00</tns:DatVrijeme>" & VbCrLf & _
"    <tns:OznSlijed>P</tns:OznSlijed>" & VbCrLf & _
"    <tns:BrRac>" & VbCrLf & _
"      <tns:BrOznRac>" & Racun & "</tns:BrOznRac>" & VbCrLf & _
"      <tns:OznPosPr>" & Poslovnica & "</tns:OznPosPr>" & VbCrLf & _
"      <tns:OznNapUr>" & Operater & "</tns:OznNapUr>" & VbCrLf & _
"    </tns:BrRac>" & VbCrLf & _
"    <tns:Pdv>" & VbCrLf & _
"      <tns:Porez>" & VbCrLf & _
"        <tns:Stopa>" & Stopa & "</tns:Stopa>" & VbCrLf & _
"        <tns:Osnovica>" & Osnovica & "</tns:Osnovica>" & VbCrLf & _
"        <tns:Iznos>" & Iznos & "</tns:Iznos>" & VbCrLf & _
"      </tns:Porez>" & VbCrLf & _
"    </tns:Pdv>" & VbCrLf & _
"    <tns:IznosUkupno>" & Ukupno & "</tns:IznosUkupno>" & VbCrLf & _
"    <tns:NacinPlac>" & NacinPlacanja & "</tns:NacinPlac>" & VbCrLf & _
"    <tns:OibOper>" & OibOperater & "</tns:OibOper>" & VbCrLf & _
"    <tns:ZastKod>" & Zki & "</tns:ZastKod>" & VbCrLf & _
"    <tns:NakDost>false</tns:NakDost>" & VbCrLf & _
"  </tns:Racun>" & VbCrLf & _
"</tns:RacunZahtjev>"

'slanje zahtjeva u FINA-u
On Error Resume Next
Fina = Fiskal.PosaljiSoapPorukuCertifikatDatoteka(Xml, Certifikat, Lozinka)
If Err.Number<>0 then
    Message = Fiskal.DohvatiGresku(Fiskal.OdgovorGreska) 'prikazuje točnu grešku ako je zapelo
Else
    Message = Fiskal.DohvatiJir(Fina) 'prikazuje JIR - znači da je sve okej
End If
On Error Goto 0

Response.Write Message

Set Fiskal = Nothing
%>
Napomene:
  • datum i vrijeme si sam složi, pazi da budu dvoznamenkasti (npr. 01.01.2013, a ne 1.1.2013.) i bez točke iza godine, te u XML-u mora ići separator "T" između datuma i vremena
  • u dokumentaciji imaš i naredbe za dobivanje potpisanih zahtjeva i odgovora koje si spremaj u LOG bazu, zlu ne trebalo
  • moraš imati instaliran FINA demo root certifikat
  • timeout ASP skripte si stavi na 1 minutu, jer pozivanje dll-a prvi puta zna trajati i po 10-ak sekundi
  • kad prelaziš na produkciju morati ćeš dodati produkcijski URL u skriptu, imaš u uputama
Mar 26, 2013 at 4:19 PM
Edited Mar 26, 2013 at 4:20 PM
.
Mar 26, 2013 at 4:44 PM
Edited Mar 26, 2013 at 4:45 PM
http://fiscalization.codeplex.com/wikipage?title=COM%20komponenta%20za%20fiskalizaciju
' .NET COM Interop
Dim cisInterop As New FiscalizationComInterop
    
' Set logging
cisInterop.LogFileName = CurrentProject.Path + "\Fiscal.log"

' Demo OIB & certificate
Dim FileNum As Long
FileNum = FreeFile
Close FileNum
Open CurrentProject.Path + "\DemoCertificate.txt" For Input As FileNum
Dim oib
Line Input #FileNum, oib
Dim certPwd
Line Input #FileNum, certPwd
Dim certBase64
Line Input #FileNum, certBase64

' Get certificate from file or base64 encoded string
Dim cert
'Set cert = cisInterop.GetCertificateFile(CurrentProject.Path + "\<certificate file name>.pfx", "<password>")
Set cert = cisInterop.GetCertificateString(certBase64, certPwd)
    
' Create invoice number
Dim invoiceNr As New BrojRacunaType
With invoiceNr
    .BrOznRac = "1"
    .OznPosPr = "1"
    .OznNapUr = "1"
End With
    
' Create taxes
Dim pdv25 As New PorezType
With pdv25
    .Stopa = "25.00"
    .Osnovica = "10.00"
    .Iznos = "2.50"
End With
Dim taxes(1) As PorezType
Set taxes(1) = pdv25
    
' Create Racun
Dim invoice As New RacunType
With invoice
    .oib = oib
    .USustPdv = True
    .IznosUkupno = "123.45"
    .DatVrijeme = cisInterop.DateFormatLong(DateTime.Now)
    .OznSlijed = OznakaSlijednostiType.OznakaSlijednostiType_N
    .NacinPlac = NacinPlacanjaType.NacinPlacanjaType_G
    .OibOper = "98642375382"
    .NakDost = False
    .BrRac = invoiceNr
    .Pdv = taxes
End With
    
' invoice.ZastKod <- filled with generated ZKI code - optional
Call cisInterop.GenerateZki(invoice, (cert))
    
Dim request As RacunZahtjev
Set request = cisInterop.CreateInvoiceRequest(invoice)
        
' Call GenerateZki and Sign request - optional
Call cisInterop.Sign(request, (cert))
        
' Send request
Dim result As RacunOdgovor
Set result = cisInterop.SendInvoiceRequest(request, (cert), 0, True)
    
MsgBox (result.Jir)
Pozdrav
Tomislav
Mar 26, 2013 at 9:11 PM
Zahvaljujem Coax - riješeno radi sve 5, ...
Jun 17, 2013 at 12:36 PM

Pozdrav,

Jesi možda radio prijavu poslovnog prostora. Meni fiskalizacija kreće od 01.07. pa mi je tek sad sinulo da bi i to trebalo vjerovatno napraviti prije nego što mi krene produkcija. ... J

.. i di treba točno promijeniti produkcijski URL, nigdje ne vidim da bi bio naveden u testnom okruženju, ...

Tnx na odgovoru, ...

M

Coordinator
Jun 17, 2013 at 12:43 PM
Poslovni prostor OBAVEZNO prijaviti prije slanja prvog fiskalnog računa - inače u Poreznoj ne vide račune koje šaljete i to je put u probleme :)

Za promjenu test <-> produkcija koristi CisUrl:
    Set o = CreateObject("Raverus.FiskalizacijaDEV.COM.CentralniInformacijskiSustav")
    o.TimeOut = 30 * 1000
    o.CisUrl = ""
    o.NazivAutoGeneriranje = True
    o.NazivMapeZahtjev = "c:\fiskalizator\Zahtjevi"
    o.NazivMapeOdgovor = "c:\fiskalizator\Odgovori"
Umjesto navodnika stavi produkcijski URL, ako je "" onda se podrazumijeva testni CIS. Više: https://fiskalizacija.codeplex.com/wikipage?title=Potpisivanje%20i%20slanje%20pozivanjem%20COM%20DLL-a
Jun 17, 2013 at 12:49 PM
Jun 17, 2013 at 1:01 PM

A imaš možda asp za prijavu poslovnog prostora da se ne patim sad ako si već popeglao taj dio, ...?

Tnx.

Jun 17, 2013 at 1:12 PM

sorry, samo sam proletio i nisam vidio da postoji xml za prijavu poslovnog prostora

tnx,

M.

Jun 21, 2013 at 1:25 PM

Riješio i sve rad savršeno u testno okruženju, ali kada samuploadao FISKAL 1.P12 produkcijski certifikat, već na registraciji poslovne jedinice dobijam

System error '80131509'

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel.

Da li možda treba još neki cert instalirati na server?

M.

Jun 21, 2013 at 1:26 PM

rdcca
Jun 21, 2013 at 1:30 PM

rdcca je instaliran prilikom dizanja testnog sustava – i u testnom sve radi

. Ovo je sad drugačiji za produkciju?

Jun 21, 2013 at 2:25 PM

democacert je bio testni, zar ne?
Coordinator
Jun 21, 2013 at 2:27 PM
Jun 21, 2013 at 4:25 PM

da

Jan 17, 2015 at 3:54 PM
Coax, jedno pitanje.
Kako si riješio kreiranje xml-a kada imaš više stopa poreza u jednom računu?
Jan 17, 2015 at 7:07 PM
Jednostavno, napraviš novi SQL query na mjestu XML-a gdje trebaš prikazati porez i u tom queriju izvučeš iz baze porez+neto cijenu i grupiraš po porezu, pa preko arraya ispišeš u XML.
Jan 17, 2015 at 10:01 PM
ok, i onda dobijem ovo:
<tns:Pdv>
      <tns:Porez>
        <tns:Stopa>13.00</tns:Stopa>
        <tns:Osnovica>90.00</tns:Osnovica>
        <tns:Iznos>11.70</tns:Iznos>
        <tns:Stopa>25.00</tns:Stopa>
        <tns:Osnovica>384.00</tns:Osnovica>
        <tns:Iznos>96.00</tns:Iznos>
      </tns:Porez>
    </tns:Pdv>
Ali istovremeno dobijem i poruku
Poruka nije u skladu s XML shemom : cvc-complex-type 2.4: in element {http://www.apis-it.hr/fin/2012/types/f73}Porez of type {http://www.apis-it.hr/fin/2012/types/f73}PorezType, found (in namespace http://www.apis-it.hr/fin/2012/types/f73), but next item should be end-element Šifra greške: s001
Jan 17, 2015 at 10:07 PM
Edited Jan 17, 2015 at 10:07 PM
Riješio.

<tns:Pdv>
<tns:Porez>
    <tns:Stopa>13.00</tns:Stopa>
    <tns:Osnovica>90.00</tns:Osnovica>
    <tns:Iznos>11.70</tns:Iznos>
</tns:Porez>
<tns:Porez>
     <tns:Stopa>25.00</tns:Stopa>
    <tns:Osnovica>384.00</tns:Osnovica>
    <tns:Iznos>96.00</tns:Iznos>
</tns:Porez>
</tns:Pdv>