거래 이벤트 기록
Track in-app purchases and failed transactions to measure revenue and monitor transaction health.
읽는 시간 1분최근 업데이트: 한 달 전
성사된 인앱 구매를 트래킹하려면
transactionProductproductsSpentproductsReceivedProducttransactionFailedtransactiontransactionFailed이벤트 수동 전송
transactiontransactionFailed구매 성공 리포트
다음 예시에서transactiontransactionpublic void SendTransaction(){ var productsReceived = new Product() { Items = new List<Item>() { new Item(){ ItemName = "Golden Battle Axe" , ItemType = "Weapon", ItemAmount = 1}, new Item(){ ItemName = "Flaming Sword" , ItemType = "Weapon", ItemAmount = 1}, new Item(){ ItemName = "Jewel Encrusted Shield" , ItemType = "Armour", ItemAmount = 1} }, VirtualCurrencies = new List<VirtualCurrency>() { new VirtualCurrency() { VirtualCurrencyName = "Gold", VirtualCurrencyType = "PREMIUM", VirtualCurrencyAmount = 100 } } }; var productsSpent = new Product() { RealCurrency = new RealCurrency() { RealCurrencyType = "USD", RealCurrencyAmount = 499 } }; AnalyticsService.Instance.Transaction(new TransactionParameters() { ProductsReceived = productsReceived, ProductsSpent = productsSpent, TransactionID = "100000576198248", TransactionName = "IAP - A Large Treasure Chest", TransactionType = TransactionType.PURCHASE, TransactionServer = TransactionServer.APPLE, TransactionReceipt = "ewok9Ja81............991KS==" });}
구매 실패 리포트
transactionFailedtransactionFailedtransactionFailedpublic void SendTransactionFailed(){ var productsReceived = new Product() { items = new List<Item>() { new Item(){ ItemName = "Golden Battle Axe" , ItemType = "Weapon", ItemAmount = 1}, new Item(){ ItemName = "Flaming Sword" , ItemType = "Weapon", ItemAmount = 1}, new Item(){ ItemName = "Jewel Encrusted Shield" , ItemType = "Armour", ItemAmount = 1} }, VirtualCurrencies = new List<VirtualCurrency>() { new VirtualCurrency() { VirtualCurrencyName = "Gold", VirtualCurrencyType = "PREMIUM", VirtualCurrencyAmount = 100 } } }; var productsSpent = new Product() { RealCurrency = new RealCurrency() { RealCurrencyType = "USD", RealCurrencyAmount = 499 } }; AnalyticsService.Instance.TransactionFailed(new TransactionFailedParameters { FailureReason = "cancelled", ProductsReceived = productsReceived, ProductsSpent = productsSpent, TransactionID = "100000576198248", TransactionName = "IAP - A Large Treasure Chest", TransactionType = TransactionType.PURCHASE, TransactionServer = TransactionServer.APPLE });}
IAP 플러그인을 사용하여 자동 기록
Unity IAP에 의해 이루어진 거래는 수동으로 이벤트를 전송할 때와 동일한transactiontransactionFailed거래 확인
거래 확인을 통해 거래가 적법한 구매인지 확인합니다. 플랫폼에서는 대시보드에 표시되는 모든 매출이 해킹되거나 탈옥된 게임의 결과가 아닌 실제 매출임을 보장하기 위해 iOS 및 Android 스토어의 영수증을 확인할 수 있습니다. 거래 확인을 사용하려면 다음 조건을 충족해야 합니다.- Analytics 플랫폼이 해당 스토어의 영수증을 확인할 수 있도록 관련 스토어의 확인 키를 제공합니다. 대시보드의 Project Settings에서 이 작업을 수행할 수 있습니다.
- 이벤트에 영수증 확인 파라미터를 포함하여 플랫폼에 거래를 확인해야 한다고 알립니다. 이때 알리는 방법은 스토어에 따라 다릅니다.
transaction
revenueValidated값 | 결과 |
|---|---|
| 0 | 이 거래가 매출 확인 서비스를 사용하지 않았으며 매출 차트에 포함됩니다. |
| 1 | 이 거래가 확인을 통과했으며 매출 차트에 포함됩니다. |
| 2 | 이 거래가 확인에 실패했으며 매출 차트에 포함되지 않습니다. |
| 3 | 오류로 인해 이 거래를 확인하지 못했으며 매출 차트에 포함되지 않습니다. |
Apple 스토어
Analytics에서는 iOS 거래에 자동으로 영수증 확인을 시도합니다. iOS 거래에 다음 내용을 추가하여 영수증을 확인합니다."transactionServer": "APPLE","transactionID":"100000576198248","transactionReceipt": "ewok9Ja81............991KS=="
transactionReceipt Google Play
Google 공개 키를 제공해야 합니다. Google 키를 업데이트하려면 Project Settings > In-app purchase (IAP) settings로 이동하여 Google 라이선스 키를 입력합니다. Android 거래에 대한 거래 이벤트에 다음 내용을 추가하여 영수증을 확인합니다.중요: 거래 영수증과 비공개 키가"transactionServer":"GOOGLE","transactionReceipt":"{ \"orderId\":\"GPA.1234-5678-9012-34567\", \"packageName\":\"com.example.app\", \"productId\":\"exampleSku\", \"purchaseTime\":1345678900000, \"purchaseState\":0, \"developerPayload\":\"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ\", \"purchaseToken\":\"opaque-token-up-to-1000-characters\"}", "transactionReceiptSignature":"rNvoHwiBdLSW+........VncbYVJ61fmfsQ=="
transactionReceiptSignature