Перейти к содержанию
  • Регистрация
  • 0
Авторизация  
ggravee

InAppPurchase

Вопрос

Добрый день.

У кого-то есть опыт с 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 пользователей онлайн

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

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