From a2cda9b4ee6fb519649fbb54a9a31c5cde80c930 Mon Sep 17 00:00:00 2001 From: ByungCheol Date: Sun, 28 Jun 2026 19:20:14 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=B2=AB=20=EC=B6=9C=EC=8B=9C=20?= =?UTF-8?q?=EB=AC=B4=EB=A3=8C=20=EC=95=B1=20=E2=80=94=20=EC=9D=B8=EC=95=B1?= =?UTF-8?q?=EA=B2=B0=EC=A0=9C(=EA=B5=AC=EB=8F=85)=20=EC=A7=84=EC=9E=85?= =?UTF-8?q?=EC=A0=90=20=EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BILLING_ENABLED=false 플래그 추가(features.js) - 실연동 전 구매 흐름이 테스트 스텁이라, 활성화 시 결제 없이 프리미엄이 부여되는 문제가 있어 구매 진입점을 모두 숨김 - UpgradeView: 구매 버튼 대신 '구독 곧 출시 예정' 안내 - AccountInfoView: 정기결제 관리 카드 + 업그레이드 링크 미노출 - 무료 기능은 정상 동작, 실 Google Play Billing 연동은 다음 업데이트 Co-Authored-By: Claude Opus 4.8 --- src/config/features.js | 7 +++++++ src/views/UpgradeView.vue | 11 ++++++++++- src/views/settings/AccountInfoView.vue | 12 ++++++++---- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/config/features.js b/src/config/features.js index ab55e9c..83499a2 100644 --- a/src/config/features.js +++ b/src/config/features.js @@ -8,3 +8,10 @@ export const ID_LOGIN_ENABLED = false // 스토어 첫 출시에서는 Google Play 알림 접근 정책 심사 회피를 위해 비활성화. // (AndroidManifest 의 CardNotifListenerService 선언도 함께 주석 처리되어 있음) export const CARD_NOTIF_ENABLED = false + +// 인앱결제(유료 구독) 기능. +// 첫 출시는 무료 앱으로 등록 — 실제 Google Play Billing 연동(결제 플러그인 + +// 서버 영수증 검증) 전까지는 구매 흐름이 테스트 스텁이라, 활성화하면 결제 없이 +// 프리미엄이 부여되는 문제가 있다. 그래서 구매 진입점을 모두 숨긴다. +// 실연동 완료 후 true 로 바꾸면 업그레이드/정기결제 관리 화면이 다시 노출된다. +export const BILLING_ENABLED = false diff --git a/src/views/UpgradeView.vue b/src/views/UpgradeView.vue index da6e63e..be18465 100644 --- a/src/views/UpgradeView.vue +++ b/src/views/UpgradeView.vue @@ -4,6 +4,7 @@ import { useRouter } from 'vue-router' import { useAuthStore } from '@/stores/auth' import { billingApi } from '@/api/billingApi' import { billing } from '@/native/billing' +import { BILLING_ENABLED } from '@/config/features' const router = useRouter() const auth = useAuthStore() @@ -29,7 +30,7 @@ function fmtDate(s) { } onMounted(async () => { - if (!isNative) return // PC 는 상품 목록 불필요 + if (!isNative || !BILLING_ENABLED) return // PC·결제 비활성화 시 상품 목록 불필요 try { products.value = await billingApi.products() } catch { @@ -112,6 +113,14 @@ function goBack() { 프리미엄 이용 중 · {{ fmtDate(expiresAt) }}까지

+ + +