]> git.ipfire.org Git - thirdparty/python-fints.git/commitdiff
Remove default product_id
authorRaphael Michel <mail@raphaelmichel.de>
Sat, 22 Apr 2023 17:27:32 +0000 (19:27 +0200)
committerRaphael Michel <mail@raphaelmichel.de>
Sat, 22 Apr 2023 17:27:32 +0000 (19:27 +0200)
README.md
docs/index.rst
docs/quickstart.rst
docs/upgrading_3_4.rst [new file with mode: 0644]
fints/client.py

index 62c6f4a6cfb1446181955e92c70c7b105e87baab..e54e42d4fe9879f11272ae47d1196558b9e97b25 100644 (file)
--- a/README.md
+++ b/README.md
@@ -4,13 +4,12 @@ PyFinTS
 This is a pure-python implementation of FinTS (formerly known as HBCI), a
 online-banking protocol commonly supported by German banks.
 
-
 [Read our documentation for more info](https://python-fints.readthedocs.io)
 
 Maintenance Status 
 ------------------
 
-This project is maintained, but with limited capacity. Working on this is takes a lot of time and testing since all banks do things differently and once you move a part here, you break an unexpected one over there. Therefore: Bugs will only be fixed by me if they occur with a bank where I have an account. New features will only be developed if I need them. PRs will be merged if they either have a very low risk of breaking things elsewhere (e.g. purely adding new commands) or if I can test them. In any case, things might take a little time until I have the bandwidth to focus on them. Sorry about that :( 
+This project is maintained, but with limited capacity. Working on this is takes a lot of time and testing since all banks do things differently and once you move a part here, you break an unexpected one over there. Therefore: Bugs will only be fixed by me if they occur with a bank where I have an account. New features will only be developed if I need them. PRs will be merged if they either have a very low risk of breaking things elsewhere (e.g. purely adding new commands) or if I can test them. In any case, things might take a little time until I have the bandwidth to focus on them. Sorry about that :(
 
 Limitations
 -----------
index 8746371fcc1186b97fb72b7fada191189fd4f213..8ea371cef678aeab1d946453ecc558958737a7b8 100644 (file)
@@ -20,6 +20,7 @@ Library user documentation content
    transfers
    debits
    tested
+   upgrading_3_4
    upgrading_2_3
    upgrading_1_2
    trouble
index cfd4912d8e6a4a5554389f75a2162242497c64d7..b54ab6ee527ac122098013b796c028a715d0ba2c 100644 (file)
@@ -1,6 +1,21 @@
 Getting started
 ===============
 
+Register for a product ID
+-------------------------
+
+As of September 14th, 2019, all FinTS client programs need to be registered with the ZKA.
+You need to fill out a PDF form and will be assigned a product ID that you can pass to this library.
+It can take up to two weeks for the product ID to be assigned.
+
+The reason for this requirement is compliance with the European Unions 2nd Payment Services Directive (PSD2)
+which mandates that end-users can transparently see which applications are accessing their bank account.
+
+You cna find more information as well as the registration form on the `ZKA Website`_ (only available in German).
+
+Start coding
+------------
+
 First of all, you need to install the library::
 
     $ pip3 install fints
@@ -21,7 +36,7 @@ of your bank. Logging in with a signature file or chip card is currently not sup
         'myusername',  # Your login name
         getpass.getpass('PIN:'),  # Your banking PIN
         'https://hbci-pintan.gad.de/cgi-bin/hbciservlet',
-        product_id='Your product ID'
+        product_id='Your product ID'  # see above
     )
 
 Since the implementation of PSD2, you will in almost all cases need to be ready to deal with TANs. For a quick start,
@@ -49,18 +64,4 @@ commands using the client instance:
 
 Go on to the next pages to find out what commands are supported!
 
-.. note::
-
-    As of September 14th, 2019, all FinTS programs should be registered with the ZKA or
-    banks will block access. You need to fill out a PDF form and will be assigned a
-    product ID that you can pass above.
-
-    If you set the ``product_id`` to ``None``, the library will fill in the default
-    product ID for python-fints. This works fine for evaluation, but should never be used
-    if you bundle python-fints within a larger project. This might also not be acceptable
-    by some banks.
-
-    Click here to read more about the `registration process`_.
-
-
-.. _registration process: https://www.hbci-zka.de/register/prod_register.htm
+.. _ZKA Website: https://www.hbci-zka.de/register/prod_register.htm
\ No newline at end of file
diff --git a/docs/upgrading_3_4.rst b/docs/upgrading_3_4.rst
new file mode 100644 (file)
index 0000000..f421e86
--- /dev/null
@@ -0,0 +1,11 @@
+Upgrading from python-fints 3.x to 4.x
+======================================
+
+Release 4.0 of this library was made to introduce a breaking change:
+
+* You now need to register your application with the Deutsche Kreditwirtschaft (German banking association) and supply
+  your assigned product IT when initializing the library.
+
+The library used to have a built-in product ID that was used as a default if you didn't. This was very useful, but
+Deutsche Kreditwirtschaft asked us to stop doing this, since it undermindes the whole point of the product registration.
+The ID included in prior versions of the library will be deactivated at some point and stop working.
index 28810b1c2348bf75dfa5e6e6ada82144eebea2cb..3273072b099521994dd437d9241c06df5b1029d4 100644 (file)
@@ -171,8 +171,8 @@ class FinTS3Client:
             raise TypeError("bank_identifier must be BankIdentifier or str (BLZ)")
         self.system_id = SYSTEM_ID_UNASSIGNED
         if not product_id:
-            logger.warning('You should register your program with the ZKA and pass your own product_id as a parameter.')
-            product_id = 'DC333D745719C4BD6A6F9DB6A'
+            raise TypeError("The product_id keyword argument is mandatory starting with python-fints version 4. See "
+                            "https://python-fints.readthedocs.io/en/latest/upgrading_3_4.html for more information.")
 
         self.user_id = user_id
         self.customer_id = customer_id or user_id