Python · CSV · Weryfikacja IBAN
Weryfikacja numerów IBAN z pliku CSV za pomocą Pythona
Sprawdź wyeksportowaną listę IBAN i utwórz nowy plik CSV ze statusem weryfikacji, nazwą banku i kodem BIC. Skrypt do pobrania korzysta ze standardowej biblioteki Pythona, zachowuje kolejność linii i sprawdza zduplikowane numery IBAN tylko raz na uruchomienie.
To jest lokalny przepływ wiersza poleceń dla języka Python w wersji 3.10 lub nowszej. Każdy inny, niepusty IBAN jest wysyłany do API IBAN-Test. Potrzebujesz własnego tokena API i wystarczającego limitu żądań.
Pobierz skrypt do sprawdzania pliku CSV
Plik ZIP zawiera iban_csv.py, przykładowy plik CSV, plik README i testy automatyczne. Dodatkowe pakiety Pythona nie są wymagane.
Stan testów: Dziewięć lokalnych automatycznych testów obejmuje tworzenie żądań, duplikaty i puste linie, sprawdzanie wyników, ochronę przydziałów, obsługę błędów, maskowanie CSV i zachowanie istniejących plików. W tym przykładzie nie wykonano uwierzytelnionego przejścia względem Live API.
1. Przygotuj plik wejściowy
Eksportuj dane źródłowe jako plik CSV w formacie UTF-8. Użyj nagłówka kolumny z małymi literami iban i opcjonalnie kolumny reference, aby zmapować wyniki na swoje rekordy. Skrypt uwzględnia w wynikach tylko te dwie kolumny wejściowe; inne kolumny nie są brane pod uwagę. Zachowaj oryginalny eksport.
reference,iban
example-valid,DE89 3704 0044 0532 0130 00
example-duplicate,de89370400440532013000
example-invalid-checksum,DE00370400440532013000
example-empty,
Są to próbki testowe, a nie instrukcje dotyczące płatności. Pierwsze dwie linie dają ten sam znormalizowany numer IBAN. Pusta linia pobiera MISSING bez żądania API. Zapisz numery IBAN i referencje jako tekst podczas eksportu z arkusza kalkulacyjnego.
2. Przeprowadź pierwszą małą kontrolę
Rozpakuj pakiet, otwórz terminal w jego katalogu i sprawdź, czy Python jest dostępny:
python3 --version
python3 iban_csv.py sample.csv results.csv
W systemie Windows użyj py -3 zamiast python3, jeśli to konieczne, w zależności od instalacji. Program zapyta o Twój token API bez wyświetlania wprowadzonych znaków. Token znajdziesz w przeglądzie API swojego konta IBAN-Test. Nie jest zapisywany w pliku CSV.
Domyślny limit to 10 różnych, niepustych numerów IBAN. Skrypt zlicza je przed pierwszym żądaniem i zatrzymuje się po ich przekroczeniu. Powyższy przykład wymaga dwóch żądań API, jeśli oba są wykonywane regularnie.
Jeśli się powiedzie, program wyświetli liczbę wierszy i żądań. Tworzy plik wyjściowy tylko wtedy, gdy dla każdego żądanego numeru IBAN istnieje użyteczny wynik kontroli. Dlatego błąd API nie pozostawia częściowo zweryfikowanego wyniku CSV.
3. Odczytaj wyniki
| Kolumna | Znaczenie |
|---|---|
reference, iban | Twoje oryginalne odniesienia i dane wejściowe, w razie potrzeby z zabezpieczeniem formuły tabelarycznej. |
iban_normalized | IBAN pisany wielkimi literami bez białych znaków. |
status | VALID, INVALID lub MISSING. |
code, message | Kod wyniku API i komunikat wyjaśniający. W przypadku decyzji zautomatyzowanych użyj kodu, a nie tekstu wiadomości. |
bank, bic | Dostępne dane bankowe; Pola mogą być puste. |
checked_at_utc | Znacznik czasu UTC zapisany po otrzymaniu odpowiedzi dla danego IBAN. Duplikaty mają wspólny wynik i znacznik czasu; puste dane wejściowe nie mają znacznika czasu. |
VALID wymaga kodu 2100 i error: false. Kody 3100, 3101 i 3102 z error: true dają w wyniku INVALID. Błąd uwierzytelnienia, wyczerpanie przydziału, błędy serwera i nieoczekiwane odpowiedzi powodują zatrzymanie programu z niezerowym kodem zakończenia.
4. Przetwarzaj inne eksporty i większe listy
Aby wyeksportować ze średnikiem, wybierz jawnie separator. Dotyczy wejścia i wyjścia:
python3 iban_csv.py customers.csv checked-customers.csv --delimiter ";"
Sprawdź pozostały limit interfejsu API, a następnie w razie potrzeby zwiększ limit żądań na uruchomienie:
python3 iban_csv.py customers.csv checked-customers.csv --max-requests 100
Żądania są wysyłane pojedynczo, jedno po drugim; nie jest to endpoint REST do obsługi zbiorczej. Nieudane uruchomienie mogło już zużyć część limitu. Ponowne uruchomienie sprawdza listę od początku: usuwanie duplikatów działa tylko w obrębie jednego uruchomienia. Szablon nie ponawia żądań automatycznie i nie zapisuje punktów wznowienia.
W przypadku wykonywania nienadzorowanych podaj IBAN_TEST_API_TOKEN w konfiguracji kluczy tajnych systemu zadań. Nie przechowuj prawdziwych tokenów w kontroli wersji ani nie przekazuj ich jako argumentu wiersza poleceń. W przypadku uruchamiania ręcznego najłatwiejszy jest ukryty wpis interaktywny.
Typowe problemy
- “CSV must have an iban header”: Sprawdź dokładną pisownię nagłówka kolumny, kodowania i separatora. XLSX nie jest CSV.
- “Choose a new output filename”: Skrypt nie nadpisuje istniejących plików ani danych wejściowych. Użyj nowej nazwy pliku dla każdego uruchomienia.
- HTTP 401 lub kod API 4002: Sprawdź swój token. Nie ponawiaj ciągłych prób nieudanego uwierzytelnienia.
- Kod API 4003: Limit został wyczerpany. Zatrzymaj zadanie i sprawdź dostępny limit przed ponownym uruchomieniem.
- Błąd sieci lub nieprawidłowy JSON: Przepływ zatrzymuje się. Sprawdź dostępność połączenia i API; Błąd transmisji nie mówi nic o ważności numeru IBAN.
Chroń eksportowane dane
Do API przesyłany jest wyłącznie numer IBAN; odniesienie pozostaje w przepływie lokalnym. Przechowuj pliki wejściowe i wyjściowe w odpowiedniej, prywatnej lokalizacji. Skrypt poprzedza potencjalnie wykonywalne wartości tabeli apostrofem, aby zmniejszyć ryzyko wstrzyknięcia formuły. Może to zmienić dosłowną reprezentację odniesienia, takiego jak =1+1. Zachowaj oryginalny eksport, aby zapewnić dokładne dopasowanie.
Prawidłowy IBAN nie potwierdza istnienia konta, jego właściciela, salda ani powodzenia płatności. Informacje o schematach SEPA zawiera poradnik sprawdzania uczestnictwa banku w SEPA. Jeśli wolisz wizualny przepływ, skorzystaj z poradnika n8n.
Uruchom dołączone testy offline
python3 -m unittest -vTesty korzystają z kontrolowanych odpowiedzi i nie wykorzystują żądań API. Sprawdzają decyzje dotyczące programu, a nie Twój token czy aktualne informacje bankowe.
Referencje: dokumentacja API IBAN-Test, Odniesienie do Pythona w formacie CSV, Odniesienie do Pythona w żądaniach HTTP.
