Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Juanchobanano en Diciembre 31, 2015, 12:45:44 AM

Título: Compras Integradas a la aplicación [ERROR]
Publicado por: Juanchobanano en Diciembre 31, 2015, 12:45:44 AM
Buenas noches a todos, en esta ocasión necesito su ayuda!

En este momento estoy implementando las compras integradas a la aplicación en Game Maker, sin embargo a la hora de querer comprar el producto me avisa que hubo un Error, y me dice: El artículo que solicitaste no está disponible para la compra. No obstante todo está al día en la consola de desarrolladores, (los productos están activados y la aplicación publicada).

Este es el código que estoy utlizando:

Create Event - Obj_Control_Game (Es el primer código que se ejecuta en todo el juego) Carga y activa los productos.

// Cargar y Activar los productos.   
   var productList = ds_list_create();
 
   var pVidas = ds_map_create();
   ds_map_add(pVidas, "id", "deadfish_vida");
   ds_map_add(pVidas, "title", "Continua el juego x 10");
   //ds_map_add(pVidas, "type", "Durable");
   
   var pRayo = ds_map_create();
   ds_map_add(pRayo, "id", "deadfish_rayo");
   ds_map_add(pRayo, "title", "Truenos x 5!");
   //ds_map_add(pArma, "type", "Durable");
   
   var pTiempo = ds_map_create();
   ds_map_add(pTiempo, "id", "deadfish_tiempo");
   ds_map_add(pTiempo, "title", "Detén el tiempo 3 segundos x 10");
   //ds_map_add(pTiempo, "type", "Durable");
     
   ds_list_add(productList, pVidas);
   ds_list_add(productList, pRayo);
   ds_list_add(productList, pTiempo);
   iap_activate(productList);
   
   ds_map_destroy(pVidas);
   ds_map_destroy(pRayo);
   ds_map_destroy(pTiempo);
   ds_list_destroy(productList);


Y el código para comprar los productos está separado en 2, uno mouse_check_Left_pressed y un IAP Event en el objeto  de compra de un producto X

Mouse_check_left_pressed en el objeto de compra de un producto X

if(room == Room_Final){
    if(mouse_y >= 554 and mouse_y <= 786){
        // Tiempo.
        if(mouse_x >= 18 and mouse_x <= 157){
            var product = deadfish_tiempo; comprar = 1;
        // Vidas.
        }else if(mouse_x >= 168 and mouse_x <= 311){
            var product = deadfish_vida; comprar = 1;
        // Arma
        }else if(mouse_x >= 322 and mouse_x <= 459){
            var product = deadfish_rayo; comprar = 1;
        }
    }
}else if(room == Room_Game){
    if(mouse_y >= 319 and mouse_y <= 550){
        // Tiempo.
        if(mouse_x >= 20 and mouse_x <= 158){
            var product = deadfish_tiempo; comprar = 1;
        // Vidas.
        }else if(mouse_x >= 168 and mouse_x <= 311){
            var product = deadfish_vida; comprar = 1;
        // Rayo
        }else if(mouse_x >= 322 and mouse_x <= 459){
            var product = deadfish_rayo; comprar = 1;
        }
    }
}


if(comprar){
    audio_play_sound(sound_click,1,0);
    comprar = 0;
    show_message(product);
    if(iap_status() == iap_status_available){
       iap_acquire(string(product), ""); // Evento A.
    }else{
       if(idioma == "en"){
          show_message_async("Store is not available.");
       }else if(idioma == "es"){
          show_message_async("La tienda no está disponible.");
       }
    }
}


IAP Event en el objeto de compra de un producto X

var val = ds_map_find_value(iap_data, "type");
switch(val){
   case iap_ev_purchase:
   //
      show_message('iap_ev_purchase');
     
      var map = ds_map_create();
      var purchase_id = ds_map_find_value(iap_data, "index");
     
   //
      show_message(purchase_id);   
     
      iap_purchase_details(purchase_id, map);
   //   
      show_message(ds_map_find_value(map, "status"));
     
      if(ds_map_find_value(map, "status") == iap_purchased){
          var product_id = ds_map_find_value(map, "product");
          iap_consume(product_id);
      }
      ds_map_destroy(map);
   break;
   case iap_ev_consume:
      var product_id = ds_map_find_value(map, "product");
      if(ds_map_find_value(iap_data, "consumed")){
        switch(product_id){
            case deadfish_vida:
                global.vidas += 10; // Aumentar la cantidad de vidas.
            break;
            case deadfish_tiempo:
                global.tiempo += 10; // Aumentar la cantidad de vidas.
            break;
            case deadfish_rayo:
                global.rayo += 5;
            break;
        }
      }
   break;
}

if(file_exists(working_directory + 'tienda.sav')){
    file_delete(working_directory + 'tienda.sav');
}
ini_open(working_directory + 'tienda.sav');
ini_write_real("tiempo","KIREOJ5E2",tiempo);
ini_write_real("vidas","kjhwep235",vidas);
ini_write_real("rayo","5i92ghjr3YHY",rayo);
//ini_write_real("municion","5i92ghjr3YHY",municion);
ini_close();


Cuando pueda solucionar este problema me tomaré el tiempo en escribir una guía para que no se traben como yo lo estoy :(
Título: Re:Compras Integradas a la aplicación [ERROR]
Publicado por: Dublan en Junio 02, 2017, 11:43:10 PM
Cuando te da ese error es porque estás accediendo a la compra con el mismo usuario que usas en la consola developers. Prueba a hacer la compra con otro usuario Google. Si está bien el código funcionará sin problema.