client.set_tan_medium(media[0])
- res = client.sepa_debit(
- account=accounts[0],
- data=pain_message,
- multiple=False,
- control_sum=Decimal('1.00'),
- pain_descriptor='urn:iso:std:iso:20022:tech:xsd:pain.008.002.02'
- )
-
- if isinstance(res, NeedTANResponse):
- print(res.challenge)
-
- if getattr(res, 'challenge_hhduc', None):
- try:
- terminal_flicker_unix(res.challenge_hhduc)
- except KeyboardInterrupt:
- pass
-
- tan = input('Please enter TAN:')
- res = client.send_tan(res, tan)
-
- print(res.status)
- print(res.responses)
+ with client:
+ res = client.sepa_debit(
+ account=accounts[0],
+ data=pain_message,
+ multiple=False,
+ control_sum=Decimal('1.00'),
+ pain_descriptor='urn:iso:std:iso:20022:tech:xsd:pain.008.002.02'
+ )
+
+ if isinstance(res, NeedTANResponse):
+ print(res.challenge)
+
+ if getattr(res, 'challenge_hhduc', None):
+ try:
+ terminal_flicker_unix(res.challenge_hhduc)
+ except KeyboardInterrupt:
+ pass
+
+ tan = input('Please enter TAN:')
+ res = client.send_tan(res, tan)
+
+ print(res.status)
+ print(res.responses)
:func:`~fints.formals.TwoStepParametersCommon` subclass with varying fields, depending on the
version of the two-step process and the bank.
-The `name` field of theese objects provides a user-friendly name of the TAN mechanism that you
+The `name` field of these objects provides a user-friendly name of the TAN mechanism that you
can display to the user to choose from. To select a TAN mechanism, you can use
:func:`~fints.client.FinTS3PinTanClient.set_tan_mechanism`, which takes the identifier used as
key in the :func:`~fints.client.FinTS3PinTanClient.get_tan_mechanisms` return value.
:caption: First step
client = FinTS3PinTanClient(...)
+ # Optionally: choose a tan mechanism with
+ # client.set_tan_mechanism(…)
+
with client:
response = client.sepa_transfer(...)
Tested banks
============
-The following libraries have been tested with this library:
+The following banks have been tested with version 2.x of this library:
+
+======================================== ============ ======== ======== ======
+Bank Transactions Holdings Transfer Debits
+ and Balance
+======================================== ============ ======== ======== ======
+GLS Bank eG Yes Yes Yes
+Postbank Yes
+Triodos Bank Yes Yes
+Volksbank Darmstadt-Südhessen Yes Yes
+Deutsche Skatbank Yes Yes
+BBBank eG Yes Yes
+MLP Banking AG Yes
+======================================== ============ ======== ======== ======
+
+Tested security functions
+-------------------------
+
+* ``942`` "mobile TAN"
+* ``962`` "Smart-TAN plus manuell"
+* ``972`` "Smart-TAN plus optisch"
+
+
+
+Legacy results
+---------------
+
+The following banks have been tested with the old version 1.x of this library:
======================================== ============ ======== ======== ======
Bank Statements Holdings Transfer Debits
+.. _transfers:
+
Sending SEPA transfers
======================
client.set_tan_medium(media[0])
- res = client.simple_sepa_transfer(
- account=accounts[0],
- iban='DE12345',
- bic='BIC12345',
- amount=Decimal('7.00'),
- recipient_name='Foo',
- account_name='Test',
- reason='Birthday gift',
- endtoend_id='NOTPROVIDED',
- )
-
- if isinstance(res, NeedTANResponse):
- print(res.challenge)
-
- if getattr(res, 'challenge_hhduc', None):
- try:
- terminal_flicker_unix(res.challenge_hhduc)
- except KeyboardInterrupt:
- pass
-
- tan = input('Please enter TAN:')
- res = client.send_tan(res, tan)
-
- print(res.status)
- print(res.responses)
+ with client:
+ res = client.simple_sepa_transfer(
+ account=accounts[0],
+ iban='DE12345',
+ bic='BIC12345',
+ amount=Decimal('7.00'),
+ recipient_name='Foo',
+ account_name='Test',
+ reason='Birthday gift',
+ endtoend_id='NOTPROVIDED',
+ )
+
+ if isinstance(res, NeedTANResponse):
+ print(res.challenge)
+
+ if getattr(res, 'challenge_hhduc', None):
+ try:
+ terminal_flicker_unix(res.challenge_hhduc)
+ except KeyboardInterrupt:
+ pass
+
+ tan = input('Please enter TAN:')
+ res = client.send_tan(res, tan)
+
+ print(res.status)
+ print(res.responses)