Перейти к содержанию
Fire Monkey от А до Я
  • 0

InAppPurchase.IsProductPurchased


Евгений Корепов

Вопрос

InAppPurchase.IsProductPurchased работает на тестовых аккаунтах? Сделал покупку, но IsProductPurchased всегда возвращает False.

procedure TFormMain.InAppPurchaseSetupComplete(Sender: TObject);
begin
  LogMy('InAppPurchaseSetupComplete');
  FInAppPurchase.QueryProducts;
  if FInAppPurchase.IsProductPurchased(NoAdsID) then
  begin
    LogMy(NoAdsID+' Yes ProductPurchased');

Буду очень благодарен, если кто даст ссылку на нормальную документацию, желательно на русском. Хочется понять хотя бы основные вещи, к примеру что такое метод ConsumeProducts (потреблять продукты?). 

И возможна ли отладка InAppPurchase? Запуск в отладочной версии не позволяет работать с InAppPurchase.

 
 
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Купил сам у себя, не через тестовый аккаунт. Деньги списались,в "Payments Merchant Center" покупка отобразилась. Но FInAppPurchase.IsProductPurchased(NoAdsID) мне говорит False, не куплен продукт. 

Что делать, ума не приложу. 

Ссылка на комментарий
  • 1

Вот пример. У меня работает. Был один неприятный момент - после использования тестовых продуктов проверка покупки заработала примерно через день, сама по себе.

 

При старте приложения вызываем    

 

PurchaseDataModule.InAppPurchase1.SetupInAppPurchase;


procedure TPurchaseDataModule.DataModuleCreate(Sender: TObject);
begin
  fisPurchased := true;
{$IFDEF ANDROID}
  InAppPurchase1.ApplicationLicenseKey :=''; //Присваиваем ключ
  InAppPurchase1.ProductIDs.Add(ProductId);  // Добавляем наш продукт
  InAppPurchase1.OnSetupComplete := InAppPurchase1SetupComplete;
{$ENDIF}

end;

procedure TPurchaseDataModule.InAppPurchase1ProductsRequestResponse(
  Sender: TObject; const Products: TIAPProductList;
  const InvalidProductIDs: TStrings);
var
  Product: TProduct;
begin
  fisPurchased := false;
  for Product in Products do
    begin
      if ProductId = Product.ProductID then
        begin
           FProductIsValid := True;
           if InAppPurchase1.IsProductPurchased(ProductId) then
             begin
               fisPurchased := true;  // КУПЛЕНО!!!!
             end
        end;
    end;

end;

procedure TPurchaseDataModule.InAppPurchase1PurchaseCompleted(Sender: TObject;
  const ProductID: string; NewTransaction: Boolean);
begin
  MainDataModule.ShowToast('Премиум версия активирована');
  fisPurchased := True
end;

procedure TPurchaseDataModule.InAppPurchase1SetupComplete(Sender: TObject);
begin
  fisPurchased := False;
  try
    InAppPurchase1.QueryProducts;
  except
    on E:Exception do MainDataModule.ShowToast(e.Message);
  end;

end;


procedure TPurchaseDataModule.Purchase;
begin
{$IFDEF ANDROID}
  if InAppPurchase1.IsSetupComplete and InAppPurchase1.CanMakeInAppPurchases then
    begin
      InAppPurchase1.PurchaseProduct(ProductId);
    end
  else
    MainDataModule.ShowToast('В данный момент приобретение не возможно. Попробуйте позже');
{$ENDIF}
end;

Изменено пользователем bigjorj
Ссылка на комментарий
  • 0

 

Вот пример. У меня работает. Был один неприятный момент - после использования тестовых продуктов проверка покупки заработала примерно через день, сама по себе.

 

 

Огромное спасибо!!! Все заработало! Проблема видимо в косячном примере от embarcadero. 

 

Проверку InAppPurchase.IsProductPurchased(ProductId) необходимо выполнять в событии OnProductsRequestResponse, т.е. после завершения ,видимо ассинхронного, InAppPurchase.QueryProducts.
А никак не в OnSetupComplete как в примере от Embarcadero "CapitalIAP". Кстати в Delphi 10 тот же косяк в примере, видимо они даже не пробовали проверять его работоспособность.
Ссылка на комментарий
  • 0
В 09.10.2015 в 13:24, Евгений Корепов сказал:

Огромное спасибо!!! Все заработало! Проблема видимо в косячном примере от embarcadero. 

 

Проверку InAppPurchase.IsProductPurchased(ProductId) необходимо выполнять в событии OnProductsRequestResponse, т.е. после завершения ,видимо ассинхронного, InAppPurchase.QueryProducts.
А никак не в OnSetupComplete как в примере от Embarcadero "CapitalIAP". Кстати в Delphi 10 тот же косяк в примере, видимо они даже не пробовали проверять его работоспособность.

Доброго времени суток. С ембаркадеровским примером разобраться не смог, а здесь все доступно. Респект. Но все таки проблема есть. У меня почему то при попытке оплаты выдает - "Необходимо войти в аккаунт", хотя я в аккаунте и с других приложений все нормально проходит.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...