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

clrn1w

Известный
Автор темы
315
145
Привет, увидел тему @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

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

clrn1w

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

зачем вы плодите эти говнотемы... заюзал другой яп и взял две готовые библиотеки, ваааууу
В интернете не видел работы с P2P киви на python. Видел одну тему, но там библиотека устаревшая и не рабочая
 
1,414
1,040
  • Нравится
Реакции: 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

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