Похоже, у вас есть незавершенные покупки, что вам нужно, чтобы закончить.
Покупки останутся в состоянии ожидания, пока ваше приложение не назовет их завершением. Это должно гарантировать, что ваше приложение обработает и проверит покупку.
Вы должны позвонить InAppBilling.service.finishPurchase
, когда у вас есть процессу покупки и либо поставляется продукт или обработал отмены/неуспешный:
https://gist.github.com/marchbold/851359b9e456e1a85d65#file-distriqt-extension-inappbilling-makepurchase-as
private function purchase_cancelledHandler(event:PurchaseEvent):void
{
// This transaction was cancelled so you should notify your user and finish the purchase
trace("purchase cancelled" + event.errorCode);
if (event.data && event.data.length > 0)
InAppBilling.service.finishPurchase(event.data[0]);
}
При запуске вы можете получить отложенные покупки после реализации SETUP_SUCCESS
событие:
private function setupSuccessHandler(event:InAppBillingEvent):void
{
var pending:Array = InAppBilling.service.getPendingPurchases();
// Iterate over and handle as required
}
http://docs.airnativeextensions.com/inappbilling/docs/com/distriqt/extension/inappbilling/InAppBilling.html#getPendingPurchases()
Будет ли getPendingPurchases() очистить ожидающий список на сервере? –
Нет, это не очистит их, пока вы не назовете finishPurchase на ожидающий результат покупки. – Michael
Делаю это в случае успеха установки, но вызов getProducts, похоже, блокируется действительным идентификатором продукта (нет события) 'var pending: Array = InAppBilling.service.getPendingPurchases(); \t \t \t для каждого (вар покупка: Покупка в находящейся на рассмотрении) { \t InAppBilling.service.finishPurchase (объявление о покупке); } InAppBilling.service.getProducts ([IAP_PRODUCT_ID]); ' –