Подключение юкасса к Телеграмм боту

В статье-инструкции расскажу, как начал монетизировать telegram бота, который присылает уведомления о необходимости продлить домен, тем самым делает напоминание, чтобы пользователь продлил домен во время и не потерял его. За 2 часа, добавил кнопку доната и настроил интеграцию с ЮKassa. Через 1 день уже начал принимать донаты.

  • Зачем становиться самозанятым?
  • Становимся самозанятым.
  • Открытие счета в ЮKassa.
  • Добавляем автоматическую отправку чеков в налоговую.
  • Сколько в итоге потеряю на налогах и комиссиях?
  • Интеграция ЮKassa в телеграм-бота.

Наверное каждый хочет начать монетизацию своего telegram бота, но могут отталкивать технические сложности, или не хочется заниматься регистрацией ООО или ИП.

На практике, не так все сложно, с помощью этой статьи-инструкции можно стать самозанятым, открыть счет, интегрировать платежную систему в telegram бота и начать принимать платежи, при этом автоматически отчитываться перед налоговой.

Как подключить онлайн кассу ЮКасса к Telegram боту на aiogram

Зачем становиться самозанятым?

Преимущества, которые дает самозанятость:

  • Позволяет работать легально и не получить штраф или судебное разбирательство за неуплату налогов и незаконную предпринимательскую деятельность;
  • Не требуется оформление юридического лица;
  • Сам плачу за себя налоги, от заказчика требуется только оплатить услуги или товар;
  • Можно официально подтвердить свои доходы, например для получения визы, кредита или ипотеки;
  • Предоставление чеков клиентам поможет повысить их доверие к продукту;
  • Предприниматели-одиночки без наемного персонала могут снизить налоговую нагрузку;
  • Юрлица — компании и ИП — могут пользоваться услугами и покупать товары напрямую у самозанятых граждан, не исполняя обязанности налогового агента.

Становимся самозанятым.

Становимся самозанятым, для того, чтобы могли заключить договор с ЮKassa и открыть счет для принятия платежей, а так же ЮKassa могла делать вывод средств на наш счет в банке. Самозанятые платят самый маленький налог:

  • 4% за доходы от физических лиц — наши донаты и платежи.
  • 6% за доходы от юридических лиц, например когда к нам придет рекламодатель и захочет оплатить интеграцию или рекламный пост.

Для оформления самозанятости необходимо наличие карты Tinkoff. Если счета нет, то его нужно открыть в банке Тинькофф.

Оформляем самозанятость через мобильное приложение Тинькофф. Откройте «Главная» → «Открыть новый продукт» → «Самозанятость» → кнопка «Оформить самозанятость».

Оформление самозанятости в мобильном приложении Тинькофф.

Не могу сказать, можно ли оформить самозанятость через приложения других банков. Но встать на учет самозанятому можно в приложении «Мой налог» по учетной записи Госуслуг. Если у вас есть банковский счет в другом банке, вы можете подать заявление на самозанятого, в приложении «Мой налог».

Тинькофф сам подает заявление в налоговую службу. Самозанятость оформляется за 5–10 минут, хотя в моем случае постановка на учет в налоговую заняла 4 часа.

Telegram бот на Python | Подключение платежной системы

Уведомление о подаче заявления в приложении «Мой налог»
Уведомление об успешном постановлении на учет в приложении «Мой налог»

Пока ждем решения налоговой, скачиваем приложение «Мой налог». После каждой оплаты или доната, нужно заявлять наш доход и оплачивать налоги. Позже настроим автоматическую отправку чеков в налоговую из личного кабинета ЮKassa. Если у вас небольшое количество операций, то можно заявлять доход в ручную, в приложении «Мой налог».

Скачиваем приложение «Мой налог»:

Еще по теме:  Что значит вп в Телеграмме

Скриншот бонуса из приложения «Мой налог»

Из приятного. Каждому налогоплательщику, который впервые регистрируется в качестве самозанятого, предоставляется налоговый вычет в размере 10 000 рублей (бонус). Бонус — это сумма, которая уменьшает налог. Он предоставляется государством единожды и расходуется постепенно. Бонус уменьшает налоговую ставку на 1% по вознаграждениям, полученным от физических лиц, и на 2% — по вознаграждениям от юридических лиц или индивидуальных предпринимателей.

Открытие счета в ЮKassa.

Регистрируемся в ЮKassa. Сразу после регистрации можно указать данные для договора и заполнить настройки. Это можно делать одновременно, но лучше сначала отправить данные — пока менеджеры их проверяют, вы сможете разобраться с настройками. На сайте ЮKassa есть инструкция по заполнению и подписанию договора.

Бот будет принимать платежи без сайта, будем выставлять счет на оплату и отправлять его пользователю. Все остальные данные договора заполняем по инструкции и отправляем на проверку. Если в заполненном договоре не будет ошибок, то мы получим уведомление на почту, что договор готов и его необходимо подписать.

Письмо на почту, после проверки данных договора.

После того, как мы подпишем договор и загрузим его в личном кабинете ЮKassa, можно перейти к написанию кода и интеграции платежной системы в бота. Проверка данных может занимать от одного до трех рабочих дней. После проверки мы сможем принимать платежи.

В ЮKassa есть возможность использовать тестовые данные, для разработки и тестирования, которые позволяют нам начать интеграцию платежной системы прямо сейчас. Перейдем в тестовый магазин, нам необходимы будут следующие данные, для интеграции с ЮKassa API:

Когда нам откроют счет, мы сможем заменить тестовые данные на реальные и начать принимать платежи.

Добавляем автоматическую отправку чеков в налоговую.

По данной инструкции, делаем автоматическую отправку чеков в налоговую, чтобы зафиксировать доход и оплатить налог на прибыль. ЮKassa берет комиссию за отправку чека 1,2% от суммы платежа. Если на начальном этапе, у вас мало оплат, можно делать отправку чеков в ручном режиме, через приложение «Мой налог».

Запрос разрешения от ЮKassa в приложении Мой налог, для отправки чеков.
Сколько в итоге потеряю на налогах и комиссиях?

Комиссия ЮKassa с каждой операции 3.5% и за отправку чека 1.2% (НДС уже включён). Налог в федеральную налоговую службу составляет 4%.

Допустим наш донат 100 рублей. Со 100 рублей в ЮKassa уходит 4 рубля 70 копеек, в федеральную налоговую службу уходит 4 рубля.

Итого, от 100 рублей у нас остается 91 рубля 30 копеек. Таким образом, с каждой транзакции мы отдаем 9,7% от суммы платежа.

Интеграция ЮKassa в телеграм-бота

Устанавливаем клиент для работы с платежами по API ЮKassa

composer require yoomoney/yookassa-sdk-php

Telegram бот отправляет уведомления об истечении срока регистрации домена, под сообщением располагается кнопка доната. У меня это делается в очереди сообщений, у вас может быть любая другая реализация, например определенное событие, которое срабатывает в конкретный момент времени. Например, по расписанию в 12:00 запускается скрипт.

Telegram.php Класс реализующий методы Telegram API. Статический метод Telegram::sendKeyboard() отправляет пользователю сообщение $message с набором кнопок Keyboard::getDonateButton(100) — возвращает массив набора кнопок inline_keyboard.

Класс, который отвечает за формирования и получения набора кнопок. Статический метод Keyboard::getDonateButton() возвращает кнопку доната со ссылкой на оплату выставленного счета.

Класс для работы с данными платежа. Создает и формирует данные платежа, чтобы дальше передать их для создания счета в ЮKassa.

Еще по теме:  Как загрузить фильм в Телеграмм канал

Все переменные окружения добавляем в .env

#YooKassa YOOKASSA_SHOP_ID=ВАШ_YOOKASSA_SHOP_ID YOOKASSA_SECRET_KEY=ВАШ_ YOOKASSA_SECRET_KEY # Телеграм бот TELEGRAM_BOT_URL=ВАШ_TELEGRAM_BOT_URL TELEGRAM_BOT_API_URL=https://api.telegram.org/bot TELEGRAM_BOT_API_ACCESS_TOKEN=ВАШ_TELEGRAM_BOT_API_ACCESS_TOKEN TELEGRAM_CHAT_ID=ВАШ_TELEGRAM_CHAT_ID

В результате telegram бот будет отправлять уведомление о необходимости продлить домен, а под сообщением будет кнопка, со ссылкой на выставленный счет. Если пользователь захочет отблагодарить, за вовремя присланное напоминание, что необходимо продлить домен, чтобы не потерять его.

Уведомление о необходимости продления домена в telegram боте YourDomainBot

Мой Telegram-канал, где я делюсь идеями и процессом работы над пет-проектами.

Источник: vc.ru

Подключение ЮKassa

ЮKassa – сервис приёма платежей для бизнеса, с быстрым подключением и современным API.

Инструкция по подключению

  1. Зарегистрируйтесь в ЮKasse. Способ подключения – протокол API. Чтобы получить выгодные условия подключения используйте партнерскую ссылку или промокод botobot.

2. В личном кабинете в разделе Платежи выберите Подключить > ЮKassa

3. В ЮKassa скопируйте shopId из раздела Настройки > Магазин и Секретный ключ из Интеграция > Ключи API в настройки магазина Botobot. Нажмите Сохранить.

4. В ЮКасса в разделе Интеграция > HTTP-уведомления в поле URL для уведомлений указать адрес https://www.botobot.ru/billing/yookassa/webhook Нажмите Сохранить.

Интеграция успешно подключена, можно принимать платежи.

Обновления марта

Март выдался горячим Рассказываем, что нового появилось в сервисе: Добавили платежную систему Liqpay. Теперь можно принимать платежи и на территории Украины Запустили закрытый тест реферальной программы для магазинов. Скоро будет доступна всем пользователям

Доработки февраля

В настройках промокодов добавили настройку для учета минимальной суммы заказа до или после применения скидки Добавили раздел ⭐️ Избранное – покупатели могут отмечать любимые товары В Источниках выводится дополнительная статистика по рекламным переходам Добавили новую

Источник: www.botobot.ru

Интеграция оплаты Юкасса в telegramm для самозанятых

Привет тем кто хочет опробовать себя в качестве бизнесмена! Недавно в голову пришла идея, получить некоторый опыт предпринимательства. В качестве продукта выступает доступ к некоторой цифровой услуге, а контроль за оплатой этой услуги ложиться на плечи телеграмм бота. В ходе поисков системы оплаты была найдена Юкасса, одна из немногих систем (если вообще не единственная), которая работает с самозанятыми.

На сайте подробно описана интеграция оплаты в telegramm бота. Однако на этапе подписания документов выясняется что интеграция недоступна для самозанятых.

Обидно, но других вариантов оплаты самозанятому найти не удалось, поэтому решено было попробовать написать собственный вариант оплаты. В ходе беглого гугления, не удалось найти готовых решений по самостоятельной реализации оплаты, чему я был сильно огорчен, так-как это скорее всего означало большую сложность собственноручной реализации оплаты. Но так-как, бот был уже готов, я решил попробовать какие-то ещё варианты. Изначально я не думал делать собственную интеграцию, а хотел выставлять многоразовые счета, а потом по примечанию к платежу отслеживать успешные оплаты. Однако, оказалось что интеграция оплаты реализуется гораздо проще, и по факту, в самом дубовом варианте без веб хуков, состоит всего из двух функций.

Интеграция для самозанятых

Реализовать оплату услуг самозанятого можно через сайт юкассы. Я это реализовал следующим образом: клиент запрашивает в боте услугу, в ответ ему приходит ссылка на оплату, клиент переходит и оплачивает товар, после чего его перенаправляет обратно в бот. Обработка же платежа работает следующим образом: как только создается ссылка на оплату, бот запрашивает статус платежа, до тех пор пока статус является «pending». Как только статус меняется на «succeeded» бот выполняет действие (отправляет товар/оказывает услугу и тд).

Еще по теме:  Если подписаться на канал в Телеграм увидят ли меня

Для реализации такой схемы необходим модуль yookassa откуда мы возьмем классы Configuration и Payment. Далее необходимо заполнить два поля класса Configuration: Configuration.account_id и Configuration.secret_key , в первый записываем id магазина, во второй api ключ магазина.

import json from yookassa import Configuration,Payment import config Configuration.account_id = config.SHOP_ID Configuration.secret_key = config.SHOP_API_TOKEN

Далее с помощью метода Payment.create , необходимо создать объект платежа. При создании этот метод сам отправит данные в юкассу.

import json from yookassa import Configuration,Payment import config Configuration.account_id = config.SHOP_ID Configuration.secret_key = config.SHOP_API_TOKEN payment = Payment.create(< «amount»: < «value»: сумма платежа, «currency»: «RUB» >, «payment_method_data»: < «type»: «bank_card» >, «confirmation»: < «type»: «redirect», «return_url»: «Ссылка, куда перенаправить после совершения платежа» >, «capture»: True, «description»: description >)

Платеж создан, теперь необходимо получить id операции (понадобиться позже) и ссылку на оплату, которую мы и отправим пользователю. Для этого воспользуемся методом json(), который запросит данные по платежу на сервере юкассы и вернет их в формате json. Для удобства преобразуем json в словарь python :

import json from yookassa import Configuration,Payment import config Configuration.account_id = config.SHOP_ID Configuration.secret_key = config.SHOP_API_TOKEN payment = Payment.create(< «amount»: < «value»: сумма платежа, «currency»: «RUB» >, «payment_method_data»: < «type»: «bank_card» >, «confirmation»: < «type»: «redirect», «return_url»: «Ссылка, куда перенаправить после совершения платежа» >, «capture»: True, «description»: description >) payment_data = json.loads(payment.json()) payment_id = payment_data[‘id’] payment_url = (payment_data[‘confirmation’])[‘confirmation_url’]

Теперь можно отправить payment_url пользователю, по которому он сможет оплатить товар. Однако мы пока не знаем оплатил пользователь товар или нет. Для получения статуса платежа реализуем метод Payment.find_one(payment_id)).json(), которые найдет платеж по указанному id (который мы получили на прошлом шаге) и пришлет его статус в формате json. Далее мы будем опрашивать этот метод до тех пор пока статус платежа не измениться с pending на успешный / не успешный.

import json from yookassa import Configuration,Payment import config import time Configuration.account_id = config.SHOP_ID Configuration.secret_key = config.SHOP_API_TOKEN payment = Payment.create(< «amount»: < «value»: сумма платежа, «currency»: «RUB» >, «payment_method_data»: < «type»: «bank_card» >, «confirmation»: < «type»: «redirect», «return_url»: «Ссылка, куда перенаправить после совершения платежа» >, «capture»: True, «description»: description >) payment_data = json.loads(payment.json()) payment_id = payment_data[‘id’] payment_url = (payment_data[‘confirmation’])[‘confirmation_url’] payment = json.loads((Payment.find_one(payment_id)).json()) while payment[‘status’] == ‘pending’: payment = json.loads((Payment.find_one(payment_id)).json()) time.sleep(время между опросами)

Теперь при успешной оплате или таймауте операции (что-то около 15 минут), мы выйдем из цикла, однако здесь существует огромная проблема, с тем, что если вызывать эти методы из бота, бот будет заблокирован на весь период оплаты. Чтобы избежать подобного поведения будем использовать асинхронный sleep. А также реализуем логику оплаты в виде двух функций: создания и проверки статуса платежа

import json from yookassa import Configuration,Payment import config import asyncio Configuration.account_id = config.SHOP_ID Configuration.secret_key = config.SHOP_API_TOKEN def payment(value,description): payment = Payment.create(< «amount»: < «value»: value, «currency»: «RUB» >, «payment_method_data»: < «type»: «bank_card» >, «confirmation»: < «type»: «redirect», «return_url»: «урл редиректа» >, «capture»: True, «description»: description >) return json.loads(payment.json()) async def check_payment(payment_id): payment = json.loads((Payment.find_one(payment_id)).json()) while payment[‘status’] == ‘pending’: payment = json.loads((Payment.find_one(payment_id)).json()) await asyncio.sleep(3) if payment[‘status’]==’succeeded’: print(«SUCCSESS RETURN») print(payment) return True else: print(«BAD RETURN») print(payment) return False

  • юкасса
  • telegrambot
  • самозанятые
  • интеграция сервисов
  • Платежные системы
  • Python
  • Управление e-commerce

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...