from .connection import FinTSHTTPSConnection
from .dialog import FinTSDialog
from .message import FinTSMessage
-from .models import SEPAAccount, TANMethod, TANChallenge6, TANChallenge5, TANChallenge3, TANChallenge4, TANChallenge
+from .models import SEPAAccount, TANChallenge6, TANChallenge5, TANChallenge3, TANChallenge4, TANChallenge
from .segments.accounts import HKSPA
from .segments.auth import HKTAN, HKTAB
from .segments.depot import HKWPD
from .segments.saldo import HKSAL
from .segments.statement import HKKAZ
from .segments.transfer import HKCCS, HKCCM
+from .formals import TwoStepParametersCommon
from .utils import mt940_to_array, MT535_Miniparser, Password
logger = logging.getLogger(__name__)
logger.debug('Got HKSPA response: {}'.format(resp))
dialog.end()
- seg = resp._find_segment('HISPA')
self.accounts = []
- for arr in seg[1:]:
- self.accounts.append(SEPAAccount(
- iban=arr[1], bic=arr[2], accountnumber=arr[3], subaccount=arr[4], blz=arr[6]
- ))
+ for seg in resp.find_segments('HISPA'):
+ self.accounts.extend(seg.accounts)
return self.accounts
challenge.dialog.end()
- def start_simple_sepa_transfer(self, account: SEPAAccount, tan_method: TANMethod, iban: str, bic: str,
+ def start_simple_sepa_transfer(self, account: SEPAAccount, tan_method: TwoStepParametersCommon, iban: str, bic: str,
recipient_name: str, amount: Decimal, account_name: str, reason: str,
endtoend_id='NOTPROVIDED', tan_description=''):
"""
)
-class TANMethod(DataClass):
- pass
-
-
-class TANMethod1(TANMethod):
- """
- :param security_feature:
- :param tan_process:
- :param tech_id:
- :param name:
- :param max_length_input:
- :param allowed_format:
- :param text_returnvalue:
- :param max_length_returnvalue:
- :param number_of_supported_lists:
- :param multiple_tans_allowed:
- :param tan_time_delayed_allowed:
- """
- # Source: PIN/TAN docs – Verfahrensparameter Zwei-Schritt-Verfahren, Elementversion #1
- version = 1
- args = ['security_feature', 'tan_process', 'tech_id', 'name', 'max_length_input', 'allowed_format',
- 'text_returnvalue', 'max_length_returnvalue', 'number_of_supported_lists', 'multiple_tans_allowed',
- 'tan_time_delayed_allowed']
-
-
-class TANMethod2(TANMethod):
- """
- :param security_feature:
- :param tan_process:
- :param tech_id:
- :param name:
- :param max_length_input:
- :param allowed_format:
- :param text_returnvalue:
- :param max_length_returnvalue:
- :param number_of_supported_lists:
- :param multiple_tans_allowed:
- :param tan_time_dialog_association:
- :param tan_list_number_required:
- :param cancel_allowed:
- :param challenge_class_required:
- :param challenge_value_required:
- """
- # Source: PIN/TAN docs – Verfahrensparameter Zwei-Schritt-Verfahren, Elementversion #2
- version = 2
- args = ['security_feature', 'tan_process', 'tech_id', 'name', 'max_length_input', 'allowed_format',
- 'text_returnvalue', 'max_length_returnvalue', 'number_of_supported_lists', 'multiple_tans_allowed',
- 'tan_time_dialog_association', 'tan_list_number_required', 'cancel_allowed', 'challenge_class_required',
- 'challenge_value_required']
-
-
-
-class TANMethod3(TANMethod):
- """
- :param security_feature:
- :param tan_process:
- :param tech_id:
- :param name:
- :param max_length_input:
- :param allowed_format:
- :param text_returnvalue:
- :param max_length_returnvalue:
- :param number_of_supported_lists:
- :param multiple_tans_allowed:
- :param tan_time_dialog_association:
- :param tan_list_number_required:
- :param cancel_allowed:
- :param challenge_class_required:
- :param challenge_value_required:
- :param initialization_mode:
- :param description_required:
- :param supported_media_number:
- """
- # Source: PIN/TAN docs – Verfahrensparameter Zwei-Schritt-Verfahren, Elementversion #3
- version = 3
- args = ['security_feature', 'tan_process', 'tech_id', 'name', 'max_length_input', 'allowed_format',
- 'text_returnvalue', 'max_length_returnvalue', 'number_of_supported_lists', 'multiple_tans_allowed',
- 'tan_time_dialog_association', 'tan_list_number_required', 'cancel_allowed', 'challenge_class_required',
- 'challenge_value_required', 'initialization_mode', 'description_required', 'supported_media_number']
-
-
-class TANMethod4(TANMethod):
- """
- :param security_feature:
- :param tan_process:
- :param tech_id:
- :param zka_id:
- :param zka_version:
- :param name:
- :param max_length_input:
- :param allowed_format:
- :param text_returnvalue:
- :param max_length_returnvalue:
- :param number_of_supported_lists:
- :param multiple_tans_allowed:
- :param tan_time_dialog_association:
- :param tan_list_number_required:
- :param cancel_allowed:
- :param sms_charge_account_required:
- :param challenge_class_required:
- :param challenge_value_required:
- :param challenge_structured
- :param initialization_mode:
- :param description_required:
- :param supported_media_number:
- """
- # Source: PIN/TAN docs – Verfahrensparameter Zwei-Schritt-Verfahren, Elementversion #4
- version = 4
- args = ['security_feature', 'tan_process', 'tech_id', 'zka_id', 'zka_version', 'name', 'max_length_input',
- 'allowed_format', 'text_returnvalue', 'max_length_returnvalue', 'number_of_supported_lists',
- 'multiple_tans_allowed', 'tan_time_dialog_association', 'tan_list_number_required', 'cancel_allowed',
- 'sms_charge_account_required', 'challenge_class_required', 'challenge_value_required',
- 'challenge_structured', 'initialization_mode', 'description_required', 'supported_media_number']
-
-
-
-class TANMethod5(TANMethod):
- """
- :param security_feature:
- :param tan_process:
- :param tech_id:
- :param zka_id:
- :param zka_version:
- :param name:
- :param max_length_input:
- :param allowed_format:
- :param text_returnvalue:
- :param max_length_returnvalue:
- :param number_of_supported_lists:
- :param multiple_tans_allowed:
- :param tan_time_dialog_association:
- :param tan_list_number_required:
- :param cancel_allowed:
- :param sms_charge_account_required:
- :param principal_account_required:
- :param challenge_class_required:
- :param challenge_value_required:
- :param initialization_mode:
- :param description_required:
- :param supported_media_number:
- """
- # Source: PIN/TAN docs – Verfahrensparameter Zwei-Schritt-Verfahren, Elementversion #5
- version = 5
- args = ['security_feature', 'tan_process', 'tech_id', 'zka_id', 'zka_version', 'name', 'max_length_input',
- 'allowed_format', 'text_returnvalue', 'max_length_returnvalue', 'number_of_supported_lists',
- 'multiple_tans_allowed', 'tan_time_dialog_association', 'tan_list_number_required', 'cancel_allowed',
- 'sms_charge_account_required', 'principal_account_required', 'challenge_class_required',
- 'challenge_value_required', 'initialization_mode', 'description_required', 'supported_media_number']
-
-
-class TANMethod6(TANMethod):
- # Source: PIN/TAN docs – Verfahrensparameter Zwei-Schritt-Verfahren, Elementversion #6
- """
- :param security_feature:
- :param tan_process:
- :param tech_id:
- :param zka_id:
- :param zka_version:
- :param name:
- :param max_length_input:
- :param allowed_format:
- :param text_returnvalue:
- :param max_length_returnvalue:
- :param number_of_supported_lists:
- :param multiple_tans_allowed:
- :param tan_time_dialog_association:
- :param cancel_allowed:
- :param sms_charge_account_required:
- :param principal_account_required:
- :param challenge_class_required:
- :param challenge_value_required:
- :param initialization_mode:
- :param description_required:
- :param hhd_uc_required:
- :param supported_media_number:
- """
- version = 6
- args = ['security_feature', 'tan_process', 'tech_id', 'zka_id', 'zka_version', 'name', 'max_length_input',
- 'allowed_format', 'text_returnvalue', 'max_length_returnvalue', 'multiple_tans_allowed',
- 'tan_time_dialog_association', 'cancel_allowed', 'sms_charge_account_required',
- 'principal_account_required',
- 'challenge_class_required', 'challenge_structured', 'initialization_mode', 'description_required',
- 'hhd_uc_required', 'supported_media_number']
-
class TANChallenge(DataClass):
def __init__(self, dialog, *args, **kwargs):
import re
-from fints.formals import Container, ContainerMeta, SegmentHeader, DataElementGroupField, DataElementField, ReferenceMessage, SegmentSequenceField, SecurityProfile, SecurityIdentificationDetails, SecurityDateTime, EncryptionAlgorithm, KeyName, Certificate, HashAlgorithm, SignatureAlgorithm, UserDefinedSignature, Response, AccountInformation, AccountLimit, AllowedTransaction, ParameterTwostepTAN1, ParameterTwostepTAN2, ParameterTwostepTAN3, ParameterTwostepTAN4, ParameterTwostepTAN5, ParameterTwostepTAN6, ParameterPinTan, SupportedLanguages2, SupportedHBCIVersions2, BankIdentifier
+from fints.formals import Container, ContainerMeta, SegmentHeader, DataElementGroupField, DataElementField, ReferenceMessage, SegmentSequenceField, SecurityProfile, SecurityIdentificationDetails, SecurityDateTime, EncryptionAlgorithm, KeyName, Certificate, HashAlgorithm, SignatureAlgorithm, UserDefinedSignature, Response, AccountInformation, AccountLimit, AllowedTransaction, ParameterTwostepTAN1, ParameterTwostepTAN2, ParameterTwostepTAN3, ParameterTwostepTAN4, ParameterTwostepTAN5, ParameterTwostepTAN6, ParameterPinTan, SupportedLanguages2, SupportedHBCIVersions2, BankIdentifier, AccountInternational
from fints.utils import classproperty, SubclassesMixin
max_message_length = DataElementField(type='num', max_length=4, required=False)
min_timeout = DataElementField(type='num', max_length=4, required=False)
max_timeout = DataElementField(type='num', max_length=4, required=False)
+
+class HISPA1(FinTS3Segment):
+ accounts = DataElementGroupField(type=AccountInternational, max_count=999, required=False)