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)
 |