Add miniapp purchase link support

This commit is contained in:
Egor
2025-10-01 05:56:51 +03:00
parent 37c552c705
commit 4fa87804d9
6 changed files with 111 additions and 0 deletions
+13
View File
@@ -24,6 +24,8 @@ from app.utils.telegram_webapp import (
from ..dependencies import get_db_session
from ..schemas.miniapp import (
MiniAppBranding,
MiniAppConfigResponse,
MiniAppConnectedServer,
MiniAppDevice,
MiniAppPromoGroup,
@@ -258,6 +260,16 @@ async def _load_subscription_links(
return payload
@router.get("/config", response_model=MiniAppConfigResponse)
async def get_miniapp_config() -> MiniAppConfigResponse:
branding_data = settings.get_miniapp_branding()
branding = MiniAppBranding(**branding_data) if branding_data else None
return MiniAppConfigResponse(
branding=branding,
subscription_purchase_url=settings.get_miniapp_purchase_url(),
)
@router.post("/subscription", response_model=MiniAppSubscriptionResponse)
async def get_subscription_details(
payload: MiniAppSubscriptionRequest,
@@ -383,6 +395,7 @@ async def get_subscription_details(
else None,
subscription_type="trial" if subscription.is_trial else "paid",
autopay_enabled=bool(subscription.autopay_enabled),
subscription_purchase_url=settings.get_miniapp_purchase_url(),
branding=settings.get_miniapp_branding(),
)
+6
View File
@@ -11,6 +11,11 @@ class MiniAppBranding(BaseModel):
service_description: Dict[str, Optional[str]] = Field(default_factory=dict)
class MiniAppConfigResponse(BaseModel):
branding: Optional[MiniAppBranding] = None
subscription_purchase_url: Optional[str] = None
class MiniAppSubscriptionRequest(BaseModel):
init_data: str = Field(..., alias="initData")
@@ -74,6 +79,7 @@ class MiniAppSubscriptionResponse(BaseModel):
user: MiniAppSubscriptionUser
subscription_url: Optional[str] = None
subscription_crypto_link: Optional[str] = None
subscription_purchase_url: Optional[str] = None
links: List[str] = Field(default_factory=list)
ss_conf_links: Dict[str, str] = Field(default_factory=dict)
connected_squads: List[str] = Field(default_factory=list)