В настоящее время в GameMaker: Studio я использую расширение Google IAP, чтобы разрешать покупки IAP.Это работает.
Однако одна часть, которая не работает, это обнаружение возврата IAP.В настоящее время игроки могут приобрести неиспользуемый IAP, а затем просто вернуть его, пока игра все еще думает, что он считается купленным.
Существует статус, который должен быть активирован: iap_refunded в асинхронном режиме IAPсобытие, но оно никогда не происходит, хотя я вернул IAP через консоль Google Play.
Единственный статус, который срабатывает, это iap_purchased .
Я убежденрасширение скорее всего сломано из того, что я исследовал онлайн.У кого-нибудь есть решение?
IAP Event:
/// Google / Non-Amazon IAP
show_debug_message("===========================IAP Event");
var val = ds_map_find_value(iap_data, "type");
show_debug_message("IAP type: " + string(val));
switch(val) {
case iap_ev_purchase:
var map = ds_map_create();
var purchase_id = ds_map_find_value(iap_data, "index");
iap_purchase_details(purchase_id, map);
var status = ds_map_find_value(map, "status");
show_debug_message("IAP purchase status: " + string(status));
if(status == iap_purchased) {
var product_id = ds_map_find_value(map, "product");
ds_map_replace(global.purchaseMap, product_id, 1);
switch(product_id) {
case IAP_REMOVEADS:
handle_iap(IAP_REMOVEADS);
break;
}
}
else if(status == iap_refunded) {
var product_id = ds_map_find_value(map, "product");
ds_map_replace(global.purchaseMap, product_id, 0);
switch(product_id) {
case IAP_REMOVEADS:
dehandle_iap(IAP_REMOVEADS);
break;
}
}
break;
}
ds_map_secure_save(global.purchaseMap, global.iap_data_filename);