Гайд Делаем простую автооплату через QIWI (VK)

clrn1w

Известный
Автор темы
317
146
Привет, увидел тему @S E V E N c автооплатой и решил сделать такое же на Python.
Что нам понадобится:
1) Python 3
2) Любая библиотека для работы с VK API (я буду использовать VKBottle)
3) Библиотека для работы с QIWI - pyQiwiP2P

После установки всего нам нужного приступаем к следующим этапам:

1) Переходим в раздел "Работа с API"
В данном разделе переходим в LongPoll API и включаем LongPoll, версию API выбираем 5.103
Переходим в "Типы событий" и включаем все события на "Входящие сообщения".

2) Переходим в раздел "Сообщения" и включаем сообщения группы.
Также там же переходим в раздел "Настройки для бота" и включаем возможности ботов.

Группа готова, переходим к коду, создаем Python файл и открываем его в любом текстовом редакторе.



Подключаем наши библиотеки:
Python:
from vkbottle.bot import Bot, Message
from pyqiwip2p import QiwiP2P
from pyqiwip2p.types import QiwiCustomer, QiwiDatetime

Далее нам нужно передать токен ВК:
Python:
bot = Bot("Токен ВК")

Для начала попробуем сделать реакцию на определенную команду, к примеру "/qiwi" и ответим на эту команду:
Python:
@bot.on.private_message(text='/qiwi')
async def test(message: Message):
    print(message)
    await message.answer('Я отреагировал на твое сообщение!')

bot.run_forever()
1609700901596.png


Теперь приступим к работе с QIWI, для оплаты мы будем использовать формы с оплатой.
Переходим на https://p2p.qiwi.com/, логинимся под свой кошелек.
Далее переходим в раздел "API" и создаем токен, сохраняем наш секретный ключ (не спутайте с PublicKey), в скрипте можно создать переменную с нашим ключом.
1609701101047.png


Где-то сверху вставляем данную строчку:
Python:
p2p = QiwiP2P(auth_key="Секретный токен QIWI")

Сделаем генерацию ссылки на форму по команде "/qiwi":
Python:
@bot.on.private_message(text='/qiwi')
async def test(message: Message):
    amount = 1 # Сумма 1 рубль
    lifetime = 15 # Форма будет жить 15 минут
    comment = 'Купить арбуз' # Комментарий
    bill = p2p.bill(amount=amount, lifetime=lifetime, comment=comment) # Выставление счета
    await message.answer(f'Сумма: {amount}\nСсылка живет: {lifetime} минут\nСсылка:\n{bill.pay_url}') # Отправляем ссылку человеку

bot.run_forever()

Теперь напишем боту команду "/qiwi", он должен прислать нам ссылку на оплату:
1609702384884.png
1609702478733.png

Как мы видим, все работает!
Теперь нам надо проверить платеж от пользователя, сделать это можно разными способами. Логику проверки придумаете сами, советую записывать рандом номера в БД и сверять их. Сейчас я только покажу как проверять платеж по команде, например "/check".
Python:
@bot.on.private_message(text='/check')
async def check(message: Message):
    status = qiwi.check_status(bill_id) # bill_id - номер платежа
    if status == 'PAID': # Если статус счета оплачен (PAID)
        await message.answer('Оплата прошла успешно!')
    else: # В другом случае
        await message.answer('Вы не оплатили счет!')

Теперь проверим.
1609703247932.png
 

winten

Потрачен
409
182
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Для телеги сможешь найти библиотеку?
aiogram для самого бота, библиотека для киви та же
а вообще зачем делать по 300 гайдов на одну тему да еще и по использованию АПИ????
 

clrn1w

Известный
Автор темы
317
146
Знаю

зачем вы плодите эти говнотемы... заюзал другой яп и взял две готовые библиотеки, ваааууу
В интернете не видел работы с P2P киви на python. Видел одну тему, но там библиотека устаревшая и не рабочая
 
1,417
1,029
  • Нравится
Реакции: Fott

st1vaha

Потрачен
14
4
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

odlidox

Новичок
1
0
после того как прописываю /check, в терминале такая ошибка:


Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Python39\lib\site-packages\vkbottle\dispatch\bot_router.py", line 20, in route
await view.handle_event(event, ctx_api, self.state_dispenser)
File "C:\Users\admin\AppData\Local\Programs\Python\Python39\lib\site-packages\vkbottle\dispatch\views\bot\message.py", line 60, in handle_event
handler_response = await handler.handle(message, **context_variables)
File "C:\Users\admin\AppData\Local\Programs\Python\Python39\lib\site-packages\vkbottle\dispatch\handlers\from_func_handler.py", line 26, in handle
return await self.handler(event, **context)
File "C:\Users\admin\Desktop\main.py", line 18, in check
status = qiwi.check_status(bill_id)
NameError: name 'qiwi' is not defined

помогите решить