PDA

Просмотр полной версии : Делаем простую автооплату через QIWI (VK)


clrn1w
03.01.2021, 23:47
Привет, увидел тему @S E V E N (https://forum.antichat.xyz/members/2294442/) c автооплатой и решил сделать такое же на Python.

Что нам понадобится:

1) Python 3

2) Любая библиотека для работы с VK API (я буду использовать VKBottle (https://github.com/timoniq/vkbottle))

3) Библиотека для работы с QIWI - pyQiwiP2P (https://github.com/WhiteApfel/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
(
)




https://forum.antichat.xyz/attachments/27639746/img_e8a9276351.png


Теперь приступим к работе с QIWI, для оплаты мы будем использовать формы с оплатой.

Переходим на https://p2p.qiwi.com/, логинимся под свой кошелек.

Далее переходим в раздел "API" и создаем токен, сохраняем наш секретный ключ (не спутайте с PublicKey), в скрипте можно создать переменную с нашим ключом.
https://forum.antichat.xyz/attachments/27639746/img_0a03206b2e.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{b ill.pay_url}'
)
# Отправляем ссылку человеку
bot
.
run_forever
(
)




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

https://forum.antichat.xyz/attachments/27639746/img_c9f21a33e0.png

https://forum.antichat.xyz/attachments/27639746/img_69982b857d.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
(
'Вы не оплатили счет!'
)






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


https://forum.antichat.xyz/attachments/27639746/img_c0d6fd5c5a.png

Disturbed
03.01.2021, 23:58
Для телеги сможешь найти библиотеку?

winten
04.01.2021, 00:05
Для телеги сможешь найти библиотеку?


aiogram для самого бота, библиотека для киви та же

а вообще зачем делать по 300 гайдов на одну тему да еще и по использованию АПИ????

clrn1w
04.01.2021, 00:08
Для телеги сможешь найти библиотеку?


aiogram, telebot

kin4stat
04.01.2021, 04:12
telebot


Он синхронный

randazzo
04.01.2021, 05:09
зачем вы плодите эти говнотемы... заюзал другой яп и взял две готовые библиотеки, ваааууу

clrn1w
04.01.2021, 09:56
Он синхронный


Знаю



зачем вы плодите эти говнотемы... заюзал другой яп и взял две готовые библиотеки, ваааууу


В интернете не видел работы с P2P киви на python. Видел одну тему, но там библиотека устаревшая и не рабочая

randazzo
04.01.2021, 10:06
В интернете не видел работы с P2P киви на python. Видел одну тему, но там библиотека устаревшая и не рабочая


https://github.com/WhiteApfel/pyQiwiP2P#что-есть (https://github.com/WhiteApfel/pyQiwiP2P#%D1%87%D1%82%D0%BE-%D0%B5%D1%81%D1%82%D1%8C) ни одной работы.

как гайд эта тема говно, "я вам тут накидал чет, если захотите - доделаете"

clrn1w
04.01.2021, 11:03
https://github.com/WhiteApfel/pyQiwiP2P#что-есть (https://github.com/WhiteApfel/pyQiwiP2P#%D1%87%D1%82%D0%BE-%D0%B5%D1%81%D1%82%D1%8C) ни одной работы.
как гайд эта тема говно, "я вам тут накидал чет, если захотите - доделаете"


Библиотека не популярна, я ее откопал *** знает откуда

Leatington
04.01.2021, 11:04
Где мой любимый PHP?

randazzo
04.01.2021, 11:16
Библиотека не популярна, я ее откопал *** знает откуда



https://forum.antichat.xyz/attachments/27639983/img_9428fd3683.png

сочувствую

clrn1w
04.01.2021, 11:20
сочувствую


Хуй знает чё ты на меня наезжаешь? Если не хочешь видеть данную тему - удаляй

T1cKz
04.01.2021, 17:27
Та норм, чё

st1vaha
04.01.2021, 18:52
сочувствую


Тоже чела не понимаю, тема вроде уже и так понятна, он еще одну делает, типо челам лень загуглить?

odlidox
25.01.2021, 21:35
после того как прописываю /check, в терминале такая ошибка:

Traceback (most recent call last):

File "C:\Users\admin\AppData\Local\Programs\Python\Pytho n39\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\Pytho n39\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\Pytho n39\lib\site-packages\vkbottle\dispatch\handlers\from_func_hand ler.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

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

kin4stat
27.01.2021, 13:31
после того как прописываю /check, в терминале такая ошибка:

Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Pytho n39\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\Pytho n39\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\Pytho n39\lib\site-packages\vkbottle\dispatch\handlers\from_func_hand ler.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

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


Не трогай это пожалуйста

clrn1w
27.01.2021, 16:48
после того как прописываю /check, в терминале такая ошибка:

Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Pytho n39\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\Pytho n39\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\Pytho n39\lib\site-packages\vkbottle\dispatch\handlers\from_func_hand ler.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

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


Переменная qiwi не обявлена.

yung milonov
08.02.2021, 21:28
прошу фулл код из-за ошибки



Traceback (most recent call last):

File "C:\Users\79277\main.py", line 109, in

status = qiwi.check_status(bill_id) # bill_id - номер платежа

NameError: name 'qiwi' is not defined

не у меня одного она есть

yung milonov
08.02.2021, 22:04
после того как прописываю /check, в терминале такая ошибка:

Traceback (most recent call last):
File "C:\Users\admin\AppData\Local\Programs\Python\Pytho n39\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\Pytho n39\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\Pytho n39\lib\site-packages\vkbottle\dispatch\handlers\from_func_hand ler.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

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


status = qiwi.check_status(bill_id) замени на status = bill.status

lovii
11.04.2021, 16:40
Неплохо. Но очень стандартно и просто.

Лично сам я сделал себе авто-оплату через хук.

Чел просто пополняет и ему приходит уведомление, ничего подтверждать и т.д. не надо.

За вкботл мое уважение

dzin
15.06.2021, 10:33
Для телеги сможешь найти библиотеку?


Разницы нет, главное самая библиотека киви

clicore
28.06.2021, 13:53
зачем вы плодите эти говнотемы... заюзал другой яп и взял две готовые библиотеки, ваааууу


А надо дрочиться писать на плюсах бота что ли? Всё что делается легче - это говно, да? Может ты просто дрочер, который любит въёбывать своё время впустую?

randazzo
28.06.2021, 16:30
А надо дрочиться писать на плюсах бота что ли? Всё что делается легче - это говно, да? Может ты просто дрочер, который любит въёбывать своё время впустую?


к чему ты высрал этот пост? смысл моего поста совсем не в том, что написание ботов на облегченных яп говно, а в том, что до автора этой темы уже делали подобный "гайд" и он лишь заменил яп, не рассказав ничего нового. получается, что ты въебал свое время впустую?

loossklxm
25.07.2021, 17:24
Как в параметре customFields передавать переменную "themeCode":"Кодпарметра"?

p2p.bill или куда?