Unity IAP 구매 처리 가이드
이 문서는 Unity의 In-App Purchase (IAP) 기능을 활용하여 구매 처리를 하는 방법에 대해 설명합니다. 이 API는 앱 내에서 유료 콘텐츠를 사용자가 구매할 수 있도록 도와줍니다. 다음은 구매 처리에 대한 간단한 설명과 활용 예제입니다.
구매 처리 개요
Unity IAP를 사용할 때, 사용자가 구매를 완료하게 되면 애플리케이션은 ProcessPurchase
메서드를 통해 구매 내역을 처리해야 합니다. 구매 완료 후에는 다음과 같은 결과를 반환합니다.
결과 | 설명 |
---|---|
PurchaseProcessingResult.Complete | 애플리케이션이 구매 처리를 완료하여 재 알리기가 필요 없음을 나타냅니다. |
PurchaseProcessingResult.Pending | 애플리케이션이 아직 구매를 처리 중이며, 다음 실행 시 ConfirmPendingPurchase 가 호출되지 않는 한 ProcessPurchase 가 호출됩니다. |
신뢰성 있는 구매 처리
Unity IAP는 네트워크 문제나 애플리케이션 크래시가 발생할 경우에도 구매 처리를 보장해야 합니다. 애플리케이션이 오프라인인 경우, 완료된 구매는 다음 초기화 시점에서 애플리케이션으로 전송됩니다.
즉시 완료 처리
PurchaseProcessingResult.Complete
가 반환되면, Unity IAP는 거래를 즉시 완료합니다. 그러나 소모품을 판매할 경우에는 주의가 필요합니다.
- 소모품 구매 및 처리: 온라인 게임의 화폐와 같이 서버에서 처리해야 하는 경우에는
PurchaseProcessingResult.Complete
를 반환하지 않도록 주의해야 합니다. 이는 사용자가 앱을 삭제할 경우, 구매 내역이 손실될 수 있기 때문입니다.
클라우드 저장소
소비 품목 구매를 클라우드에 저장할 때, 구매가 완료된 경우에만 PurchaseProcessingResult.Pending
를 반환하고 이후 ConfirmPendingPurchase
를 호출해야 합니다. 이 방식은 사용자가 애플리케이션을 재설치하더라도 구매 내역이 유실되지 않도록 보장합니다.
활용 및 응용 예제
- 구매 처리 로직 구현: 애플리케이션에서
ProcessPurchase
메서드를 구현하여 사용자가 구매 시 어떤 행동을 취할지 정의할 수 있습니다.
csharp public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) { // 구매가 완료된 경우 if (args.purchasedProduct.definition.id == "your_product_id") { // 로컬 콘텐츠 잠금 해제 또는 서버에 데이터 전송 UnlockContent(args.purchasedProduct); return PurchaseProcessingResult.Complete; } return PurchaseProcessingResult.Pending; }
- 서버와의 통신: 구매가 완료된 후, 서버와 통신하여 구매 영수증을 검증할 수 있습니다.
csharp public void ValidatePurchase(string receipt) { // 서버에 구매 영수증 전송 및 검증 로직 // ... }
- 사용자 알림: 구매가 완료되면 사용자에게 알림을 제공하여 구매 내역을 확인할 수 있도록 합니다.
csharp public void NotifyUser(string message) { // 사용자에게 알림 표시 Debug.Log(message); }
위의 예제들을 응용하여, Unity IAP를 통해 보다 신뢰성 있는 구매 처리 로직을 구축할 수 있습니다.