Android In App Purchases – Billing-5

extends Control


const TEST_ITEM_SKU = "MY_ITEM_SKU"
var payment = null
var test_item_purchase_token = null

var conanuncios = true
# Called when the node enters the scene tree for the first time.

func _ready():
    if Engine.has_singleton("GodotGooglePlayBilling"):
        payment = Engine.get_singleton("GodotGooglePlayBilling")
        # No params.
        payment.connect("connected", self, "_on_connected")
        # No params.
        payment.connect("disconnected", self, "_on_disconnected")
        # Response ID (int), Debug message (string).
        #payment.connect("connect_error", self, "_on_connect_error")
        # Purchases (Dictionary[]).
        payment.connect("purchases_updated", self, "_on_purchases_updated")
        # Response ID (int), Debug message (string).
        payment.connect("purchase_error", self, "_on_purchase_error")
        # SKUs (Dictionary[]).
        payment.connect("product_details_query_completed", self, "_on_product_details_query_completed")
        # Response ID (int), Debug message (string), Queried SKUs (string[]).
        payment.connect("product_details_query_error", self, "_on_product_details_query_error")
        # Purchase token (string).
        payment.connect("purchase_acknowledged", self, "_on_purchase_acknowledged")
        # Response ID (int), Debug message (string), Purchase token (string).
        payment.connect("purchase_acknowledgement_error", self, "_on_purchase_acknowledgement_error")
        # Purchase token (string).
        payment.connect("purchase_consumed", self, "_on_purchase_consumed")
        # Response ID (int), Debug message (string), Purchase token (string).
        payment.connect("purchase_consumption_error", self, "_on_purchase_consumption_error")
        
        payment.connect("query_purchases_response", self, "_on_query_purchases_response")
        
        payment.startConnection()
    else:
        print("Android IAP support is not enabled. Make sure you have enabled 'Custom Build' and installed and enabled the GodotGooglePlayBilling plugin in your Android export settings! This application will not work.")

func COMPRAMOS_purchase_pressed():
    var response = payment.purchase(TEST_ITEM_SKU)
    if response.status != OK:
        print("Purchase error %s: %s" % [response.response_code, response.debug_message])
        

# Called every frame. 'delta' is the elapsed time since the previous frame.
#func _process(delta):
#    pass
func _on_connected():
    var res = payment.querySkuDetails([TEST_ITEM_SKU], "inapp") # "subs" for subscriptions
    # We must acknowledge all puchases.
    # See https://developer.android.com/google/play/billing/integrate#process for more information
    payment.queryPurchases("inapp")
    
func _on_product_details_query_completed(sku_details):
    for available_sku in sku_details:
        print("L1:"+str(available_sku))
        #print("MAURONANA:"+str(available_sku.price))
        
func _on_query_purchases_response(query):
    if query.status == 0:
        if query.purchases.size() > 0:
            print("NO ADS - FOUND",query.purchases)
            conanuncios = false
            #if not purchase.is_acknowledged:
                #print("Purchase " + str(purchase.sku) + " has not been acknowledged. Acknowledging...")
                #payment.acknowledgePurchase(purchase.purchase_token)
        else:
            print("WITH ADS - NOT FOUND",query.purchases)
            conanuncios = true
    else:
        print("Purchase query failed: %d" % query.status)
    
    if conanuncios:
        print("WITH ADS")
        ControlAdmob.LOAD_BANNER()
    else:
        print("NO ADS")
        ControlAdmob.DESTROY_BANNER()
    

func _on_purchases_updated(purchases):
    print("U1 Purchases updated: %s" % to_json(purchases))
    # See _on_connected
    for purchase in purchases:
        if not purchase.is_acknowledged:
            print("Purchase " + str(purchase) + " has not been acknowledged. Acknowledging...")
            payment.acknowledgePurchase(purchase.purchase_token)
            #CONSUMIMOS LA COMPRA
            payment.consumePurchase(purchase.purchase_token)
            
    if purchases.size() > 0:
        test_item_purchase_token = purchases[purchases.size() - 1].purchase_token
        print("PURCHASE FOUND"+String(test_item_purchase_token))
        conanuncios = false
        ControlAdmob.DESTROY_BANNER()
    else:
        conanuncios = true
        ControlAdmob.LOAD_BANNER()
        

func _on_purchase_acknowledged(purchase_token):
    print("MMA Purchase acknowledged: %s" % purchase_token)


func _on_purchase_consumed(purchase_token):
    print("MCON-Purchase consumed successfully: %s" % purchase_token)


func _on_purchase_error(code, message):
    print("Purchase error %d: %s" % [code, message])


func _on_purchase_acknowledgement_error(code, message):
    print("Purchase acknowledgement error %d: %s" % [code, message])


func _on_purchase_consumption_error(code, message, purchase_token):
    print("Purchase consumption error %d: %s, purchase token: %s" % [code, message, purchase_token])


func _on_product_details_query_error(code, message):
    print("SKU details query error %d: %s" % [code, message])


func _on_disconnected():
    print("GodotGooglePlayBilling disconnected. Will try to reconnect in 10s...")
    yield(get_tree().create_timer(10), "timeout")
    payment.startConnection()