Решив добавить в свое небольшое приложение механизм встроенных покупок, я понял, насколько скупая информация доступна на текущий момент. Два основных источника - статьи ИТС и Синтакс-помощник - дают общее представление о том, куда копать, но на мой взгляд довольно скудное. В связи с этим хочу поделиться с вами дополнительной информацией о том, как это работает и с чем это едят (хотя все равно рекоменую вначале прочитать главную методичку на ИТС).
Проще всего понять работу механизма на наглядном примере, который я прикрепил к теме и который может скачать любой желающий. С помощью него и “эмулятора” Google Play от 1С можно будет протестировать работу встроенных покупок вашего приложения.
Для реализации нам понадобится:
- Чистый сервер Windows 2012 + Apache + белый IP. Заиметь такой можно можно на https://ultravds.com, у них вроде есть несколько дней бесплатного тестдрайва.
- Установленная платформа 1С последнего релиза. Конфигурация MobileAppMaker (Сборщик мобильных приложений) последнего релиза (идет вместе с мобильной платформой). Ваша тестовая мобильная конфигурация или конфигурация из этой статьи.
- Андроид устройство или эмулятор с установленной мобильной платформой последнего релиза.
Действия с тестовой конфигурацией:
- Разверните конфигурацию на вашем сервере.
- Опубликуйте мобильное приложение на веб-сервере.
- Выгрузите мобильную конфигурацию в XML файл для последующей загрузки в сборщик.
Действия с конфигурацией сборщика:
- Разверните конфигурацию сборщика.
- Опубликуйте http-service PurchasesTest на веб-сервере.
- Создайте пользователя ИБ с именем “test” с ролью “Проверка покупок”, установите ему пароль 1 (или на ваше усмотрение).
- В режиме предприятия загрузите мобильную платформу, тестовую мобильную конфигурацию, создайте группу в справочнике “Мобильные приложения”, создайте элемент справочника “Мобильные приложения”. Непосредственно сборку (а равно как и установку всех необходимых компонент) делать не надо. Тестовой подсистеме нужна по сути только только эта самая группа и ID приложения.
- Создайте пользователей (это не пользователи конфигурации, это виртуальные учетные записи Google Play).
- Создайте встроенные покупки. В случае с прилагаемой тестовой конфигурацией это будет “one_month_subscription” и “one_year_subscription”. Эти же идентификаторы должны храниться и в самой мобильной конфигурации.
Пример показан на картинке "Настройки Сборщика мобильных приложений".
В настройках мобильной конфигурации необходимо прописать данные сервера покупок - пример показан на рисунке "Настройке мобильного приложения". Внимание - не забудьте "/" после имени http-сервиса "pt". Его отсутствие при заполнении стоило мне нескольких часов. Идентификатор покупателя - это то, что вы внесли в режиме предприятия. Имя пользователя и пароль - то что внесли в решиме конфигуратора.
После старта конфигурации вы можете попробовать типовые команды - пример показан на рисунке "Тестовая конфигурация". Пример процесса покупки на рисунке "Пример покупки".
Важный нюанс.
При вызове метода UpdatePurchaseInformation необходимо указывать массив идентификаторов встроенных покупок. Однако принимающий http-сервис PurchasesTest не видит эти идентификаторы. Поэтому вам нужно будет включить возможность изменения для http-сервиса в конфигурации сборщика и там принудительно прописать возврат этих идентификаторов. Я сделал это так:
str = Request.QueryOptions.Get("str");
If (str = Undefined) Then //called from URL
str = Request.GetBodyAsString("UTF-8");
EndIf;
CodeArray = StrSplit(str, ",");
// Filling an Array of Ref
IDsArray = New Array();
For Each ProductCode из CodeArray Do
IDsArray.Add(ProductCode);
EndDo;
//++
IDsArray.Add("one_month_subscription");
IDsArray.Add("one_year_subscription");
//--
Также в своей тестовой конфигурации я добавил несколько важных комментариев, которые могут облегчить жизнь при работе со встроенными покупками.