>>> from fints.parser import FinTS3Parser
>>> s = FinTS3Parser().parse_message(message)
>>> s
- SegmentSequence([fints.segments.HNHBK3(header=fints.formals.SegmentHeader('HNHBK', 1, 3), message_size='000000000428', hbci_version=300, dialogue_id='430711670077=043999659571CN9D=', message_number=2, reference_message=fints.formals.ReferenceMessage(dialogue_id='430711670077=043999659571CN9D=', message_number=2)), fints.segments.HNVSK3(header=fints.formals.SegmentHeader('HNVSK', 998, 3), security_profile=fints.formals.SecurityProfile(security_method='PIN', security_method_version=1), security_function='998', security_role='1', security_identification_details=fints.formals.SecurityIdentificationDetails(name_party='2', cid=None, identifier_party='oIm3BlHv6mQBAADYgbPpp+kWrAQA'), security_datetime=fints.formals.SecurityDateTime(datetime_type='1'), encryption_algorithm=fints.formals.EncryptionAlgorithm(usage_encryption='2', operation_mode='2', encryption_algorithm='13', algorithm_parameter_value=b'00000000', algorithm_parameter_name='5', algorithm_parameter_iv_name='1'), key_name=fints.formals.KeyName(bank_identifier=fints.formals.BankIdentifier(country_identifier='280', bank_code='15050500'), user_id='hermes', key_type='S', key_number=0, key_version=0), compression_function='0'), fints.segments.HNVSD1(header=fints.formals.SegmentHeader('HNVSD', 999, 1), data=SegmentSequence([fints.segments.HNSHK4(header=fints.formals.SegmentHeader('HNSHK', 2, 4), security_profile=fints.formals.SecurityProfile(security_method='PIN', security_method_version=1), security_function='999', security_reference='9166926', security_application_area='1', security_role='1', security_identification_details=fints.formals.SecurityIdentificationDetails(name_party='2', cid=None, identifier_party='oIm3BlHv6mQBAADYgbPpp+kWrAQA'), security_reference_number=1, security_datetime=fints.formals.SecurityDateTime(datetime_type='1'), hash_algorithm=fints.formals.HashAlgorithm(usage_hash='1', hash_algorithm='999', algorithm_parameter_name='1'), signature_algorithm=fints.formals.SignatureAlgorithm(usage_signature='6', signature_algorithm='10', operation_mode='16'), key_name=fints.formals.KeyName(bank_identifier=fints.formals.BankIdentifier(country_identifier='280', bank_code='15050500'), user_id='hermes', key_type='S', key_number=0, key_version=0)), fints.segments.HIRMG2(header=fints.formals.SegmentHeader('HIRMG', 3, 2), responses=[fints.formals.Response(code='0010', reference_element=None, text='Nachricht entgegengenommen.'), fints.formals.Response(code='0100', reference_element=None, text='Dialog beendet.')]), fints.segments.HNSHA2(header=fints.formals.SegmentHeader('HNSHA', 4, 2), security_reference='9166926')])), fints.segments.HNHBS1(header=fints.formals.SegmentHeader('HNHBS', 5, 1), message_number=2)])
+ SegmentSequence([fints.segments.HNHBK3(header=fints.formals.SegmentHeader('HNHBK', 1, 3), message_size='000000000428', hbci_version=300, dialog_id='430711670077=043999659571CN9D=', message_number=2, reference_message=fints.formals.ReferenceMessage(dialog_id='430711670077=043999659571CN9D=', message_number=2)), fints.segments.HNVSK3(header=fints.formals.SegmentHeader('HNVSK', 998, 3), security_profile=fints.formals.SecurityProfile(security_method='PIN', security_method_version=1), security_function='998', security_role='1', security_identification_details=fints.formals.SecurityIdentificationDetails(name_party='2', cid=None, identifier_party='oIm3BlHv6mQBAADYgbPpp+kWrAQA'), security_datetime=fints.formals.SecurityDateTime(datetime_type='1'), encryption_algorithm=fints.formals.EncryptionAlgorithm(usage_encryption='2', operation_mode='2', encryption_algorithm='13', algorithm_parameter_value=b'00000000', algorithm_parameter_name='5', algorithm_parameter_iv_name='1'), key_name=fints.formals.KeyName(bank_identifier=fints.formals.BankIdentifier(country_identifier='280', bank_code='15050500'), user_id='hermes', key_type='S', key_number=0, key_version=0), compression_function='0'), fints.segments.HNVSD1(header=fints.formals.SegmentHeader('HNVSD', 999, 1), data=SegmentSequence([fints.segments.HNSHK4(header=fints.formals.SegmentHeader('HNSHK', 2, 4), security_profile=fints.formals.SecurityProfile(security_method='PIN', security_method_version=1), security_function='999', security_reference='9166926', security_application_area='1', security_role='1', security_identification_details=fints.formals.SecurityIdentificationDetails(name_party='2', cid=None, identifier_party='oIm3BlHv6mQBAADYgbPpp+kWrAQA'), security_reference_number=1, security_datetime=fints.formals.SecurityDateTime(datetime_type='1'), hash_algorithm=fints.formals.HashAlgorithm(usage_hash='1', hash_algorithm='999', algorithm_parameter_name='1'), signature_algorithm=fints.formals.SignatureAlgorithm(usage_signature='6', signature_algorithm='10', operation_mode='16'), key_name=fints.formals.KeyName(bank_identifier=fints.formals.BankIdentifier(country_identifier='280', bank_code='15050500'), user_id='hermes', key_type='S', key_number=0, key_version=0)), fints.segments.HIRMG2(header=fints.formals.SegmentHeader('HIRMG', 3, 2), responses=[fints.formals.Response(code='0010', reference_element=None, text='Nachricht entgegengenommen.'), fints.formals.Response(code='0100', reference_element=None, text='Dialog beendet.')]), fints.segments.HNSHA2(header=fints.formals.SegmentHeader('HNSHA', 4, 2), security_reference='9166926')])), fints.segments.HNHBS1(header=fints.formals.SegmentHeader('HNHBS', 5, 1), message_number=2)])
>>> from fints.parser import FinTS3Serializer
>>> FinTS3Serializer().serialize_message(s)
b"HNHBK:1:3+000000000428+300+430711670077=043999659571CN9D=+2+430711670077=043999659571CN9D=:2'HNVSK:998:3+PIN:1+998+1+2::oIm3BlHv6mQBAADYgbPpp?+kWrAQA+1+2:2:13:@8@00000000:5:1+280:15050500:hermes:S:0:0+0'HNVSD:999:1+@195@HNSHK:2:4+PIN:1+999+9166926+1+1+2::oIm3BlHv6mQBAADYgbPpp?+kWrAQA+1+1+1:999:1+6:10:16+280:15050500:hermes:S:0:0'HIRMG:3:2+0010::Nachricht entgegengenommen.+0100::Dialog beendet.'HNSHA:4:2+9166926''HNHBS:5:1+2'"
from .exceptions import *
from .formals import (
CUSTOMER_ID_ANONYMOUS, KTI1, BankIdentifier, DescriptionRequired,
- SynchronisationMode, TANMediaClass4, TANMediaType2,
+ SynchronizationMode, TANMediaClass4, TANMediaType2,
)
from .message import FinTSInstituteMessage
from .models import SEPAAccount
with self._get_dialog(lazy_init=True) as dialog:
response = dialog.init(
- HKSYN3(SynchronisationMode.NEW_SYSTEM_ID),
+ HKSYN3(SynchronizationMode.NEW_SYSTEM_ID),
)
seg = response.find_segment_first(HISYN4)
logger = logging.getLogger(__name__)
-DIALOGUE_ID_UNASSIGNED = '0'
+DIALOG_ID_UNASSIGNED = '0'
DATA_BLOB_MAGIC = b'python-fints_DIALOG_DATABLOB'
self.open = False
self.need_init = True
self.lazy_init = lazy_init
- self.dialogue_id = DIALOGUE_ID_UNASSIGNED
+ self.dialog_id = DIALOG_ID_UNASSIGNED
self.paused = False
self._context_count = 0
raise FinTSDialogStateError("Cannot end() on a paused dialog")
if self.open:
- response = self.send(HKEND1(self.dialogue_id), internal_send=True)
+ response = self.send(HKEND1(self.dialog_id), internal_send=True)
self.open = False
def send(self, *segments, **kwargs):
for auth_mech in self.auth_mechanisms:
auth_mech.verify(message)
- if self.dialogue_id == DIALOGUE_ID_UNASSIGNED:
+ if self.dialog_id == DIALOG_ID_UNASSIGNED:
seg = response.find_segment_first(HNHBK3)
if not seg:
- raise FinTSDialogError('Could not find dialogue_id')
- self.dialogue_id = seg.dialogue_id
+ raise FinTSDialogError('Could not find dialog_id')
+ self.dialog_id = seg.dialog_id
self.client.process_response_message(self, response, internal_send=internal_send)
raise FinTSDialogStateError("Cannot call new_customer_message() on a paused dialog")
message = FinTSCustomerMessage(self)
- message += HNHBK3(0, 300, self.dialogue_id, self.next_message_number[message.DIRECTION])
+ message += HNHBK3(0, 300, self.dialog_id, self.next_message_number[message.DIRECTION])
for auth_mech in self.auth_mechanisms:
auth_mech.sign_prepare(message)
'open',
'need_init',
'lazy_init',
- 'dialogue_id',
+ 'dialog_id',
]
})
class ReferenceMessage(DataElementGroup):
- dialogue_id = DataElementField(type='id')
+ dialog_id = DataElementField(type='id')
message_number = NumericField(max_length=4)
YES = '2' #: Ja
-class InitialisationMode(RepresentableEnum):
+class InitializationMode(RepresentableEnum):
CLEARTEXT_PIN_NO_TAN = '00' #: Initialisierungsverfahren mit Klartext-PIN und ohne TAN
ENCRYPTED_PIN_NO_TAN = '01' #: Schablone 01: Verschlüsselte PIN und ohne TAN
MASK_02 = '02' #: Schablone 02: Reserviert, bei FinTS zur Zeit nicht verwendet
cancel_allowed = DataElementField(type='jn', _d="Auftragsstorno erlaubt")
challenge_class_required = DataElementField(type='jn', _d="Challenge-Klasse erforderlich")
challenge_value_required = DataElementField(type='jn', _d="Challenge-Betrag erforderlich")
- initialisation_mode = CodeField(enum=InitialisationMode, _d="Initialisierungsmodus")
+ initialization_mode = CodeField(enum=InitializationMode, _d="Initialisierungsmodus")
description_required = CodeField(enum=DescriptionRequired, length=1, _d="Bezeichnung des TAN-Medium erforderlich")
supported_media_number = DataElementField(type='num', length=1, required=False, _d="Anzahl unterstützter aktiver TAN-Medien")
challenge_class_required = DataElementField(type='jn', _d="Challenge-Klasse erforderlich")
challenge_value_required = DataElementField(type='jn', _d="Challenge-Betrag erforderlich")
challenge_structured = DataElementField(type='jn', _d="Challenge strukturiert")
- initialisation_mode = CodeField(enum=InitialisationMode, _d="Initialisierungsmodus")
+ initialization_mode = CodeField(enum=InitializationMode, _d="Initialisierungsmodus")
description_required = CodeField(enum=DescriptionRequired, length=1, _d="Bezeichnung des TAN-Medium erforderlich")
supported_media_number = DataElementField(type='num', length=1, required=False, _d="Anzahl unterstützter aktiver TAN-Medien")
principal_account_required = CodeField(enum=PrincipalAccountRequired, length=1, _d="Auftraggeberkonto erforderlich")
challenge_class_required = DataElementField(type='jn', _d="Challenge-Klasse erforderlich")
challenge_structured = DataElementField(type='jn', _d="Challenge strukturiert")
- initialisation_mode = CodeField(enum=InitialisationMode, _d="Initialisierungsmodus")
+ initialization_mode = CodeField(enum=InitializationMode, _d="Initialisierungsmodus")
description_required = CodeField(enum=DescriptionRequired, length=1, _d="Bezeichnung des TAN-Medium erforderlich")
supported_media_number = DataElementField(type='num', length=1, required=False, _d="Anzahl unterstützter aktiver TAN-Medien")
principal_account_required = CodeField(enum=PrincipalAccountRequired, length=1, _d="Auftraggeberkonto erforderlich")
challenge_class_required = DataElementField(type='jn', _d="Challenge-Klasse erforderlich")
challenge_structured = DataElementField(type='jn', _d="Challenge strukturiert")
- initialisation_mode = CodeField(enum=InitialisationMode, _d="Initialisierungsmodus")
+ initialization_mode = CodeField(enum=InitializationMode, _d="Initialisierungsmodus")
description_required = CodeField(enum=DescriptionRequired, length=1, _d="Bezeichnung des TAN-Medium erforderlich")
response_hhd_uc_required = DataElementField(type='jn', _d="Antwort HHD_UC erforderlich")
supported_media_number = DataElementField(type='num', length=1, required=False, _d="Anzahl unterstützter aktiver TAN-Medien")
ID_NECESSARY = '1' #: Kundensystem-ID wird benötigt
-class SynchronisationMode(RepresentableEnum):
+class SynchronizationMode(RepresentableEnum):
"""Synchronisierungsmodus, version 2
Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals"""
from ..fields import CodeField, DataElementField, DataElementGroupField
-from ..formals import Response, SynchronisationMode
+from ..formals import Response, SynchronizationMode
from .base import FinTS3Segment
"""Synchronisierung, version 3
Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals"""
- synchronisation_mode = CodeField(enum=SynchronisationMode, length=1)
+ synchronization_mode = CodeField(enum=SynchronizationMode, length=1)
class HISYN4(FinTS3Segment):
"""Dialogende, version 1
Source: FinTS Financial Transaction Services, Schnittstellenspezifikation, Formals"""
- dialogue_id = DataElementField(type='id', _d="Dialog-ID")
+ dialog_id = DataElementField(type='id', _d="Dialog-ID")
class HIRMG2(FinTS3Segment):
"""Nachrichtenkopf"""
message_size = ZeroPaddedNumericField(length=12, _d="Größe der Nachricht (nach Verschlüsselung und Komprimierung)")
hbci_version = DataElementField(type='num', max_length=3, _d="HBCI-Version")
- dialogue_id = DataElementField(type='id', _d="Dialog-ID")
+ dialog_id = DataElementField(type='id', _d="Dialog-ID")
message_number = DataElementField(type='num', max_length=4, _d="Nachrichtennummer")
reference_message = DataElementGroupField(type=ReferenceMessage, required=False, _d="Bezugsnachricht")
answer = self.make_answer(dialog_id, message)
retval = SegmentSequence([
- HNHBK3(hbci_version=300, dialogue_id=dialog_id, message_number=len(datadict['in_messages'])),
+ HNHBK3(hbci_version=300, dialog_id=dialog_id, message_number=len(datadict['in_messages'])),
HNVSK3(
SecurityProfile('PIN', '1'),
'998',
def test_resume(fints_client, fints_server):
with fints_client:
system_id = fints_client.system_id
- dialog_id = fints_client._standing_dialog.dialogue_id
+ dialog_id = fints_client._standing_dialog.dialog_id
assert fints_client.bpd_version == 78
d_data = fints_client.pause_dialog()
assert system_id == fints_client.system_id
with fints_client.resume_dialog(d_data):
- assert dialog_id == fints_client._standing_dialog.dialogue_id
+ assert dialog_id == fints_client._standing_dialog.dialog_id
assert fints_client.bpd_version == 78
from fints.formals import SegmentSequence
import fints.segments
s = SegmentSequence([fints.segments.message.HNHBK3(header=fints.formals.SegmentHeader('HNHBK', 1, 3), message_size='000000000428', hbci_version=300,
- dialogue_id='430711670077=043999659571CN9D=', message_number=2,
- reference_message=fints.formals.ReferenceMessage(dialogue_id='430711670077=043999659571CN9D=',
+ dialog_id='430711670077=043999659571CN9D=', message_number=2,
+ reference_message=fints.formals.ReferenceMessage(dialog_id='430711670077=043999659571CN9D=',
message_number=2)),
fints.segments.message.HNVSK3(header=fints.formals.SegmentHeader('HNVSK', 998, 3),
security_profile=fints.formals.SecurityProfile(security_method='PIN', security_method_version=1),
def test_metaclass_foo():
a = HNHBK3()
- assert list(a._fields) == ['header', 'message_size', 'hbci_version', 'dialogue_id', 'message_number', 'reference_message']
+ assert list(a._fields) == ['header', 'message_size', 'hbci_version', 'dialog_id', 'message_number', 'reference_message']
assert a._fields['header']
import fints.segments, fints.formals
a = SegmentSequence([fints.segments.message.HNHBK3(header=fints.formals.SegmentHeader('HNHBK', 1, 3, None), message_size='000000000428', hbci_version=300,
- dialogue_id='430711670077=043999659571CN9D=', message_number=2,
- reference_message=fints.formals.ReferenceMessage(dialogue_id='430711670077=043999659571CN9D=',
+ dialog_id='430711670077=043999659571CN9D=', message_number=2,
+ reference_message=fints.formals.ReferenceMessage(dialog_id='430711670077=043999659571CN9D=',
message_number=2)),
fints.segments.message.HNVSK3(header=fints.formals.SegmentHeader('HNVSK', 998, 3, None),
security_profile=fints.formals.SecurityProfile(security_method='PIN', security_method_version=1),