Jak wysłać FV do KSeF?

0

Witajcie,

Mam pytanko próbuję zapisać FV na KSeF i utknąłem

import requests
import json
import base64
import hashlib

# Zmienne wejściowe
url = 'https://ksef-test.mf.gov.pl/api/online/Invoice/Send'
session_token = '<<TOKEN_DO_TESTOWKI>>'

# Wczytanie zawartości pliku XML
with open('FV.xml', 'r', encoding='utf-8') as file:
    faktura2 = file.read()

# Generowanie danych JSON
invoice_hash = {
    "fileSize": len(faktura2),
    "hashSHA": {
        "algorithm": "SHA-256",
        "encoding": "Base64",
        "value": base64.b64encode(hashlib.sha256(faktura2.encode('utf-8')).digest()).decode('utf-8')
    }
}

invoice_payload = {
    "invoiceBody": base64.b64encode(faktura2.encode('utf-8')).decode('utf-8'),
    "type": 'plain'
}

data = {
    "invoiceHash": invoice_hash,
    "invoicePayload": invoice_payload
}

headers = {
    'accept': 'application/json',
    'SessionToken': session_token,
    'Content-Type': 'application/json'
}

# Wysyłanie żądania HTTP PUT
response = requests.put(url, data=json.dumps(data), headers=headers)

# Przetwarzanie odpowiedzi
print(response.status_code)
print(response.json())


ciągle zwraca mi taki kod błędu:

400
{'exception': {'serviceCtx': 'default', 'serviceCode': '20231120-EX-4DF5E579F7-BBF24BD286-22', 'serviceName': 'online.invoice.invoice.send', 'timestamp': '2023-11-20T19:43:02.122Z', 'exceptionDetailList': [{'exceptionCode': 21149, 'exceptionDescription': 'Brak sesji.'}]}}

FV na bank poprawna ale nie do końca kumam co robię źle. Podpowiecie?

2

Token (ten który zapewne wygenerowałeś w aplikacji KSeF) i session token to dwie różne rzeczy. Tokenu używasz żeby przy pomocy wyzwania autoryzacyjnego (/online/Session/AuthorisationChallenge) otworzyc sesję interaktywną (/online/Session/InitToken) i dostac session token. Wtedy możesz wysyłac faktury.

0

screenshot-20231120212025.png

s = requests.session()
s.headers += headers

response = s.put(url, data=json.dumps(data))

Tak mi przyszło do głowy xd może zadziała

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