Integracja Stempel + MBP w Pythonie

Dbamy o grywalność pollińskiego pieniądza
ODPOWIEDZ
Awatar użytkownika
Gd'O Stempel
Przybysz

Integracja Stempel + MBP w Pythonie

Post autor: Gd'O »

Czołem,

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()

Mikołaj Torped
besositos
Awatar użytkownika
Helwetyk Romański Stempel
Namiestnik Palatynatu Leocji
Lokalizacja: Nowy Brzeg

Integracja Stempel + MBP w Pythonie

Post autor: Helwetyk Romański »

Gd'O pisze:
28 lis 2023, 21:56
(Pardon, jeśli Rynek to niewłaściwe miejsce, uprzejmie proszę o przeniesienie).
Pozwalam sobie przenieść do działu MBP.
Obrazek Obrazek Obrazek
Obrazek Obrazek Obrazek
(—) prokr. Hweltywk Romański, RkORF · LAN
Namiestnik № 2 Palatynatu Leocji
Dyniowy Padawan
LEOCKA PARTIA FASZYSTÓW JĘZYKOWYCH

Nikogo się nie ściga, ale wszystkich się poprawia, bo tak nakazują
wewnętrzna potrzeba, poczucie sprawiedliwości i wyznawany porządek rzeczy.

IGNATS IK RUTH

Nawet podczas realiozy sprawdzam skrzynkę helwetyk​@​gmail.com
Awatar użytkownika
Gd'O Stempel
Przybysz

Integracja Stempel + MBP w Pythonie

Post autor: Gd'O »

dwie dodatkowe funkcje do poprzedniego kodu:

Pierwsza służy do pobrania jsona z informacją o kontach bankowych użytkownika.

Druga do pobrania informacji o krajach w i ich walutach w MBP.


Kod: Zaznacz cały

def get_account_details(paszport):
    url = f"https://bank.leocja.org/api/rachunki0.php?paszport={paszport}"
    try:
        response = requests.get(url)
        response.raise_for_status()
        return response.json()
    except requests.RequestException as e:
        print(f"Error fetching account details: {e}")
        return None

def get_country_information():
    url = "https://bank.leocja.org/api/kraje0.php"
    try:
        response = requests.get(url)
        response.raise_for_status()
        return response.json()
    except requests.RequestException as e:
        print(f"Error fetching country information: {e}")
        return None
Mikołaj Torped
besositos
Tenir Stempel
Przybysz

Integracja Stempel + MBP w Pythonie

Post autor: Tenir »

Fajnie, ale szkoda że w pajtonicy. 🤬
Awatar użytkownika
Maciej Gerwazy Lisewicz Stempel
Przybysz
Lokalizacja: Nowy Brzeg

Integracja Stempel + MBP w Pythonie

Post autor: Maciej Gerwazy Lisewicz »

Tenir pisze:
29 lis 2023, 20:21
Fajnie, ale szkoda że w pajtonicy. 🤬
Jakiś problem?
xd
Maciej Gerwazy Lisewicz
Prezes Zarządu LIS-BUD oraz SpaceLeo
ODPOWIEDZ

Wróć do „Międzynarodowy Bank Pollinu”