63 lines
1.6 KiB
Python
63 lines
1.6 KiB
Python
from fastapi import APIRouter
|
|
|
|
from backend.dependecies import SessionDependency, CurrentUserDependency
|
|
from external.billing import BillStatusUpdateRequest
|
|
from schemas.billing import *
|
|
from services.billing import BillingService
|
|
|
|
billing_router = APIRouter(
|
|
prefix='/billing',
|
|
tags=['billing']
|
|
)
|
|
|
|
|
|
@billing_router.post(
|
|
'/webhook'
|
|
)
|
|
async def webhook(
|
|
request: BillStatusUpdateRequest,
|
|
session: SessionDependency
|
|
):
|
|
try:
|
|
await BillingService(session).process_update(request)
|
|
return {'ok': True}
|
|
except Exception as e:
|
|
print(e)
|
|
return {'ok': False}
|
|
|
|
|
|
@billing_router.post(
|
|
'/create-deal-bill',
|
|
operation_id='create_deal_bill',
|
|
response_model=CreateCardBillResponse
|
|
)
|
|
async def create_deal_bill(
|
|
session: SessionDependency,
|
|
request: CreateCardBillRequest,
|
|
user: CurrentUserDependency
|
|
):
|
|
return await BillingService(session).create_card_billing(user, request)
|
|
@billing_router.post(
|
|
'/cancel-deal-bill',
|
|
operation_id='cancel_deal_bill',
|
|
response_model=CancelCardBillResponse
|
|
)
|
|
async def cancel_deal_billing(
|
|
session: SessionDependency,
|
|
request: CancelCardBillRequest,
|
|
user: CurrentUserDependency,
|
|
):
|
|
return await BillingService(session).cancel_card_billing(user, request)
|
|
|
|
|
|
@billing_router.get(
|
|
'/deal-bill-request/{deal_id}',
|
|
response_model=GetCardBillById,
|
|
operation_id='get_deal_bill_by_id'
|
|
)
|
|
async def get_deal_bill_by_id(
|
|
deal_id: int,
|
|
session: SessionDependency
|
|
):
|
|
return await BillingService(session).get_card_bill_by_id(deal_id)
|