Skip to content

Instantly share code, notes, and snippets.

@UtkuGlsvn
Created February 18, 2021 12:59
Show Gist options
  • Save UtkuGlsvn/8415edf157da92a1bb97173c89b62706 to your computer and use it in GitHub Desktop.
Save UtkuGlsvn/8415edf157da92a1bb97173c89b62706 to your computer and use it in GitHub Desktop.
class MyBillingImpl(private val activity: Activity) :
PurchasesUpdatedListener, ConsumeResponseListener, BillingProcessor.IBillingHandler {
var billingClient: BillingClient = BillingClient.newBuilder(activity)
.enablePendingPurchases()
.setListener(this)
.build()
private var list: MutableList<SkuDetails>? = null
init {
//billingClient = BillingClient.newBuilder(activity).setListener(this).build()
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(p0: BillingResult) {
if (p0.responseCode == BillingClient.BillingResponseCode.OK) {
Log.v("baglanti kuruldu", "kuruldu")
Toast.makeText(activity, "baglanti kuruldu", Toast.LENGTH_SHORT).show()
val purchases: MutableList<Purchase> =
billingClient.queryPurchases(BillingClient.SkuType.INAPP).purchasesList!!
Toast.makeText(activity, "${purchases.toString()}", Toast.LENGTH_SHORT).show()
handeItemAlreadyPuchase(purchases)
Log.v("purchase", purchases.toString())
}
}
override fun onBillingServiceDisconnected() {
Log.v("disconnect billing", "kuruldu")
}
})
}
//premium icin
private fun handeItemAlreadyPuchase(purchases: MutableList<Purchase>) {
val pyrchasedItem: StringBuilder = StringBuilder("premium")
purchases.forEach {
Toast.makeText(activity, "${it.sku}", Toast.LENGTH_SHORT).show()
if (it.sku == "utku") {
val consumeParams: ConsumeParams = ConsumeParams.newBuilder()
.setPurchaseToken(it.purchaseToken)
.build()
billingClient.consumeAsync(consumeParams, this)
}
pyrchasedItem.append("\n ${it.sku}")
}
}
override fun onPurchasesUpdated(p0: BillingResult, purchases: MutableList<Purchase>?) {
if (p0.responseCode == BillingClient.BillingResponseCode.OK && purchases != null) {
purchases
}
}
fun skuParams() {
val params =
SkuDetailsParams.newBuilder().setSkusList(listOf("test", "test3","birthchart","test2"))
.setType(BillingClient.SkuType.INAPP).build()
billingClient.querySkuDetailsAsync(params, object : SkuDetailsResponseListener {
override fun onSkuDetailsResponse(p0: BillingResult, p1: MutableList<SkuDetails>?) {
if (p0.responseCode == BillingClient.BillingResponseCode.OK) {
Toast.makeText(activity, "baglanti kuruldu SkuParams", Toast.LENGTH_SHORT)
.show()
loadProduct(p1)
} else {
Toast.makeText(activity, "baglanti kurulamadı SkuParams", Toast.LENGTH_SHORT)
.show()
}
}
})
}
fun loadProduct(p1: MutableList<SkuDetails>?) {
list = p1
}
fun returnList(): MutableList<SkuDetails>? {
return list
}
fun consumePurchase(purchaseToken: String) {
val consumeParams = ConsumeParams
.newBuilder()
.setPurchaseToken(purchaseToken)
.build()
}
override fun onConsumeResponse(p0: BillingResult, p1: String) {
// Handle consumption
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment