Прием платежей на Яндекс.Деньги физ. лица
- онлайн платежи с карты, яндекса, телефона
- добавление метки к платежу
- получение и проверка оповещений на свой сервер
- пример автоматизации подписки на Telegram бота
-
money.yandex.ru - именной кошелек на который получаем деньги
-
httpsserver - python сервер генерирующий страницы оплаты и принимающий оповещения от яндекса
-
billingservice - remote процедура, вызываемая после получения оповещения о платеже, работает с базой
-
redis-server - используется как сервер очередей для удаленного вызова процедур
-
example/telegrambot - пример генерации ссылок для оплаты Telegram ботом
- Регистрируемся, повышаем статус кошелька до именного
- НАСТРОЙКИ->ВСЕ ОСТАЛЬНОЕ->HTTP УВЕДОМЛЕНИЯ
- Добавляем свой домен и секрет
- Включаем уведомления
- Поднимаем redis-server, вносим параметры доступа в rq_access.py
- Получаем SSL сертификат на домен, например через letsencrypt
- Поднимаем https сервер со своими параметрами, не забываем про фаервол если сервер не доступен
- Прописываем в httpsserver/.secret/ymsecret.py id кошелька и секрет для уведомлений из настроек
- Правим httpserver-ympayment.service, запускаем сервер под супервизором
- На машине с базой правим billing.service и запускаем systemd для этого сервиса запустится RQ worker
- Проверяем удаленный запуск процедур через очередь Redis
- Опираясь на example добавляем генерацию ссылки оплаты в вашу функцию бота
Нажимаем /subscribe в @AudioTubeBot:
- вызывается generate_subscribe_link() через RedisQueue
- удаленная процедура генерирует ссылку, защищенную от изменений хэшем на основе токена бота
- в базе данных создаются объекты invoice для каждого типа подписки
- через RQ возвращаются ссылки, которые вставляются в отправленное ботом сообщение
Переходим по ссылке:
- попадаем в обработчик GET запроса на httpsserver
- рассчитывается хэш, проверяется валидность ссылки, невалидная отклоняется
- в кнопки подставляются данные из ссылки, в т.ч. label - уникальный идентификатор инвойса
- к платежу прикрепляется label, при успешном платеже яндекс отправляет оповещение POST запросом
- чтобы проверить его валидность - рассчитываем хэш на основе общего с яндексом секрета
- из валидного запроса берем label и operation_id, вызываем удаленную процедуру successful_payment_callback()
- удаленная процедура проверяет - нет ли такого id в списке завершенных операций, если нет -
выполняет подписку и вносит operation_id в список завершенных операций - уведомляем пользователя, пишем лог
@AudioTubeBot - лучший бот для работы с аудио (реально лучший)
@VideoTubeBot - лучший бот для работы с видео (реально лучший)
@MediaTube_stream - канал автора (не самый лучший, но подписывайтесь)
@MediaTube_chat - чат для вопросов и выражения благодарности
Призываю всех желающих внести посильный вклад и замечания в работу над сервисом