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=CreateDealBillResponse
 | 
						|
)
 | 
						|
async def create_deal_bill(
 | 
						|
        session: SessionDependency,
 | 
						|
        request: CreateDealBillRequest,
 | 
						|
        user: CurrentUserDependency
 | 
						|
):
 | 
						|
    return await BillingService(session).create_deal_billing(user, request)
 | 
						|
@billing_router.post(
 | 
						|
    '/cancel-deal-bill',
 | 
						|
    operation_id='cancel_deal_bill',
 | 
						|
    response_model=CancelDealBillResponse
 | 
						|
)
 | 
						|
async def cancel_deal_billing(
 | 
						|
        session: SessionDependency,
 | 
						|
        request: CancelDealBillRequest,
 | 
						|
        user: CurrentUserDependency
 | 
						|
):
 | 
						|
    return await BillingService(session).cancel_deal_billing(user, request)
 | 
						|
 | 
						|
 | 
						|
@billing_router.get(
 | 
						|
    '/deal-bill-request/{deal_id}',
 | 
						|
    response_model=GetDealBillById,
 | 
						|
    operation_id='get_deal_bill_by_id'
 | 
						|
)
 | 
						|
async def get_deal_bill_by_id(
 | 
						|
        deal_id: int,
 | 
						|
        session: SessionDependency
 | 
						|
):
 | 
						|
    return await BillingService(session).get_deal_bill_by_id(deal_id)
 |