Как распознать уже купленный в приложении продукт с указанным идентификатором токена? - PullRequest
0 голосов
/ 15 января 2020

Итак

У меня была ошибка, при которой не было процесса подтверждения после покупки продукта в приложении (не расходуемого). В результате он начал автоматически возвращаться через 3 дня. Я исправил ошибку, добавив процесс подтверждения следующим образом.

if(!i.isAcknowledged){
                    val acknowledgePurchaseParam = AcknowledgePurchaseParams.newBuilder()
                        .setPurchaseToken(i.purchaseToken)
                        .build()
                    billingClient.acknowledgePurchase(acknowledgePurchaseParam,object : AcknowledgePurchaseResponseListener{
                        override fun onAcknowledgePurchaseResponse(p0: BillingResult?) {
                            Log.d("functions","Acknowlege the purchase. ${p0!!.debugMessage} ${p0!!.responseCode}")
                        }
                    })

Но проблема в том, что ...

У меня есть 6 уже купленных продуктов, и они были приобретены, когда у меня не было подтверждения процесс, который означает, что он будет возвращен через 3 дня. Я не хочу этого! Поэтому, чтобы не получить возмещение, я попытался получить идентификатор токена покупки здесь.

enter image description here

Если я нажму "посмотреть токен покупки", это даст мне строку как, например, oifogkffdhfbojjgficmakpm.AO-sadsf1OzKTpdfa44xTUoQMBCNz7sYMoyNXzaHI25kbBaF9Rp_Wd - azthBMdUDspYiw3TxOAJW2qE226soQ0fTzMZaP_2DrU_i4Oej1a4T7RPGa-dRi9M8g_SA . Таким образом, с помощью этого токена я попытался подтвердить покупку программным путем.

val listener = object : AcknowledgePurchaseResponseListener {
                    override fun onAcknowledgePurchaseResponse(p0: BillingResult?) {
                        Log.d(
                            "ack!",
                            "Acknowlege the purchase. ${p0!!.responseCode} ${p0!!.debugMessage} billing status : ${billingHelper.billingClient.isReady}"
                        )
                    }
                }
val acknowledgePurchaseParam = AcknowledgePurchaseParams.newBuilder()
                    .setPurchaseToken("mcceldobdaeegnfaagmpenpc.AO-J1OxFejDLCdtFRIiNpHHIGOv1aHsea_7kZPJ4IoYMZLMY8ot7DnwXvEHFQQ78ZIbtoy578jSZ4j1PZZoi0BmPMu5uTpqZIC2GFrPTQWlzt1MRcSferJg")
                    .build()

                billingHelper.billingClient.acknowledgePurchase(acknowledgePurchaseParam1, listener)

Но когда я запускаю этот код на моем эмуляторе, он выдает мне код ошибки 5 с сообщением об отладке «Не удается найти покупку с данным token ".

Есть ли способ подтвердить уже купленные в приложении продукты? Если это так, я буду признателен всем своим сердцем! Спасибо!

...