Google Play IAB: боль

\"billing-not-supported-on-publisher-account\"
Казалось бы, гугл стремится зарабатывать на продажах приложений и айтемов внутри них, для этого поддерживает магазин в котором распостраняются приложения. Логично предположить, что он делает все, чтоб упросить процесс приёма денег у пользователей и увеличенить конверсии (на самом деле нет, показывает опыт). Это такой понятный клон iTunes для экосистемы Android.

Но не все так просто. Давайте посмотрим мучения разработчика, которому нужно добавить покупки внутри приложений(In-App Purchase) и протестировать их. Приведу только базовый сценарий – в зависимости от приложения и амбиций может быть много разветвлений

1. Добавляем айтемы в стор. Хорошо если у вас из магазинов только google play
2. Покупку со своего аккаунта разработчика вам сделать не удастся. Будь добр зарегай отдельный аккаунт.
3. Раз регаешь аккаунт незабудь прикупить новое устройство(в эмуляторе нет оффициальной возможности запустить магазин приложений). Догадываюсь, что у девелоперов и так по нескольку устройств.
4. Конечно же надо добавить этот аккаунт в тестеры.
5. Подключил \”библиотеку\” (потому что ничего лучше чем примера приложения TrivialDrive от гуглоидов в сети нет). OpenIAB хорош, но тоже не без проблем.\"\"
6. Хорошо, написал много асинхронного кода, который ну очень \”удобно\” писать на прекрасном, не приспособленном для этого языке java.
7. Как тестировать? Наивно пологать, что инженеры из гугла хотят упростить нам тестирование. Как вы уже поняли вы не можете тестировать покупки на аккаунте паблишера, но вы так же и не можете заливать приложение, подписанное debug-ключем на устройство не со своим аккаунтом, увы. Покупки не будут проходить.
8. Молча собираете подписанное приложение, заливаете apk через консоль (надеюсь вы не файлы таскаете?!) во второе устройство, запускаете.
9. Упс, мы не в идеальном мире. Произошла ошибка. Да, есть logcat, успехов и терпения разбираться в логах. О, вы недостаточно логируете? Самое время понатыкать десяток Log.d чтоб понять, где падает приложение. Ну и собрать его заново. Ну и залить тоже. Билд-скрипты умеете писать?
10. Про дебаггер можно забыть. Ну почти. Можете попробовать рутануть второе устройство. Чего только не сделаешь ради любимой компании. И правда, разработка без root прав затрудненна, если вы ещё не заметили.\"google-androd-iab-add-card\"
11. Хорошо, наконец всплыл диалог подтверждения покупки от play store. Там даже написанно, что это тестовая покупка и с вас не будут брать деньги. Отлично, но.. Сначала нужно привязать карту. Зачем привязывать карту к аккаунту которым ты не пользуешься и который был зареган только из-за того, что не дают тестить на своем – непонятно. Карта просрочена? Ничего страшного, логично же, что для тестовой покупки нужно привязать новую.
12. Попробуйте ввести данные карты с первого раза. Некоторые карты абсолютно не принимает. Впрочем как повезёт – внимательнее с фазой луны. По описанию ошибки не пытайтесь понять что он имеет ввиду, без вариантов.
13. Виртуальная оплата прошла, и вомозможно даже приложение не упало. Осталось только проверить ещё пару фишек и сценариев.. Упс, а был приобретён managed product, а значит покупка один раз на весь аккаунт. Но гугл и тут о нас позаботился – вам не придётся не только покупать новое устройство, даже новый аккаунт не потребуется регистрировать.
14. Заходим в Google Wallet находим последний заказ и нажимаем cancel. Почти удобно. Ничего страшного что тестовые и реальные заказы в одном списке и их нельзя отфильтровать, бывает не удобно. Можно, например, отменить реальную покупку человека, когда взгляд замыливается из за частых операций отмен покупк для экспериментов на время разработки.
15. Главное – спокойнее. Через минут 15-30 неактивности в кошельке гугл выкинет вас со всех сервисов и заставит заново вводить пароль. И так будет каждый раз когда вы тестируете функционал покупок. Зато секьюрно.
16. Ах да, очень легко потерять пол дня в поисках решения проблемы ошибки вида FSF43X которые не гуглятся вообще, а потом выяснить, что она связанна с тем, что версия подписанного приложения не совпадает с версией приложения в маркете, поэтому покупки отклоняются.

Я искрене желаю вам спокойствие в этом неловком деле.

Выбора особо нет, поэтому давайте заработаем денег себе и гуглу, не смотря на все его палки в колеса.