У меня проблемы с Google Play API. У меня есть in app
покупка (приложение либо free
, либо premium
). Когда я нажимаю кнопку Refund
для заказа в консоли Google Play через несколько минут, я вижу сообщение о том, что возврат денег завершен.
Моя проблема в том, что в моем приложении я все еще получаю от API Google это приложение premium
. Я прочитал о кеше, поэтому после возврата я установил свое приложение на совершенно новое устройство, и оно все еще premium
.
Так что же означает Refund
в консоли? Это просто подарок пользователю с возвратом денег и сохранением приложения premium
?
Обновление 16/04/2019: вот мой код
class PurchaseManagerImpl(private val context: Context) : PurchaseManager {
private lateinit var mBillingClient: BillingClient
private lateinit var listener: BillingUpdatesListener
override fun setupBilling(l: BillingUpdatesListener) {
listener = l
mBillingClient = BillingClient.newBuilder(context).setListener { responseCode, purchases ->
// also called when new purchases are made
if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
for (purchase in purchases) {
listener.onBillingSuccess()
}
} else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
// Handle an error caused by a user cancelling the purchase flow.
listener.onBillingError( context.getString(R.string.error_user_cancelled))
} else {
listener.onBillingError( this.context.getString(R.string.error_undefined))
}
}.build()
startConnection()
}
override fun startConnection() {
mBillingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(responseCode: Int) {
if (responseCode == BillingClient.BillingResponse.OK) {
// The billing client is ready. You can query purchases here.
queryPurchases()
querySkuDetails()
}
}
})
}
private fun querySkuDetails() {
// for in-app purchase
val skuList = arrayListOf("premium")
val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP)
mBillingClient.querySkuDetailsAsync(params.build()) { responseCode, skuDetailsList ->
if (responseCode == BillingClient.BillingResponse.OK && skuDetailsList != null) {
for (skuDetails in skuDetailsList) {
val sku = skuDetails.sku
val price = skuDetails.price
}
}
}
}
private fun queryPurchases() {
mBillingClient.queryPurchases(BillingClient.SkuType.INAPP)?.let { purchasesResult ->
if (purchasesResult.responseCode == BillingClient.BillingResponse.OK) {
if (purchasesResult.purchasesList.size != 0) {
listener.onBillingSuccess()
}
}
}
}
override fun launchBuy(activity: Activity) {
val flowParams = BillingFlowParams.newBuilder()
.setSku("premium")
.setType(BillingClient.SkuType.INAPP)
.build()
if (::mBillingClient.isInitialized) {
mBillingClient.launchBillingFlow(activity, flowParams)
}
}
}