일회성 결제 구매 흐름

  1. 사용자에게 구입할 수 있는 항목을 보여줌.
  2. 사용자가 구매를 수락할 수 있도록 구매 흐름을 시작.
  3. 서버 (피스 서버) 에서 구매를 인증.
    1. 구글 서버 API앱 → 직접 호출 불가 구조로 되어 있고, 서비스 계정 인증(OAuth2)도 필요. 따라서 앱이 아닌 백엔드 서버에서만 호출할 수 있게 설계가 필요함.
  4. 사용자에게 콘텐츠를 제공.
  5. 콘텐츠 전송을 확인함. 소비성 제품의 경우 사용자가 항목을 다시 구매할 수 있도록 구매 제품을 소비함.

정기 결제 진행과정


1. Google Play 연결 초기화

dependencies {
    val billing_version = "8.0.0"

    implementation("com.android.billingclient:billing-ktx:$billing_version")
}

2. BillingClient 초기화

private val purchasesUpdatedListener = PurchasesUpdatedListener { result, purchases ->
        Log.d("purchasesUpdateListener", "$result $purchases")

        if (result.responseCode == BillingResponseCode.OK && !purchases.isNullOrEmpty()) {
            purchases.forEach { purchase ->
                val token = purchase.purchaseToken
                val uuid = purchase.products.firstOrNull() ?: return@forEach
                _purchaseProduct.value = PurchaseProduct(uuid = uuid, credential = token)
            }
        }
    } // PurchasesUpdatedListener -> 실제 결제가 이루어지고 나면 들어오는 결과값 리스너
    
    // 에러 처리 필요
        else{
            
        }

private var billingClient = BillingClient.newBuilder(context)
   .setListener(purchasesUpdatedListener)
   // Configure other settings.
   .build()