Webhooks#

Quick example:

import logging

from aiogram import Bot, Dispatcher
from aiogram.dispatcher.webhook import configure_app
from aiohttp import web

from glQiwiApi import QiwiWallet
from glQiwiApi.core.event_fetching.dispatcher import QiwiDispatcher
from glQiwiApi.core.event_fetching.executor import Context, configure_app_for_qiwi_webhooks
from glQiwiApi.core.event_fetching.webhooks.config import (
    EncryptionConfig,
    HookRegistrationConfig,
    WebhookConfig,
)
from glQiwiApi.qiwi.clients.p2p.types import BillWebhook

qiwi_dp = QiwiDispatcher()

dp = Dispatcher(Bot('BOT TOKEN'))
wallet = QiwiWallet(api_access_token='wallet api token')


@qiwi_dp.bill_handler()
async def handle_webhook(webhook: BillWebhook, ctx: Context):
    # handle bill
    bill = webhook.bill


app = web.Application()
configure_app(
    dp,
    configure_app_for_qiwi_webhooks(
        wallet,
        qiwi_dp,
        app,
        WebhookConfig(
            encryption=EncryptionConfig(
                secret_p2p_key='secret p2p token, который был зарегистрирован с указанием айпи. '
                'Например http://айпи:8080/webhooks/qiwi/bills/'
            ),
            hook_registration=HookRegistrationConfig(host_or_ip_address='айпи:8080'),
        ),
    ),
    '/bot',
)

logging.basicConfig(level=logging.DEBUG)

if __name__ == '__main__':
    # Порт может быть любым
    web.run_app(app, port=8080)