Zamjena Demo za Produkcijski certifikat

Feb 10, 2013 at 2:53 PM
Instalirao sam democacert.cer i DemoCert.pfx i testirao svoju aplikaciju koja je rađena u MS Accessu 2003.
Sada bih trebao prelaz na pravi rad
Imam originalni certifikat Fiskaj1.p12.
Što sada. dali trebam deinstalirati demo cerufikate i instalirati ovaj pravi, odnosno kako će aplikacija prepoznati koji cerifikat koristiti
Feb 10, 2013 at 4:33 PM
Edited Feb 10, 2013 at 4:34 PM
Ja u aplikaciji kroz parametre određujem da li je aplikacija u demo/produkcijskom načinu rada i onda isto tako iz parametara očitam putanju do važećeg certifikata i servera za spajanje.
Coordinator
Feb 10, 2013 at 5:11 PM
Edited Feb 10, 2013 at 5:15 PM
amalthea wrote:
Ja u aplikaciji kroz parametre određujem da li je aplikacija u demo/produkcijskom načinu rada i onda isto tako iz parametara očitam putanju do važećeg certifikata i servera za spajanje.
To je dobra metoda.
Preko parametara /public property/ moraš znati da li je aplikacija u testu i produkciji i pri dohvatu certifikata koristiš certifikat koji je za test ili produkciju.
Naravno, treba napomenuti da u tom slučaju treba koristiti metodu
public static X509Certificate2 DohvatiCertifikat(string certifikatDatoteka, string zaporka)
koja dohvaća certifikat iz datoteke, a ne metodu
  public static X509Certificate2 DohvatiCertifikat(string certificateSubject, StoreLocation storeLocation, StoreName storeName)
koja dohvaća certifikat iz storea, jer u slučaju da se radi o produkcijskom ili testnom okruženju, oba certifikata imaju naziv FISKAL 1 pa ta metoda neće znati koji certifikat koristiti.

Demo i produkcijski ROOT certifikat mogu biti istovremeno na stroju (a morali bi biti ako se koristi ovakav način rada) i nema nikakvih problema da su oni u jednom trusted root direktoriju.

@pmiroslav, najbolje ti je da napravis funkciju tipa x509certificate2, koja će u ulaznim parametrima imati bool varijablu "prod" true|false, a vraćati kao izlaz objekt x509certificate2, generiran na osnovu ulazne varijable, čitan iz različitih datoteka (pfx), također po ulaznoj varijabli.
Naravno, pri pozivu ove funkcije, mijenjaš i adresu Cis servera, tako da ti generirani produkcijski certifikat odgovara propertiju produkcijskog servisa i obratno.
Feb 10, 2013 at 5:58 PM
U svojoj aplikaciji iskoristio sam kod koji sam pronašao na linku

TEXT
Private Sub C_PosProstor_Click()
On Error GoTo Err_C_PosProstor_Click

Call PosaljiPoslovniProstor(Me.OIB, "PP1", Me.Adresa, Me.KucniBr, Me.KucniBrDodatak, Me.PostBroj, Me.Mjesto, Me.Mjesto, Me.RadnoVrijeme, "01.01.2013", " ", " ")

Exit_C_PosProstor_Click:
    Exit Sub
Err_C_PosProstor_Click:
    MsgBox err.Description
    Resume Exit_C_PosProstor_Click
End Sub
Sub PosaljiPoslovniProstor(OIB As String, OznakaPoslovnogProstora As String, Ulica As String, Kbr As String, DodatakKbr, BrojPoste As String, Naselje As String, Opcina As String, RadnoVrijeme As String, DatumPocetkaPrimjene As String, OznakaZatvaranja As String, SpecificnaNamjena As String)
    
    Dim o
    Dim datumVrijeme As String
    datumVrijeme = Format(Now, "dd.MM.yyyyTHH:mm:ss")
    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"
    Dim xml As String
    xml = "<?xml version=""1.0"" encoding=""utf-8""?>" + _
        "<tns:PoslovniProstorZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" + _
        "<tns:Zaglavlje><tns:IdPoruke>" + o.generirajuuid() + "</tns:IdPoruke>" + _
        "<tns:DatumVrijeme>" + datumVrijeme + "</tns:DatumVrijeme>" + _
        "</tns:Zaglavlje><tns:PoslovniProstor><tns:Oib>" + OIB + "</tns:Oib>" + _
        "<tns:OznPoslProstora>" + OznakaPoslovnogProstora + "</tns:OznPoslProstora>" + _
        "<tns:AdresniPodatak><tns:Adresa><tns:Ulica>" + Ulica + "</tns:Ulica>" + _
        "<tns:KucniBroj>" + Kbr + "</tns:KucniBroj>" + _
        "<tns:KucniBrojDodatak>""</tns:KucniBrojDodatak>" + _
        "<tns:BrojPoste>" + BrojPoste + "</tns:BrojPoste>" + _
        "<tns:Naselje>" + Naselje + "</tns:Naselje>" + _
        "<tns:Opcina>" + Opcina + "</tns:Opcina>" + _
        "</tns:Adresa></tns:AdresniPodatak><tns:RadnoVrijeme>" + RadnoVrijeme + "</tns:RadnoVrijeme>" + _
        "<tns:DatumPocetkaPrimjene>" + DatumPocetkaPrimjene + "</tns:DatumPocetkaPrimjene></tns:PoslovniProstor></tns:PoslovniProstorZahtjev>"
    
    Dim odgovor

    On Error Resume Next
    err.Clear
    odgovor = o.PosaljiSoapPoruku(xml, "FISKAL 1")
    If err.Number <> 0 Then
        MsgBox o.DohvatiGresku(o.OdgovorGreska)
    End If
    On Error GoTo 0
    'MsgBox odgovor
MsgBox "Gotovo"
    err.Clear
    On Error Resume Next   
End Sub
nije mi jasno dali u liniji koda
o.CisUrl = ""
unutar navodnika treba staviti link do CIS servera

također u ovom dijelu

odgovor = o.PosaljiSoapPoruku(xml, "FISKAL 1")

dali umjesto FISKAL 1 treba upisati nešto drugo.
Feb 10, 2013 at 6:20 PM
da, unutar navodnika navodiš putanju do CIS-a porezne uprave, inače će ići na tesni server.
i da, kao što je dkustec gore napisao, ako imaš oba certifikata instalirana i dohvaćaš ih iz storea, onda je najbolje deinstalirati demo, budući da se oba najvjerojatnije zovu isto (FISKAL 1).
Ali možeš koristiti i metodu potpisivanja s navođenjem putanje do certifikata + password pa onda navedeš putanju do produkcijskog certifikata s pripadajućim pwd
odgovor = o.PosaljiSoapPorukuCertifikatDatoteka(xml,"D:\Users\Nino\Desktop\Fiskalizacija\MojCert.pfx","PASSWORD")
Feb 10, 2013 at 6:28 PM
Hvala na ovome.
A koja je putanja do CIS-a porezne uprave.
Feb 10, 2013 at 6:35 PM
Feb 10, 2013 at 6:44 PM
thank you
Coordinator
Feb 10, 2013 at 7:22 PM
Edited Feb 10, 2013 at 7:32 PM
Miroslave, ovaj kod ti neće raditi dobro... radi ovoga:
"<tns:KucniBrojDodatak>""</tns:KucniBrojDodatak>" + _
Kada koristis string concatenation umjesto serijalizacije, ovaj xml node će se slati na CIS, a podatak koji sadrži ne smije biti prazan, što će prouzročiti da ti XML ne bude ispravan.
Kada u XML-u nema dodatka kućnom broju, ovaj node se uopće ne upisuje u XML, što u tvojem primjeru nije dobro, jer se uvijek upisuje u XML pa čak i kada nema podatka o dodatku kućnog broja.

Ako ti slanje pukne radi ovog problema, definiraj si XML string ovako:
xml = "<?xml version=""1.0"" encoding=""utf-8""?>" + _
        "<tns:PoslovniProstorZahtjev xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Id=""signXmlId"" xmlns:tns=""http://www.apis-it.hr/fin/2012/types/f73"">" + _
        "<tns:Zaglavlje><tns:IdPoruke>" + o.generirajuuid() + "</tns:IdPoruke>" + _
        "<tns:DatumVrijeme>" + datumVrijeme + "</tns:DatumVrijeme>" + _
        "</tns:Zaglavlje><tns:PoslovniProstor><tns:Oib>" + OIB + "</tns:Oib>" + _
        "<tns:OznPoslProstora>" + OznakaPoslovnogProstora + "</tns:OznPoslProstora>" + _
        "<tns:AdresniPodatak><tns:Adresa><tns:Ulica>" + Ulica + "</tns:Ulica>" + _
        "<tns:KucniBroj>" + Kbr + "</tns:KucniBroj>" + _
        Iif(DodatakKbr="", nothing, "<tns:KucniBrojDodatak>" + DodatakKbr + "</tns:KucniBrojDodatak>") + _
        "<tns:BrojPoste>" + BrojPoste + "</tns:BrojPoste>" + _
        "<tns:Naselje>" + Naselje + "</tns:Naselje>" + _
        "<tns:Opcina>" + Opcina + "</tns:Opcina>" + _
        "</tns:Adresa></tns:AdresniPodatak><tns:RadnoVrijeme>" + RadnoVrijeme + "</tns:RadnoVrijeme>" + _
        "<tns:DatumPocetkaPrimjene>" + DatumPocetkaPrimjene + "</tns:DatumPocetkaPrimjene></tns:PoslovniProstor></tns:PoslovniProstorZahtjev>"
Obrati pažnju na liniju:
 Iif(DodatakKbr="", nothing, "<tns:KucniBrojDodatak>" + DodatakKbr + "</tns:KucniBrojDodatak>") 
Feb 11, 2013 at 6:13 AM
Edited Feb 11, 2013 at 6:26 AM
Dali linaja 'KucniBrojDodatak' uopće treba biti u kodu ako adresa nema dodatak kućnog broja?

Upravo sam probao ovaj prijedlog sa

Iif(DodatakKbr="", nothing, ...

To mi vrača grešku 'Invalid use of null'
Feb 11, 2013 at 9:10 AM
Edited Feb 11, 2013 at 9:11 AM
Ako nema dodatka, potpuno izbaci taj element.

ne znam u kojem alatu radiš, ne podnose svi null

if not isnull(DodatakKbr) or trim(DodatakKbr) <> "" then
--->dodaš u xml
end if
Feb 11, 2013 at 9:36 AM
Na početku sam rekao radim u ms accessu 2003. (VBA)
Feb 11, 2013 at 9:58 AM
probaj onda s ovim što sam napisala.
znači, samo ako vrijednost polja nije null, odnosno ako nije prazan string, onda dodaj taj dodatak u shemu, inače bez.