Платежи в Android приложениях это просто

в 12:57, , рубрики: android, in-app billing, Разработка под android, метки: ,

Новость, что осталась незамеченной

С 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 вида приема платежей:

  1. Managed per user account (ограниченный контент) — это товары, которые могут быть куплены пользователем единожды, к примеру активация премиальных функций в программе, список совершенных покупок этих товаров мы всегда можем получить от маркета;
  2. Unmanaged (неограниченный контент) — это товары, которые пользователь может купить неограниченное кол-во раз, к примеру игровая валюта приложения или прием пожертвований от пользователей, но в отличии от Managed товаров, мы не можем получить от маркета их список покупок;
  3. Subscription (подписки) — это тоже Managed товары, но при покупке их, пользователь подписывается на то, что с его счета будут списываться автоматически средства каждые N-дней.

От теории к практике

А теперь давайте попробуем использовать новую библиотеку на практике. Для примера создадим в нашем приложении кнопку с приемом пожертвований на развитие проекта, это можно реализовать с помощью Unmanaged платежей.

Открываем Android SDK Manager:
Платежи в Android приложениях это просто
И устанавливаем GooglePlay Billing Library.

Открываем в нашей среде разработок следующий пример: «Путь к расположению нашей SDKextrasgoogleplay_billingin-app-billing-v03samplesTrivialDrive».

Из этого примера копируем в наш проект «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». Далее указываем всю необходимую информацию по товару, сохраняем её и меняем состояние товара на «Активные».

Автор: neoksi

Источник

Поделиться