Błąd przy wysyłce do ksef-test.mf.gov.pl/api/online/Session/InitToken

0

Wysyłam plik InitSessionTokenRequest.xml do ksef-test.mf.gov.pl/api/online/Session/InitToken i otrzymuje błąd {"exceptionCode":21401,"exceptionDescription":"Dokument nie jest zgodny ze schemą (xsd)." Może ktoś juz to przerabiał
skrypt do wysyłki

//--------------
curl_setopt($ch, CURLOPT_URL, 'https://ksef-test.mf.gov.pl/api/online/Session/InitToken');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS,  base64_encode(file_get_contents('InitSessionTokenRequest.xml'))  );
  $headers = array(
    'accept: application/json',
    'Content-Type: application/octet-stream'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//----------------

plik InitSessionTokenRequest.xml
NIP -> wstawiam nip
TOKEN -> wstawiam token

//---------------

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:InitSessionTokenRequest
	xmlns="http://ksef.mf.gov.pl/schema/gtw/svc/online/types/2021/10/01/0001"
	xmlns:ns2="http://ksef.mf.gov.pl/schema/gtw/svc/types/2021/10/01/0001"
	xmlns:ns3="http://ksef.mf.gov.pl/schema/gtw/svc/online/auth/request/2021/10/01/0001">
	<ns3:Context>
		<Challenge>20230810-CR-446290B758-0E0FB77B85-6B</Challenge>
		<Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
			<ns2:Identifier>NIP</ns2:Identifier>
		</Identifier>
		<DocumentType>
			<ns2:Service>KSeF</ns2:Service>
			<ns2:FormCode>
				<ns2:SystemCode>FA (1)</ns2:SystemCode>
				<ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
				<ns2:TargetNamespace>http://crd.gov.pl/wzor/2021/11/29/11089/</ns2:TargetNamespace>
				<ns2:Value>FA</ns2:Value>
			</ns2:FormCode>
		</DocumentType>
		<Encryption>
			<ns2:EncryptionKey>
				<ns2:Encoding>Base64</ns2:Encoding>
				<ns2:Algorithm>AES</ns2:Algorithm>
				<ns2:Size>256</ns2:Size>
				<ns2:Value>Kmrs/g9ZjI5lKDoMukGDMDULgvx0BkZ6qHEazLLo+LmzK4FNhNp4owcPioydkuiJE02norz5P5hjFO+SMO9kgtPji0Qjx57B+o6tKMUlL6EA3nn40+JNkZuvW+hUnEt7/kxZCcjxEXTuLpQuANwovUxdej041nKRY+sthBEDb3gN4pzJ+HfACysB8H5dpvZj1MkBe7hydLCJlNkEYHYA5dO/3FnW/5fh12Be3ij7Z410+3XZT5AiteEwGCJCPdC0epM3yJgi8uZt2vqn83fgYqSqmMtXLk0ZVjTT4Z1wd2cZ3DF7tlIfoYeB2DKQiwbXAZr/W3jVzYliXBykZLC/Sg==</ns2:Value>
			</ns2:EncryptionKey>
			<ns2:EncryptionInitializationVector>
				<ns2:Encoding>Base64</ns2:Encoding>
				<ns2:Bytes>16</ns2:Bytes>
				<ns2:Value>H9KQyy/SHurlswE4pxSIsg==</ns2:Value>
			</ns2:EncryptionInitializationVector>
			<ns2:EncryptionAlgorithmKey>
				<ns2:Algorithm>RSA</ns2:Algorithm>
				<ns2:Mode>ECB</ns2:Mode>
				<ns2:Padding>PKCS#1</ns2:Padding>
			</ns2:EncryptionAlgorithmKey>
			<ns2:EncryptionAlgorithmData>
				<ns2:Algorithm>AES</ns2:Algorithm>
				<ns2:Mode>CBC</ns2:Mode>
				<ns2:Padding>PKCS#7</ns2:Padding>
			</ns2:EncryptionAlgorithmData>
		</Encryption>
		<Token>TOKEN</Token>
	</ns3:Context>
</ns3:InitSessionTokenRequest>
0

Dziwi mnie niska i znikoma aktywność open source dla tematów związanych z państwowymi API. Zebrała by się grupa programistów, napisała by dobry wrapper dla Java, C# i Python i było by pozamiatane. Zamiast tego każdy dev z Januszsoftu pisze własną implementacje. Tym niestety różnimy się od amerykanów, oni potrafią współdziałać...

Pobierz schemę, wrzuć XML i schemę w jakiś walidator online, powie Ci dokładnie które elementy dokumenty nie pasują. Bardzo prosto jest również napisać sobie taki walidator samodzielnie.

0
0xmarcin napisał(a):

Dziwi mnie niska i znikoma aktywność open source dla tematów związanych z państwowymi API. Zebrała by się grupa programistów, napisała by dobry wrapper dla Java, C# i Python i było by pozamiatane. Zamiast tego każdy dev z Januszsoftu pisze własną implementacje. Tym niestety różnimy się od amerykanów, oni potrafią współdziałać...

Pobierz schemę, wrzuć XML i schemę w jakiś walidator online, powie Ci dokładnie które elementy dokumenty nie pasują. Bardzo prosto jest również napisać sobie taki walidator samodzielnie.

Schema pobrana jest ze strony ministerstwa

0
pablo81 napisał(a):
0xmarcin napisał(a):

Dziwi mnie niska i znikoma aktywność open source dla tematów związanych z państwowymi API. Zebrała by się grupa programistów, napisała by dobry wrapper dla Java, C# i Python i było by pozamiatane. Zamiast tego każdy dev z Januszsoftu pisze własną implementacje. Tym niestety różnimy się od amerykanów, oni potrafią współdziałać...

Pobierz schemę, wrzuć XML i schemę w jakiś walidator online, powie Ci dokładnie które elementy dokumenty nie pasują. Bardzo prosto jest również napisać sobie taki walidator samodzielnie.

Schema pobrana jest ze strony ministerstwa

Walidacja na tej strony zrzut pliku który dołączyłem InitSessionTokenRequest.xml to jest własnie wzorcowy plik zmieniam tylko NIP i TOKEN

0

Wklej wartość tokena który wrzucasz

0
Panczo napisał(a):

Wklej wartość tokena który wrzucasz

token powstaje w ten sposób
tokenMaster -> token wygenerowany na stronie https://ksef-test.mf.gov.pl/

$dataToEncrypt = $tokenMaster.'|'.strtotime($challenge->timestamp)*1000;
openssl_public_encrypt($dataToEncrypt, $encryptedData, $publicKey);
$token = base64_encode($encryptedData);

uN0NpQEPYse0xVJOsUfLBeG9TOdhQF79Q27d/m5DGjRTosTlF1kLRF4GIfRT7F8gSY8nRGaBB4SW6MLUDUh0wKjtbBiSCPI4p8ItLXygEp/RFHvlyabZ0XhckM9we/CJWqFxMWlI4ZgxY8g1yRx0JCebNsrYQX9DBT1ui3XBkVxIxpQduylCjHvAlQRRJwFMokTFE5/lMdTvAEOXGAnuEB/pxKKfi3afrPt6Tt3zAzEucaTaC/bEwZl8Juqa1VoK4d3yScejUJm3bIP0c9uGsfl57hyDkX7FXSDcfS+8vEOFoUTNsELgmDPDZJsimReqpDq7xSDIP2jv01lSX/KTdQ==

0

Jeżeli nip jest prawidłowy to jedyne co widzę, a puść tego xmla bez encodowania do base64:

curl_setopt($ch, CURLOPT_POSTFIELDS,  file_get_contents('InitSessionTokenRequest.xml'));
0
Panczo napisał(a):

Jeżeli nip jest prawidłowy to jedyne co widzę, a puść tego xmla bez encodowania do base64:

curl_setopt($ch, CURLOPT_POSTFIELDS,  file_get_contents('InitSessionTokenRequest.xml'));

Próbowałem tego: zwrotka Nieprawidłowo zaszyfrowana treść.

0
pablo81 napisał(a):

plik InitSessionTokenRequest.xml
NIP -> wstawiam nip
TOKEN -> wstawiam token

Nie zapomniałeś o podstawieniu Challenge otrzymanego z AuthorisationChallenge?

0
Rezo napisał(a):
pablo81 napisał(a):

plik InitSessionTokenRequest.xml
NIP -> wstawiam nip
TOKEN -> wstawiam token

Nie zapomniałeś o podstawieniu Challenge otrzymanego z AuthorisationChallenge?

Wstawiam tez Chalange

1 użytkowników online, w tym zalogowanych: 0, gości: 1