feat: billing cancel
This commit is contained in:
@@ -7,7 +7,8 @@ from starlette import status
|
||||
|
||||
import backend.config
|
||||
from external.billing import BillingClient, CreateBillingRequestValue, CreateBillRequestSchema, CreateBillRequestItems, \
|
||||
BillStatusUpdateRequest, NotificationChannel, NotifyReceivedBillRequestSchema, BillPaymentInfo
|
||||
BillStatusUpdateRequest, NotificationChannel, NotifyReceivedBillRequestSchema, BillPaymentInfo, \
|
||||
DeleteBillRequestSchema
|
||||
from models import DealBillRequest, Deal
|
||||
from schemas.billing import *
|
||||
from services.base import BaseService
|
||||
@@ -116,3 +117,18 @@ class BillingService(BaseService):
|
||||
if not deal_bill:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail='Deal bill was not found')
|
||||
return GetDealBillById(deal_bill=DealBillRequestSchema.model_validate(deal_bill))
|
||||
|
||||
async def cancel_deal_billing(self, user, request: CancelDealBillRequest) -> CancelDealBillResponse:
|
||||
try:
|
||||
deal_bill = await self._get_deal_bill_by_id(request.deal_id)
|
||||
if not deal_bill:
|
||||
return CancelDealBillResponse(ok=False, message='Заявка не найдена')
|
||||
billing_client = BillingClient(backend.config.BILLING_API_KEY)
|
||||
response = await billing_client.delete(DeleteBillRequestSchema(listener_transaction_id=request.deal_id))
|
||||
if not response.ok:
|
||||
return CancelDealBillResponse(ok=False, message='Ошибка')
|
||||
await self.session.delete(deal_bill)
|
||||
await self.session.commit()
|
||||
return CancelDealBillResponse(ok=True, message='Заявка успешно отозвана')
|
||||
except Exception as e:
|
||||
return CancelDealBillResponse(ok=False, message=str(e))
|
||||
|
||||
Reference in New Issue
Block a user