Перейти к содержанию

Вопросы

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 пользователей онлайн

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

×
×
  • Создать...