[php] Halcom web service

Imam malce težav pri implementiranju njihovega servisa v php skripto.

Šele spoznavam se z web servici, soap itd pa bi prosil za malce pomoči.

Tukaj so prisotni primeri v drugih jezikih, če najbolj mi je jasen primer iz Jave, vendar nekako ne znam prevesti v php. Objavljena je tudi dokumentacija ter wsdl fajli, ampak kot rečeneno mi ni najbolj jasno vse skupaj.

Kaj je tukaj pravi naslov, kamor moram poslati prvi zahtevek? Katera je prava matoda, ki sprejme podatke in katera jih vrne. Katere podatke sploh moram poslati? Pred uporabo so zahtevali certifikat, ki je na strežniku. Kaj moram poslati in v kakšni obliki, da se pravilno indentificiram?

Vsa ta vprašanja sem poslal že na njihov naslov, vendar imam občutek da bom tukaj pred dobil odgovor =) Brez težav že uporabljam Bisnode web service za pridobivanje podatkov o poslovnih subjktih ter Ajpesov service za pridobivanje podatkov o digitalnih potrdilih, kjer je bilo vse veliko bolj jasno razloženo.

Hvala!

6 odgovorov

Najprej moraš pri njih registrirati digitalno potrdilo s katerim boš dostopal do storitve za preverjanje digitalnih potrdil.
Se mi zdi, da nazadnje, ko sem to počel je bilo potrebno poslati javni ključ, da te dodajo, potem pa lahko uporabljaš.

To je bilo že urejeno.

Sedaj sem prišel do točke, ko njihov servis dejansko vrne odgovor, vendar pa ne glede na to, kaj pošljem dobim napako, ki pravi da je nekaj šlo narobe pri branju certifikata (tistega, ki ga hočem preveriti).

V uradni dokumentaciji piše, da funkcija sprejme X.509 digitalno potrdilo v DER obliki vendar zavrača karkoli že pošljem =)

Če ti slučajno kaj pomaga jaz v C# pošiljam tri parametre za getCertificateInfo to so actionPolicy = "empty", other = "empty" in certificate, ki je base64 kodiran raw binary (v request XML, ki ga POST-neš na storitev je to torej enkrat kodirano v base64, preveri, da nimaš dvakrat kodirano).

1

Torej, jaz od uporabnika dobim nekaj podobnega:

-----BEGIN CERTIFICATE-----
MIIG+TCCBeGgAwIBAgIQBBlAp6/4UpAv4h9Ul8pCczANBgkqhkiG9w0BAQsFADBH
MQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMX
R2VvVHJ1c3QgRVYgU1NMIENBIC0gRzQwHhcNMTUwMTE2MDAwMDAwWhcNMTcwNDE2
MjM1OTU5WjCB6DETMBEGCysGAQQBgjc8AgEDEwJTSTEdMBsGA1UEDxMUUHJpdmF0
ZSBPcmdhbml6YXRpb24xEzARBgNVBAUTCjYwMTYxNDYwMDAxCzAJBgNVBAYTAlNJ
MQ8wDQYDVQQIFAZWb2RpY2UxDzANBgNVBAcUBlZvZGljZTE3MDUGA1UEChQuQk9S
WkEgVEVSSkFURVYsIHRyZyBwb3Nsb3ZuaWggdGVyamF0ZXYsIGQuby5vLjEWMBQG
A1UECxQNSVQgZGVwYXJ0bWVudDEdMBsGA1UEAxQUd3d3LmJvcnphdGVyamF0ZXYu
c2kwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMi2kh04LrDWCBoC+T
fzeiEISh1bQJaXzebbgEaP+MYmc8ATrhtw9ebpaXAe+SRASrglKfe+sS/SBq/PGu
8ILS+uOErjcIc5053VbEri4TZ8spx8M8MPkljrmzrEVxtAINiIPAZYj1B9QkG6gE
DGTIBZBhqdPRgTb3+7viASvSkVcm/Xbe7JH0tKilfIRoVSl9MlxZiYpe6p9clGP2
ABcK+7WbpHfBNbJ8BVXlaKrAkbQB/cLtOpJwn7ARKl7dxNpnJW6eeJF75p3EDru4
guyUZv6R0ibZvfKxZkJp+O15MIv5B7PYu4eaU8Tnfy+xYCsB5r6cqpySRbLUK7Ta
TeY3AgMBAAGjggM9MIIDOTAxBgNVHREEKjAoghR3d3cuYm9yemF0ZXJqYXRldi5z
aYIQYm9yemF0ZXJqYXRldi5zaTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIFoDAr
BgNVHR8EJDAiMCCgHqAchhpodHRwOi8vZ20uc3ltY2IuY29tL2dtLmNybDCBoAYD
VR0gBIGYMIGVMIGSBgkrBgEEAfAiAQYwgYQwPwYIKwYBBQUHAgEWM2h0dHBzOi8v
d3d3Lmdlb3RydXN0LmNvbS9yZXNvdXJjZXMvcmVwb3NpdG9yeS9sZWdhbDBBBggr
BgEFBQcCAjA1DDNodHRwczovL3d3dy5nZW90cnVzdC5jb20vcmVzb3VyY2VzL3Jl
cG9zaXRvcnkvbGVnYWwwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMB8G
A1UdIwQYMBaAFN7PXFC3rgIfFReqFugNtSidalrzMFcGCCsGAQUFBwEBBEswSTAf
BggrBgEFBQcwAYYTaHR0cDovL2dtLnN5bWNkLmNvbTAmBggrBgEFBQcwAoYaaHR0
cDovL2dtLnN5bWNiLmNvbS9nbS5jcnQwggF+BgorBgEEAdZ5AgQCBIIBbgSCAWoB
aAB2AKS5CZC0GFgUh7sTosxncAo8NZgE+RvfuON3zQ7IDdwQAAABSvH4g60AAAQD
AEcwRQIgCqQoUQCytATXLa4leV3WlhAfTjF/q5vmai5opN5G5VkCIQCp1k2xGMl8
fvoJXGD9/hqbH+MXz7wehFY4PFVPzzvrpwB1AFYUBpov18Ls0/XhvUSyPsdGdrm8
mRFcwO+UmFXWidDdAAABSvH4hccAAAQDAEYwRAIgQt1qqVW9+XodajViS2C2Il5/
Lh5l9wE/J2e7Wb0BNfMCIEG/f3g8W3jndMT2zRI8QVmXjsb/3YDO44ui7009+o6g
AHcAaPaY+B9kgr46jO65KB1M/HFRXWeT1ETRCmesu09P+8QAAAFK8fiDygAABAMA
SDBGAiEAhiXE7QDBzr20FgqLqYVB36mRaAmHvXla+r3XJtmEzDACIQDFbHDjW42s
cEw5gavl7HZzPPyCyLpvtXfO44eZw/TRUDANBgkqhkiG9w0BAQsFAAOCAQEAi3Nx
7kX/xN1NrfWYUernQgCBFR/eHCIvvNL5i0LIP8BBf3k1OdVfMAsUIibxkXoZD/XR
2NYqpNT9gnbUSmLIB0DeQwenz9UQ3Ql9gB6hUlNAChVtzqAd2TocDmLgsAgqcuxz
D+6rw13iv0atpWpGOkir7zW4RqJ74kqW+7wFHKCvvTEyeeMAE5pDL5zk1XC0Pech
8XwNGgPIriEtNaf8ouOwsn+uPpg4Vx8fywdzRj4hnCz+Zp5iP5BwuguI0mYbJEGW
QthDR0h9yFYX/J5pFDa+kemJtLA1SeydyUmn6wirbgCicL/MaI8kxHuvRGlcPkSk
RVxw/9WTiAFGKDb9jg==
-----END CERTIFICATE-----

Če odstranim BEGIN ter END ter vržem v base64_encode funkcijo, bi to moralo biti to? A sem čisto narobe razumel?

Ker v tem primeru vrne error "AR00101 Error parsing certificate".

Poskusil sem zgornji string poslati že brez vmesnega kodiranja, pa najprej parsat podatke ven pa potem kodirat ... pa vedno isto. Verjetno ker nisem še najbolj domač v tem =)

Hvala za pomoč.

Se mogoče komurkoli sanja?

Imajo recimo objavljen primer v Javi: https://ws.halcom.si/java/CertificateInfoSample.java vendar se tukaj še manj znajdem. Bi znal tole kdo prevesti v php?

Če daš BEGIN pa END stran je to že base64 kodiran binary in ti ni potrebno še enkrat kodirati.
Kako pa potem pošlješ to na webservis, da ti potem še kakšen SoapClient interno ne zakodira tega parametra base64?
V kolikor ti že client zakodira bi bil lahko postopek sledeč:
1. BEGIN pa END stran
2. base64_decode, da dobiš raw
3. potem pa parametru v zahtevku assignaš tale raw cert

2