export type BillingCatalogTier = 'pro' | 'pro_plus' /** 웹 결제는 Payple(KRW) 하나다. 모바일은 Google Play 스토어 가격을 쓰고 이 카탈로그에 오지 않는다. */ export type BillingCatalogProvider = 'payple' export interface BillingCatalogPrice { provider: BillingCatalogProvider unit_amount: number currency: string interval: 'day' | 'week' | 'month' | 'year' interval_count: number } export interface BillingCatalogPlan { tier: BillingCatalogTier prices: BillingCatalogPrice[] } export interface BillingCatalogResponse { schema_version: '1' plans: BillingCatalogPlan[] } export function createBillingCatalog(input: { payple?: Record | null }): BillingCatalogResponse { const tiers: BillingCatalogTier[] = ['pro', 'pro_plus'] return { schema_version: '1', plans: tiers.map((tier) => { const prices: BillingCatalogPrice[] = [] const paypleAmount = input.payple?.[tier] if (Number.isSafeInteger(paypleAmount) && (paypleAmount as number) > 0) { prices.push({ provider: 'payple', unit_amount: paypleAmount as number, currency: 'KRW', interval: 'month', interval_count: 1, }) } return { tier, prices } }), } }