/
zerobyte
/
T-kassa-example
Обзор
Документация
Войти
/
zerobyte
/
T-kassa-example
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
example.py
86 строк
4 KB
zerobyte
upload files
04 мар 2025, 22:00
04 мар 2025, 22:00
68a1cdf
Код
Авторство
О чём код?
""" !!! Внимание !!! Этот код не является полноценным SDK для API Т-кассы. Он ограничен реализацией стандартного платежа и предназначен только для демонстрационных целей. - Документация T-kassa: https://www.tbank.ru/kassa/dev/payments/#section/Nachalo-raboty - Протокол EACQ C PCI DSS: https://www.tbank.ru/static/documents/merchant_api_protocoI_eacq_pci_dss.pdf """ import os from tkassa import TKassa from models import Receipt from models import Item TERMINAL_KEY = "" PASSWORD = "" BASE_URL = "https://securepay.tinkoff.ru/v2/" # Для возможности отправки запросов на тестовую среду (https://rest-api-test.tinkoff.ru/v2/) необходимо # написать на почту acq_help@tinkoff.ru с просьбой добавить ваши IP в WL def main(): tkassa = TKassa(TERMINAL_KEY, PASSWORD, BASE_URL) price = 50_000 # Сумма счета в копейках init_response = tkassa.init( amount = price, order_id=str(int.from_bytes(os.urandom(8))), # Уникальный идентификатор заказа description= "Тестовый платеж", receipt=Receipt( # Обязателен, если подключена онлайн-касса. email="test@test.test", taxation="osn", # Система налогообложения items=[ # Все позиции из чека Item( name="Подарочная карта", price=price, quantity=1, amount=price, # Произведение quantity и price. tax="none" # Ставка НДС ) ] ) ) # В конечном счете, формируется запрос: # { # "TerminalKey": "7382<...>DEMO", # "Amount": 50000, # "OrderId": "4323<...>7991", # "Description": "Тестовый платеж", # "Receipt": { # "Taxation": "osn", # "Items": [ # { # "Email": "test@test.test", # "Name": "Подарочная карта", # "Price": 50000, # "Quantity": 1, # "Amount": 50000, # "Tax": "none" # } # ] # }, # "Token": "b9b4<...>b9ec" # } if init_response.payment_url is None: print("Ссылка на платежную форму возвращается только для мерчантов без PCI DSS") return print("<Ссылка для оплаты>".center(len(init_response.payment_url) + 27)) print(f"{'=' * 10}> {init_response.payment_url} <{'=' * 10}") print() print("Статусная модель: https://www.tbank.ru/kassa/dev/payments/#tag/Scenarii-oplaty-po-karte/Statusnaya-model-platezha") print("Нажмите Enter, чтобы запросить статус платежа. Выход - q") while input("> ") not in ["q", "Q", "й", "Й"]: order_response = tkassa.get_state(init_response.payment_id) # В конечном счете, формируется запрос: # { # "TerminalKey": "7382<...>DEMO", # "PaymentId": "8392<...>9023", # "Token": "be62<...>e69e" # } print(f"Статус платежа: {order_response.status}") main()