Przygotowałem na własne potrzeby integrację Stempla i MBP w pythonie. Może komuś się przyda. U mnie działa.
(Pardon, jeśli Rynek to niewłaściwe miejsce, uprzejmie proszę o przeniesienie)
Kod: Zaznacz cały
import base64
import json
import requests
# Stałe URL do API Stemel i Banku
STEMPEL_KEY = 'KLUCZ_APLIKACJI_W_STEMPLU'
STEMPEL_USER_PATTERN = 'https://stempel.org.pl/api/api0.php?klucz={}&haslo={}'
BANK_API_URL = 'https://bank.leocja.org/api/'
# Stała z kluczami API i mapowanie kluczy do numerów kont
API_KEYS = {
'KLUCZ_API_1': 'LC285923',
'KLUCZ_API_2': 'SR984157',
'KLUCZ_API_3': 'LC325347',
'KLUCZ_API_4': 'SR805632',
# Dodaj tutaj inne klucze i powiązane konta
}
# Stałe do identyfikacji poszczególnych rachunków aplikacji (aplikacje KPA i aplikacje Zbiórka)
KPA_SR = 'KLUCZ_API_2'
KPA_LC = 'KLUCZ_API_1'
ZBIORKA_SR = 'KLUCZ_API_4'
ZBIORKA_LC = 'KLUCZ_API_3'
# Słownik walut i ich skrótów
CURRENCIES = {'palatyn':'LCP',
'libert (Międzynarodowy Bank Pollinu)':'SRL'}
# Mapowanie walut do kluczy API
ZBIORKA_CURRENCY_KEY = {'SRL': ZBIORKA_SR,
'LCP': ZBIORKA_LC}
# Metoda do pobierania informacji o użytkowniku z systemu Stempel
def get_stempel_user(user_key):
"""Pobiera informacje o użytkowniku z systemu Stempel.
Args:
user_key (str): Klucz użytkownika w systemie Stempel.
Returns:
tuple: Zwraca krotkę z danymi użytkownika lub None w przypadku błędu.
"""
format_url = STEMPEL_USER_PATTERN.format(STEMPEL_KEY, user_key)
try:
response = requests.get(format_url)
response.raise_for_status()
transfer_data = response.json()
if transfer_data['blad']['kod'] == 200:
user_data = (
transfer_data['dane']['paszport'],
transfer_data['dane']['personalia'],
transfer_data['dane']['awatar'],
transfer_data['dane']['kraje']
)
else:
user_data = None
except requests.HTTPError as e:
print(f"HTTP Error: {e}")
user_data = None
except json.JSONDecodeError as e:
print(f"JSON Decode Error: {e}")
user_data = None
return user_data
# Metoda do wykonywania transferu z aplikacji
def make_transfer_from_app(api_key, to_account, amount, currency, title):
"""Wykonuje transfer pieniężny z aplikacji.
Args:
api_key (str): Klucz API aplikacji.
to_account (str): Numer konta odbiorcy.
amount (float): Kwota transferu.
currency (str): Waluta transferu.
title (str): Tytuł przelewu.
Returns:
dict: Odpowiedź z API banku.
"""
if api_key not in API_KEYS:
return {"error": "Nieznany klucz API"}
encoded_title = base64.b64encode(title.encode()).decode()
url = f"{BANK_API_URL}bank0.php?do={to_account}&kwota={amount}&waluta={currency}&api={api_key}&tytul={encoded_title}"
response = requests.get(url)
return response.json()
# Metoda do wykonywania transferu z konta użytkownika
def make_transfer_from_user(api_key, amount, currency, myk, title, to_account=None):
"""Wykonuje transfer pieniężny z konta użytkownika.
Args:
api_key (str): Klucz API aplikacji.
amount (float): Kwota transferu.
currency (str): Waluta transferu.
myk (str): Klucz autoryzacyjny użytkownika.
title (str): Tytuł przelewu.
to_account (str, optional): Numer konta odbiorcy. Jeśli nie podano, używa konta powiązanego z kluczem API.
Returns:
dict: Odpowiedź z API banku.
"""
if api_key not in API_KEYS:
return {"error": "Nieznany klucz API"}
if not to_account:
to_account = API_KEYS[api_key]
encoded_title = base64.b64encode(title.encode()).decode()
url = f"{BANK_API_URL}bank0.php?do={to_account}&kwota={amount}&waluta={currency}&myk={myk}&api={api_key}&tytul={encoded_title}"
response = requests.get(url)
return response.json()
# Metoda do pobierania stanu konta
def get_account_status(account_number):
"""Pobiera aktualny stan konta.
Args:
account_number (str): Numer konta.
Returns:
dict: Odpowiedź z API banku zawierająca informacje o stanie konta.
"""
url = f"{BANK_API_URL}stan0.php?rachunek={account_number}"
response = requests.get(url)
return response.json()
# Metoda do pobierania historii kursów walut
def get_currency_history(currency_symbol):
"""Pobiera historię kursów wybranej waluty.
Args:
currency_symbol (str): Symbol waluty.
Returns:
dict: Odpowiedź z API banku zawierająca historię kursów waluty.
"""
url = f"{BANK_API_URL}kursy0.php?symbol={currency_symbol}"
response = requests.get(url)
return response.json()