Платежи в 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:

И устанавливаем 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/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *