https://developer.android.com/google/play/billing/billing_reference?hl=ko
BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED (응답 코드 7)를 만나는 경우는 어떻게 할까?
fun getAllPurchasedItem() {
billingClient.queryPurchaseHistoryAsync(BillingClient.SkuType.INAPP, this)
}
// 최근 구매한 아이템을 알고자 할 때 사용
// getAllPurchasedItem 의 this
override fun onPurchaseHistoryResponse(
billingResult: BillingResult,
purchaseHistoryList: MutableList<PurchaseHistoryRecord>?
) {
Log.e("onPurchaseHistoryResponse", "${billingResult.debugMessage}" )
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
if (!purchaseHistoryList.isNullOrEmpty()) {
// 가장 최근에 구매된 아이템을 확인할 수 있다.
purchaseHistoryList.forEach {
Log.e("onPurchaseHistoryResponse", "Previous Purchase Item : ${it.quantity}")
// 소비 되지 않은 것이 있다면 소비 처리 하기
var consumeParams = ConsumeParams.newBuilder()
.setPurchaseToken(it.purchaseToken)
.build()
billingClient.consumeAsync(
consumeParams,
) { billingResult,_ ->
if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
Log.e("onPurchaseHistoryResponse", "${billingResult.debugMessage}")
log(msg="${billingResult.debugMessage}")
}
}
}
}
}
}
쉬운 방법은 이전 구매 history을 열어 보는 방법이 있고, 그리고 이미 구해했던 이력을 만나게 되면 구매 이력을 이용해서 소비를 해 버리는 방법으로 해소를 하였다.
구글링을 해서 찾아보다 보면 이런 상태가 되는 이유는 구매 처리를 진행하는 동안 네트워크가 끊어져서 처리가 정상적으로 되지 않았을 경우라고 하고 있기는 하지만, 나의 경우는 앱을 개발하는 동안 구매 처리를 했는 데, 소비 처리를 하지 않았더니, 계속 그런 현상이 발생하였다. 그래서 찾은 방법이 구매 이력을 찾아서 모두 다 소비시키는 방식으로 한번 처리를 하고 다시 구매 진행을 하였더니, 기존 구매 이력이 소비되는 것을 확인하였다.
BILLING_RESPONSE_RESULT_ITEM_UNAVAILABLE (오류코드 4) 이런 경우는 앱 개발을 하는 경우 만나게 되는 것은 인앱 결제를 처리하기 위해서는 앱을 출시하기 전에 구매 테스트를 해야 하는 데, 구글 console에 테스트 계정을 등록하여 구매 테스트를 하게 되는 데, AVD의 경우 설정에 들어가서 계정을 한 개만 설정했을 때는 문제가 없지만,
실제 사용 중인 폰의 설정에서 계정을 2개 이상 등록한 경우에는 내 폰에 설정된 계정을 전부다 테스터 계정으로 등록하기 전에는 구매 테스트에서 이런 오류를 만나게 되는 경우가 있을 수 있다.
간간히 발생하는 오류 형태가 실제 개발 중에 테스트 시간을 뺏는 경우가 있을 수 있으므로 기억해 두고 있으면 도움이 될 것 같다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 HTTP 통신의 또 다른 이야기... (2) | 2022.02.12 |
---|---|
안드로이드 앱 만들기 : workmanager kotlin api (번역) (0) | 2022.02.08 |
안드로이드 앱 만들기 : image blur (이미지 흐리게) 처리 하기 (2) | 2022.01.25 |
안드로이드 앱 admob 정책 위반 이야기 (2) (3) | 2022.01.22 |
안드로이드 앱 만들기 : 구글 로그인 One Tap (오류사항 정리) (2) | 2022.01.19 |