Walczę dalej.
Cel - uzyskanie Tokena sesyjnego.
Funkcją w JavaScript generuje token(tymczasowy)
const CryptoJS = require("crypto-js");
const NodeRSA = require('node-rsa');
function encrypt(token, timestamp) {
const e = 65537;
const n = '23406442688142992831583759844756089133712844262268877557835948537922690131301917528010472072980030525243164470704153404706424073919594735631248793604990149775500839426627798421278024993358446037655350061463757500035940998380555904273595946307684093782369149356087903235522664351435055995896215926900834823274455240788124709945700300545915276090426078078411011846599277153583946003396302217817245249811336711552038275781604699852026576581228046084296276086185170885235268125033156936166764556520982537544722946490123310277292524709687907821731708318317794956326577863648319840338909808057410474707559952504063561704659';
// Łączenie tokena i znacznika czasu w jedną wiadomość tekstową
const text = token + '|' + timestamp;
console.log('Wiadomość do zaszyfrowania:', text);
// Tworzenie klucza RSA
const key = new NodeRSA();
key.importKey({
n: n,
e: e,
}, 'components-public');
// Szyfrowanie tekstu przy użyciu klucza RSA
const encryptedText = key.encrypt(text, 'base64');
console.log('Zaszyfrowana wiadomość (base64):', encryptedText);
return encryptedText;
}
// Testowanie funkcji
encrypt("AFF8F033779118507E44BEB9E27ABCD3F1615B137FB877B7B65EA7A9EC7879F7", "1714814411019");
tworzę xml-a i wrzucam do zmiennej Param
<?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>20240504-CR-CD0898508B-B15AA167D5-4F</Challenge>
<Identifier xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns2:SubjectIdentifierByCompanyType">
<ns2:Identifier>1111111111</ns2:Identifier>
</Identifier>
<DocumentType>
<ns2:Service>KSeF</ns2:Service>
<ns2:FormCode>
<ns2:SystemCode>FA (2)</ns2:SystemCode>
<ns2:SchemaVersion>1-0E</ns2:SchemaVersion>
<ns2:TargetNamespace>http://crd.gov.pl/wzor/2023/06/29/12648/</ns2:TargetNamespace>
<ns2:Value>FA</ns2:Value>
</ns2:FormCode>
</DocumentType>
<Token>ofnSdAGct1GtlvQb18sHj6cxWWD4eBc2sg0vRqwCcBtOyOjQeol8xdBMNRPNh2Xq/ukFgnv56W1q7odihZEs1d3660lzbqCdw1EE8eD3il1MdnUTilj8WpJD1r8Bm7lo7ik/YO9K2pZ304jGHKExacr/uFJ6TSCn5Tk5fJec1/AbX5pE4QuZCAbNDp7kPRC6j6NMnU+XqwPQ7togeV1Lse8GdDO2r6BRS/pZSGDV7TbUAhJoi52bOaDAvlH7hd6XIAm56RRNpIMXym+DA6AkXg0y9A1WIlOefMXnvTFeEVpP1CI3JpmE7tLYl9oT2LyKsyqQF/i7czAU8yTOeC3/2w==</Token>
</ns3:Context>
</ns3:InitSessionTokenRequest>
I puszczam go w takiej postaci nie kodując już niczym - czysty string - xml.
Nawiązanie drugiej sesji:
.Open "POST", "https://ksef-test.mf.gov.pl/Api/online/Session/InitToken", False
.setRequestHeader "Content-Type", "application/octet-stream"
.setRequestHeader "Accept", "application/json"
.send (Param)
i w odpowiedzi dostaje:
"Status : **405**"
"responseText : **HTTP method POST is not supported by this URL**"
Nie mam pojęcia czemu method POST is not supported, to jakaś bzdura.
Co robię nie tak?
Pomóżcie proszę.