Unity IAP v5는 StoreController를 활용한 이벤트 기반 시스템으로, 제품 및 구매 내역 조회, 구매 라이프사이클 관리를 위한 이벤트를 제공합니다. 🔄
클라이언트 측 APStoreManager는 PlayerEconomyManager, StoreServiceBindings, StoreController, ReceiptValidationComponent 등을 포함하며, 구매 진행 상태를 추적하고 성공/실패 이벤트를 처리합니다. 📱
초기화 과정은 플레이어 로그인 및 경제 설정 동기화 후 InitializeAsync를 통해 스토어 연결, 제품 정보 비동기 조회, 영수증 유효성 검사기 설정을 포함합니다. 🚀
제품 정의는 Unity Economy Dashboard의 실물 구매 설정에서 가져오거나 IAP 카탈로그 시스템을 사용할 수 있으며, 모든 실물 구매는 소모품으로 가정하고 비소모품은 별도 처리해야 합니다. 🛍️
영수증 유효성 검사는 CrossPlatformValidator를 통해 이루어지며, Google Play 구매에 필수적이고 Apple은 StoreKit 2에서 내부적으로 처리하며, 기본적인 사기 방지 역할을 합니다. 🛡️
구매 흐름은 PurchaseProduct 호출로 시작하여 OnPurchasePending 이벤트를 발생시키고, 클라이언트 측 유효성 검사 후 클라우드 코드로 영수증을 전송하여 서버 측 유효성 검사를 수행합니다. 💸
클라우드 코드의 processRealMoneyPurchase 함수는 영수증을 파싱하여 스토어 유형에 따라 적절한 구매 처리 메서드로 라우팅하고, 보상을 지급하며, 업데이트된 경제 데이터를 클라이언트에 반환합니다. ☁️
서버 측 유효성 검사 전에 플레이어 자격 확인 등 맞춤형 비즈니스 로직을 추가할 수 있으며, 이는 클라이언트 측 유효성 검사와 함께 이중 검증을 통해 보안을 강화합니다. 🔒
가짜 스토어(Fake Store)는 에디터 내 테스트를 위해 수동으로 보상을 지급하며, 실제 스토어(Google Play, Apple App Store)는 각 플랫폼의 서버와 연동하여 영수증을 검증하고 보상을 적용합니다. 🧪
보상 지급은 경제 설정에서 실물 구매 정의를 찾아 자원 유형(통화 또는 인벤토리 아이템)을 식별한 후, 해당 경제 API를 사용하여 보상을 부여하는 방식으로 이루어집니다. 🎁
Google Play 라이선스 키와 같은 난독화된 유효성 검사 키를 설정하여 무단 접근 및 조작으로부터 보호하는 것이 중요합니다. 🔑