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

InAppPurchase


ggravee

Вопрос

Добрый день.

У кого-то есть опыт с InAppPurchase в xe7 для Android ? Информации в интернете очень мало.

Нужна помощь.

Прочитав документацию и доступную в Интернете информацию я смог настроить тестовое приложение, тестовые аккаунты для покупки и тестовые "товары". Покупку можно совершить. Однако после надписи про успешную проплату приложение зависает на несколько секунд после чего либо просто вылетает, либо рестартует. После этого товар уже считает купленным, однаком consume не работает, IsProductPurchased всегда возвращает false, RestorePurchasedProducts не вызывает PurchaseCompleted (как я понял по документации - должен). Ниже приведен код

type
  TShopForm = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;

    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);

  procedure InAppPurchaseError (Sender: TObject;
  ErrorKind: TFailureKind; const ErrorMessage: string);

  procedure InAppPurchaseCompleted(Sender: TObject;
  const ProductID: string; NewTransaction: Boolean);

  procedure InAppProductsRequestResponse(Sender: TObject;
  const Products: TIAPProductList; const InvalidProductIDs: TStrings);

  procedure InAppPurchaseSetupComplete(Sender: TObject);

  private
  FInAppPurchase: TInAppPurchase;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ShopForm: TShopForm;

implementation

const testp='test13';

procedure mlog(s: string);
begin
 ShopForm.Memo1.Lines.Add(s);
end;

procedure TShopForm.Button1Click(Sender: TObject);
begin
 FInAppPurchase.PurchaseProduct(testp);
end;

procedure TShopForm.InAppPurchaseSetupComplete(Sender: TObject);
begin
 mlog('setup complete');
end;

procedure TShopForm.InAppProductsRequestResponse(Sender: TObject;
 const Products: TIAPProductList; const InvalidProductIDs: TStrings);
begin
 mlog('ProductsRequestResponse');
end;

procedure TShopForm.InAppPurchaseError(Sender: TObject;
 ErrorKind: TFailureKind; const ErrorMessage: string);
begin
 mlog('error '+ErrorMessage);
end;

procedure TShopForm.InAppPurchaseCompleted(Sender: TObject;
 const ProductID: string; NewTransaction: Boolean);
begin
 mlog('Purchase '+ProductID);
end;

procedure InAppConsumeCompleted(Sender: TObject; const ProductID:string);
begin
 mlog('!consume '+ProductID);
end;

procedure TShopForm.FormCreate(Sender: TObject);
begin
 FInAppPurchase:=TInAppPurchase.Create(self);
 FInAppPurchase.ApplicationLicenseKey:='MI....';

 FInAppPurchase.ProductIDs.Add(testp);

 FInAppPurchase.OnSetupComplete:=InAppPurchaseSetupComplete;
 FInAppPurchase.OnProductsRequestResponse:=InAppProductsRequestResponse;
 FInAppPurchase.OnError:=InAppPurchaseError;
 FInAppPurchase.OnPurchaseCompleted:=InAppPurchaseCompleted;

 FInAppPurchase.SetupInAppPurchase;
end;

Может кто-то хоть подскажет в какую сторону копать. Или покажет работающий код. Или какие-то аналоги компоненту InAppPurchase посоветует. Буду очень благодарен.

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

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

  • 0

Интересно.  Попытки что-либо выводить в Memo внутри всяких процедур типа InAppPurchaseError, InAppProductsRequestResponse и т.п. приводит к слету приложения. Причем в некоторых процедурах сразу, в других после вывода 5-6 строки. И неважно сколько времени между попытками вывода делается. Под дебаггером сообщает о обращении к какому-то запрещенному адресу или Segmentation erorr 11. Закономерности в появлении видов ошибки пока не заметил.

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

Проблему решил. Тему можно закрывать или удалять (если неинтересная).

Забыл поставить

FInAppPurchase.QueryProducts;

после сетапа. :wub:

Хотя странное поведение Memo это не объясняет...

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

Заметил еще одну особенность использования InAppPurchase:

Если использовать тестовые товары google, то проверка isAppPurchased работает только на следующие сутки. Ошибка при этом что-то про неверную подпись.

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

у меня работает через пару секунд... народ пишет, что как повезет.

вообще, как наиболее напряжуную и "опасную" фичу, пишут про неспешное подключение тестовых аков для покупки (чтоб деньги не списывались)

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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

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