In-App Billing Безопасность и вопросы дизайна - PullRequest
24 голосов
/ 04 апреля 2011

У меня есть несколько вопросов, связанных с Android In-App Billing:

  1. Можно ли совершить покупку в приложении, не принадлежащем к Market?Я понимаю, что это будет уязвимость, но у меня нет возможности узнать, возможно это или нет.

  2. Как узнать состояние покупки для определенного продукта?Насколько я понимаю, это можно сделать с помощью запроса RESTORE_TRANSACTIONS, но использовать его не рекомендуется очень часто.Это не теоретическая проблема.Мое приложение позволяет пользователям покупать контент, используя биллинг внутри приложения.Контент может быть загружен с сервера, и сервер должен разрешать загрузку контента, только если он был приобретен.Но он не может проверить, был ли контент куплен или нет, не используя подписанный ответ от Android Market.

  3. Как я могу получить цену и описание товара из Android Market?Кажется, я знаю ответ, и это "нет никакого способа, которым это может быть сделано", но возможно я ошибаюсь.Было бы очень полезно иметь возможность получить цену товара.

Мне очень интересно, как вы решили / собираетесь решать эти проблемы в своих приложениях.Ответ на любой из этих вопросов будет оценен.

1 Ответ

21 голосов
/ 13 апреля 2011

В заказе:

1 - Нет.Процесс биллинга в приложении является частью Market.Если приложение пришло из другого места, Маркет не может проверить происхождение / подлинность приложения.

2 - Вы несете ответственность за сохранение состояния покупки для определенного продукта.Из doc :

Вы должны настроить базу данных или другой механизм хранения информации о покупках пользователей.

RESTORE_TRANSACTIONS должен быть зарезервирован дляпереустанавливает или впервые устанавливает на устройство.

3 - К сожалению, в данный момент вы правы.Подать заявку на функцию!

Между тем, один из вариантов - это создать веб-сайт с appengine, хранить там списки всего вашего контента и цены, а затем вручную синхронизировать цены, указанные на вашем сервере appengine, с обновленными ценами в Маркете.Затем попросите приложение Android извлечь данные с сервера AppEngine.Это намного лучше, чем жесткое кодирование значений цен в самом приложении, поскольку вам не нужно, чтобы все обновляли приложение немедленно, чтобы видеть точные цены, когда вы что-то меняете.Единственное предостережение этого метода заключается в том, что если пользователь находится в другой стране, в биллинге в приложении будет отображаться приблизительная цена в его национальной валюте, и вы не сможете точно определить, какая цена будет ему показана.

В связи с этим, один из Адвокатов разработчиков Android выступает с докладом о LVL / IAP в IO под названием «Уклонение от пиратов и остановка вампиров с помощью библиотеки проверки лицензий, биллинга в приложениях и App Engine».- Определенно стоило бы посмотреть, когда они выпустят видео сессий на сайте.

...