Files
Fulfillment-Backend/routers/billing.py

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)