Unity IAP (In-App Purchasing) 가이드
이 문서는 Unity에서 인앱 구매를 구현하는 방법을 자세히 설명합니다. Unity IAP를 사용하면 앱 내에서 사용자에게 추가 콘텐츠를 판매할 수 있습니다. 이 문서에서는 기본적인 설정, 영수증 처리, 거래 복구 및 테스트 방법을 포함하여 여러 예제를 제공합니다.
1. 기본 설정
Unity IAP를 사용하려면 다음과 같이 설정합니다:
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
builder.AddProduct("100_gold_coins", ProductType.Consumable, new IDs {
{ "100_gold_coins_google", GooglePlay.Name },
{ "100_gold_coins_mac", MacAppStore.Name }
});
UnityPurchasing.Initialize(this, builder);
1.1 제품 등록
제품을 등록할 때는 제품 ID와 상품 유형을 설정해야 합니다. 일반적으로 ProductType.Consumable
또는 ProductType.NonConsumable
을 사용합니다.
2. 영수증 읽기
앱 영수증은 기기에 저장된 정보이며, 다음과 같이 접근할 수 있습니다:
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
string receipt = builder.Configure<IAppleConfiguration>().appReceipt;
3. 결제 제한 확인
사용자가 결제를 할 수 있는지 여부는 다음과 같이 확인할 수 있습니다:
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
bool canMakePayments = builder.Configure<IAppleConfiguration>().canMakePayments;
4. 거래 복구
Apple 플랫폼의 경우 사용자가 이전 거래를 복구하기 위해 비밀번호 입력이 필요합니다. 이 과정에서는 ProcessPurchase
가 호출됩니다:
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions>().RestoreTransactions(result => {
if (result) {
// 복구 프로세스가 성공적으로 완료됨
} else {
// 복구 실패
}
});
}
5. 영수증 새로 고침
사용자가 로컬 저장소에 영수증이 없을 경우 서버에서 새로 영수증을 요청할 수 있습니다:
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions>().RefreshAppReceipt(receipt => {
Console.WriteLine(receipt);
}, () => {
// 요청 실패 시 처리
});
}
6. 구매 승인 및 거절
구매 승인 및 거절의 처리는 다음과 같이 수행합니다:
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
extensions.GetExtension<IAppleExtensions>().RegisterPurchaseDeferredListener(product => {
Console.WriteLine(product.definition.id);
});
}
7. 테스트 계정 생성
Apple에서 테스트를 수행하려면 iTunes Connect에서 테스트 계정을 만들어야 합니다. 테스트 후, NoProductsAvailable
오류가 발생하면 다음 사항을 확인하십시오:
- Unity IAP에 제공된 상품 ID가 정확한지 확인
- 애플리케이션 내 구매가 활성화되어 있는지 확인
- 상품이 판매 중인지 확인
8. 거래 영수증 검증
거래 영수증은 로컬에서 검증할 수 없으며, 원격 서버에 전송하여 검증해야 합니다. JSON 응답 예제는 다음과 같습니다:
{
"receipt": {
"transaction_id": "1000000352597239",
"product_id": "100.gold.coins"
},
"status": 0
}
9. Apple 프로모션 구매
Apple은 앱 내 프로모션 구매를 처리할 수 있는 기능을 제공합니다. 이를 위해, 다음과 같이 콜백을 설정합니다:
builder.Configure<IAppleConfiguration>().SetApplePromotionalPurchaseInterceptorCallback(OnPromotionalPurchase);
10. 결론
이 가이드는 Unity IAP를 구현하기 위한 기본적인 구조를 제공합니다. 각 단계에 따라 적절한 코드를 수정하여 귀하의 애플리케이션에 적합한 구매 시스템을 구축할 수 있습니다. 추가적인 세부 사항이나 문제가 발생할 경우 Unity의 공식 문서를 참조하시기 바랍니다.