Новость, что осталась незамеченной
С 29 ноября 2012 года, разработчикам под Андроид, которые распространяют свои приложения через Google Play, доступна новая версия библиотеки для приема платежей In-app billing version 3. С этого момента стало действительно просто внедрить прием платежей в собственных приложениях. Но как и у всего нового, есть и свои ограничения (http://developer.android.com/intl/ru/training/in-app-billing/test-iab-app.html):
1) Клиентское устройство должно обладать Android SDK Version 2.2 (API level 8);
2) Приложение «Play Маркет» должно иметь версию 3.9.16 или выше.
Начнем с теории
Новая библиотека поддерживает 3 вида приема платежей:
- Managed per user account (ограниченный контент) — это товары, которые могут быть куплены пользователем единожды, к примеру активация премиальных функций в программе, список совершенных покупок этих товаров мы всегда можем получить от маркета;
- Unmanaged (неограниченный контент) — это товары, которые пользователь может купить неограниченное кол-во раз, к примеру игровая валюта приложения или прием пожертвований от пользователей, но в отличии от Managed товаров, мы не можем получить от маркета их список покупок;
- Subscription (подписки) — это тоже Managed товары, но при покупке их, пользователь подписывается на то, что с его счета будут списываться автоматически средства каждые N-дней.
От теории к практике
А теперь давайте попробуем использовать новую библиотеку на практике. Для примера создадим в нашем приложении кнопку с приемом пожертвований на развитие проекта, это можно реализовать с помощью Unmanaged платежей.
Открываем Android SDK Manager:
И устанавливаем GooglePlay Billing Library.
Открываем в нашей среде разработок следующий пример: «Путь к расположению нашей SDK\extras\google\play_billing\in-app-billing-v03\samples\TrivialDrive».
Из этого примера копируем в наш проект «com.android.vending.billing», не меняя названия. А так же копируем содержимое «com.example.android.trivialdrivesample.util».
Добавляем в манифест нашего приложения следующее разрешение:
<uses-permission android:name="com.android.vending.BILLING" />
На этом основные приготовления закончены, теперь приступим непосредственно к реализации нашей кнопки с пожертвованиями.
Кодинг
Java коде нашей Activity добавим пару констант и одну переменную:
// Индефикатор нашего товара static final String SKU_DONATE_1 = "donate_1_usd"; // Код для обратного вызова static final int REQUEST_CODE = 505; // Экземпляр класса для работы с магазином IabHelper mHelper;
В метод onDestroy добавляем:
if (mHelper != null) mHelper.dispose(); mHelper = null;
В метод onActivityResult добавляем:
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); }
В метод onCreate добавляем:
String base64EncodedPublicKey = "Тут_должен_быть_RSA_ключ_вашего_приложения"; mHelper = new IabHelper(this, base64EncodedPublicKey); mHelper.enableDebugLogging(false); mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { if (!result.isSuccess()) { // Произошла ошибка авторизации библиотеки, скрываем кнопку от пользователя mDonateBtn.setVisibility(View.GONE); return; } } });
В base64EncodedPublicKey вы должны скопировать открытый ключ RSA вашего приложения, который вы найдете в «Консоль разработчика -> Ваше приложение -> Службы и API».
Далее создадим экземпляр метода для обратного вызова при завершении покупки пользователем:
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() { public void onIabPurchaseFinished(IabResult result, Purchase purchase) { if (result.isFailure()) { // Обработка произошедшей ошибки покупки return; } if (purchase.getSku().equals(SKU_DONATE_1)) { // Говорим пользователю спасибо за перечисление средств } } };
И теперь назначаем нашей кнопки при нажатии вызов процедуры покупки:
mHelper.launchPurchaseFlow(this, SKU_DONATE_1, REQUEST_CODE, mPurchaseFinishedListener);
С кодингом покончили, теперь осталось собрать приложение и залить новую версию APK в GooglePlay.
Активируем товар
После того, как вы зальете новую версию приложения в GooglePlay, вам остается только активировать товар, который имеет идентификатор «donate_1_usd». Для этого, в косоле разработчика переходим в раздел «Контент для продажи», нажимаем на кнопку «Добавить продукт», в появившемся диалоге выбираем «Не контролируется Google», а в качестве идентификатора продукта указываем «donate_1_usd». Далее указываем всю необходимую информацию по товару, сохраняем её и меняем состояние товара на «Активные».
ссылка на оригинал статьи http://habrahabr.ru/post/165065/
Добавить комментарий