Witam,
Tworzę sesje, wysyłam fakturę ale gdy chce sprawdzić status sesji czy status faktury to pisze mi ciągle brak sesji ? Co może być przyczyną ?
Ten sam komunikat gdy chce zakończyć sesję
Nagłówki tylko Accept
oraz SessionToken
coś jeszcze powinno być ?
def inittoken(url,challenge,nip_value,encrypted_data):
xml_string = '''<?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>{challenge}</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 (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>{token}</Token>
</ns3:Context>
</ns3:InitSessionTokenRequest>'''
xml_string = xml_string.format(challenge=challenge, nip=nip_value, token=encrypted_data)
headers = {
'Content-Type': 'application/octet-stream',
'Accept': 'application/json' #
}
# Wysłanie żądania POST z danymi XML jako ciągu znaków
response = requests.post(url, data=xml_string, headers=headers)
# Sprawdzenie odpowiedzi
if response.status_code == 201:
print("Sukces!")
jsonResponse = response.json()
return jsonResponse
else:
print(f"Błąd {response.status_code}: {response.text}")
tym wysyłam
zwrotka:
{'timestamp': '2023-12-20T14:19:03.583Z', 'referenceNumber': '20231220-SE-C5B2312210-9DCCF9BEB9-E4', 'processingCode': 100, 'processingDescription': 'Proces został zarejestrowany.', 'elementReferenceNumber': '20231220-EE-D66CA941B0-2002A10A1D-DB'}
zapytanie o Invoice/status
def nrKsef(url,ref_nr,token):
headers = {
'Accept': 'application/json',
'SessionToken' : token
}
url= url +'/'+ref_nr
try:
response = requests.get(url, headers=headers)
response.raise_for_status() # Rzuć wyjątek w przypadku błędu HTTP
jsonResponse = response.json()
return jsonResponse
except requests.exceptions.RequestException as e:
print(f'Błąd podczas wysyłania żądania: {e}')
jsonResponse = response.json()
return jsonResponse
except json.JSONDecodeError as e:
print(f'Błąd podczas parsowania odpowiedzi JSON: {e}')
zwrotka:
Błąd podczas wysyłania żądania: 400 Client Error: Bad Request for url: https://ksef.mf.gov.pl/api/online/Invoice/Status/20231220-SE-4B222C6D0D-33672399BA-04
{'exception': {'serviceCtx': 'default', 'serviceCode': '20231220-EX-E2B4F3A521-B99DF55DE6-FF', 'serviceName': 'online.invoice.invoice.status', 'timestamp': '2023-12-20T15:09:23.286Z', 'exceptionDetailList': [{'exceptionCode': 21149, 'exceptionDescription': 'Brak sesji.'}]}}
podaje ten sam token tu i tu