[Мессенджеры, Платежные системы, Python, API] Как принимать платежи в Telegram | API Yoomoney Python
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В данном посте мы научимся принимать платежи в Telegram боте с помощью API Yoomoney.ВведениеНачну с того, что я не так давно хотел создать магазин электронных товаров в Telegram. И столкнулся с проблемой, что на момент работы не было готовых решений. Хотелось принимать платежи без ИП и всякой этой движухи. Поэтому мой выбор был между Qiwi и Yoomoney (раньше Yandex Деньги). Сам я из Беларуси... Поэтому проще получить "Идентифицированный" аккаунт было у Yoomoney.В итоге создал библиотеку yoomoneyдля Python.Если данный пост вам помог, то поставьте звезду на GitHub. Мне будет очень приятно!Описание
- Получаем токен
- Проверяем токен
- Как выставить счет на оплату
- Проверка оплаты
Получаем токенДля того, чтобы пользоваться API Yoomoney нужно получить специальный токен. Первым делом регистрируем приложение:1. Зайдите в кошелек ЮMoney. Если кошелька нет, создайте его.2. Перейдите на страницу Регистрация приложения.3. Укажите параметры приложения:4. Нажмите на кнопку Подтвердить. Откроется страница Данные приложения, где будут указаны название вашего приложения, его идентификатор (client_id) и, если выбрана соответствующая опция, сгенерированное секретное слово (client_secret). Готово!Запоминаем client_id и redirect_uri, они нам еще нужны.Теперь самое сложное: заменяем на свои данные и запускаем код. Следуйте всем шагам программы.Не забываем про pip install yoomoney
from yoomoney import Authorize
Authorize(
client_id="YOUR_CLIENT_ID",
redirect_uri="YOUR_REDIRECT_URI",
scope=["account-info",
"operation-history",
"operation-details",
"incoming-transfers",
"payment-p2p",
"payment-shop",
]
)
Ура! Мы получили наш токен!Проверяем токенЗаменяем YOUR_TOKEN на ваш и запускаем:
from yoomoney import Client
token = "YOUR_TOKEN"
client = Client(token)
user = client.account_info()
print("Account number:", user.account)
print("Account balance:", user.balance)
print("Account currency code in ISO 4217 format:", user.currency)
print("Account status:", user.account_status)
print("Account type:", user.account_type)
print("Extended balance information:")
for pair in vars(user.balance_details):
print("\t-->", pair, ":", vars(user.balance_details).get(pair))
print("Information about linked bank cards:")
cards = user.cards_linked
if len(cards) != 0:
for card in cards:
print(card.pan_fragment, " - ", card.type)
else:
print("No card is linked to the account")
Результат:
Account number: 410019014512803
Account balance: 999999999999.99
Account currency code in ISO 4217 format: 643
Account status: identified
Account type: personal
Extended balance information:
--> total : 999999999999.99
--> available : 999999999999.99
--> deposition_pending : None
--> blocked : None
--> debt : None
--> hold : None
Information about linked bank cards:
No card is linked to the account
Супер! Токен работает и можно переходить к основной части.Как выставить счет на оплатуДля этого воспользуемся модулем Quickpay.
from yoomoney import Quickpay
quickpay = Quickpay(
receiver="410019014512803",
quickpay_form="shop",
targets="Sponsor this project",
paymentType="SB",
sum=150,
)
print(quickpay.base_url)
print(quickpay.redirected_url)
Получаем две ссылки:
https://yoomoney.ru/quickpay/confirm.xml?receiver=410019014512803&quickpay-form=shop&targets=Sponsor%20this%20project&paymentType=SB&sum=150
https://yoomoney.ru/transfer/quickpay?requestId=343532353937313933395f66326561316639656131626539326632616434376662373665613831373636393537613336383639
Первая ссылка находится под капотом второй. Обе ведут на одну форму. Но вторая имеет свой жизненный цикл.
Форма оплатыОплатить можно либо картой, либо переводом из кошелька.Теперь вопрос: Как нам определить, что именно этот человек оплатил счет?
Для этого воспользуемся параметорм label - метка, которую сайт или приложение присваивает конкретному переводу. Например, в качестве метки можно указывать код или идентификатор заказа. И теперь наша программа будет выглядеть так:
from yoomoney import Quickpay
quickpay = Quickpay(
receiver="410019014512803",
quickpay_form="shop",
targets="Sponsor this project",
paymentType="SB",
sum=150,
lebel="a1b2c3d4e5"
)
print(quickpay.base_url)
print(quickpay.redirected_url)
Теперь осталось только проверить оплату.Проверка оплатыДля этого воспользуемся основным модулем Client.Зная label транзакции мы можем отфильтровать историю операций кошелька. Просто укажем label в client.operation_history():
from yoomoney import Client
token = "YOUR_TOKEN"
client = Client(token)
history = client.operation_history(label="a1b2c3d4e5")
print("List of operations:")
print("Next page starts with: ", history.next_record)
for operation in history.operations:
print()
print("Operation:",operation.operation_id)
print("\tStatus -->", operation.status)
print("\tDatetime -->", operation.datetime)
print("\tTitle -->", operation.title)
print("\tPattern id -->", operation.pattern_id)
print("\tDirection -->", operation.direction)
print("\tAmount -->", operation.amount)
print("\tLabel -->", operation.label)
print("\tType -->", operation.type)
В результате получаем список всех операций по нашему фильтру:
List of operations:
Next page starts with: None
Operation: 670278348725002105
Status --> success
Datetime --> 2021-10-10 10:10:10
Title --> Пополнение с карты ****4487
Pattern id --> None
Direction --> in
Amount --> 150.0
Label --> a1b2c3d4e5
Type --> deposition
Теперь мы знаем прошла ли оплата.Всё! Больше ничего не нужно для приема платежей.ЗаключениеЕсли данный пост вам помог, то поставьте звезду на GitHub. Мне будет очень приятно!
===========
Источник:
habr.com
===========
Похожие новости:
- [Python, ECM/СЭД, Хранение данных] Как мы запустили документооборот в Telegram и что из этого вышло? Да, это не сон
- [Python, Совершенный код, ООП] В поисках упорядоченного множества в Python: разбираемся с теорией и выбираем лучшую реализацию
- [Управление разработкой, Управление проектами, Agile, Управление продуктом, Карьера в IT-индустрии] Гайд по сертификациям. Часть 1. Agile
- [Perl, Ruby, PHP, Python, JavaScript] Насколько вам наплевать на фичи последней версии языка?
- [Веб-дизайн, Разработка веб-сайтов, CSS] Взгляд на Tailwind CSS (перевод)
- [Разработка мобильных приложений, Тестирование мобильных приложений] Как в Ozon пришли к релизам мобильных приложений раз в неделю
- [Python, Программирование, Совершенный код, Научно-популярное] Разукрашиваем вывод в консоли: теория и практика
- [Python, Программирование, Работа с 3D-графикой, Учебный процесс в IT] 3D teeth instance segmentation. В темноте, но не один
- [Open source, Программирование, Геоинформационные сервисы, Визуализация данных, Научно-популярное] Легенды и мифы геофизики
- [Разработка под Linux, История IT, Старое железо] Вышел Floppinux 0.1.0 — дистрибутив Linux, умещающийся на одной 3.5-дюймовой дискете
Теги для поиска: #_messendzhery (Мессенджеры), #_platezhnye_sistemy (Платежные системы), #_python, #_api, #_python, #_yoomoney, #_jumoney (юmoney), #_api, #_api (апи), #_platezhi (платежи), #_telegram, #_telegram (телеграм), #_bot (бот), #_bot, #_messendzhery (
Мессенджеры
), #_platezhnye_sistemy (
Платежные системы
), #_python, #_api
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:07
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В данном посте мы научимся принимать платежи в Telegram боте с помощью API Yoomoney.ВведениеНачну с того, что я не так давно хотел создать магазин электронных товаров в Telegram. И столкнулся с проблемой, что на момент работы не было готовых решений. Хотелось принимать платежи без ИП и всякой этой движухи. Поэтому мой выбор был между Qiwi и Yoomoney (раньше Yandex Деньги). Сам я из Беларуси... Поэтому проще получить "Идентифицированный" аккаунт было у Yoomoney.В итоге создал библиотеку yoomoneyдля Python.Если данный пост вам помог, то поставьте звезду на GitHub. Мне будет очень приятно!Описание
from yoomoney import Authorize
Authorize( client_id="YOUR_CLIENT_ID", redirect_uri="YOUR_REDIRECT_URI", scope=["account-info", "operation-history", "operation-details", "incoming-transfers", "payment-p2p", "payment-shop", ] ) from yoomoney import Client
token = "YOUR_TOKEN" client = Client(token) user = client.account_info() print("Account number:", user.account) print("Account balance:", user.balance) print("Account currency code in ISO 4217 format:", user.currency) print("Account status:", user.account_status) print("Account type:", user.account_type) print("Extended balance information:") for pair in vars(user.balance_details): print("\t-->", pair, ":", vars(user.balance_details).get(pair)) print("Information about linked bank cards:") cards = user.cards_linked if len(cards) != 0: for card in cards: print(card.pan_fragment, " - ", card.type) else: print("No card is linked to the account") Account number: 410019014512803
Account balance: 999999999999.99 Account currency code in ISO 4217 format: 643 Account status: identified Account type: personal Extended balance information: --> total : 999999999999.99 --> available : 999999999999.99 --> deposition_pending : None --> blocked : None --> debt : None --> hold : None Information about linked bank cards: No card is linked to the account from yoomoney import Quickpay
quickpay = Quickpay( receiver="410019014512803", quickpay_form="shop", targets="Sponsor this project", paymentType="SB", sum=150, ) print(quickpay.base_url) print(quickpay.redirected_url) https://yoomoney.ru/quickpay/confirm.xml?receiver=410019014512803&quickpay-form=shop&targets=Sponsor%20this%20project&paymentType=SB&sum=150
https://yoomoney.ru/transfer/quickpay?requestId=343532353937313933395f66326561316639656131626539326632616434376662373665613831373636393537613336383639 Форма оплатыОплатить можно либо картой, либо переводом из кошелька.Теперь вопрос: Как нам определить, что именно этот человек оплатил счет? Для этого воспользуемся параметорм label - метка, которую сайт или приложение присваивает конкретному переводу. Например, в качестве метки можно указывать код или идентификатор заказа. И теперь наша программа будет выглядеть так: from yoomoney import Quickpay
quickpay = Quickpay( receiver="410019014512803", quickpay_form="shop", targets="Sponsor this project", paymentType="SB", sum=150, lebel="a1b2c3d4e5" ) print(quickpay.base_url) print(quickpay.redirected_url) from yoomoney import Client
token = "YOUR_TOKEN" client = Client(token) history = client.operation_history(label="a1b2c3d4e5") print("List of operations:") print("Next page starts with: ", history.next_record) for operation in history.operations: print() print("Operation:",operation.operation_id) print("\tStatus -->", operation.status) print("\tDatetime -->", operation.datetime) print("\tTitle -->", operation.title) print("\tPattern id -->", operation.pattern_id) print("\tDirection -->", operation.direction) print("\tAmount -->", operation.amount) print("\tLabel -->", operation.label) print("\tType -->", operation.type) List of operations:
Next page starts with: None Operation: 670278348725002105 Status --> success Datetime --> 2021-10-10 10:10:10 Title --> Пополнение с карты ****4487 Pattern id --> None Direction --> in Amount --> 150.0 Label --> a1b2c3d4e5 Type --> deposition =========== Источник: habr.com =========== Похожие новости:
Мессенджеры ), #_platezhnye_sistemy ( Платежные системы ), #_python, #_api |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 14:07
Часовой пояс: UTC + 5