In-App Billing (In-App Purchase)

Három módja van annak, hogy android programunkkal pénzt keressünk.

  1. Alapjáraton fizetős módban publikáljuk azt. (Magyarországi gyakorlati megvalósításáról magam sem tudok, csak “szemhagyomány” útján tudom, hogy nem lehetséges.)
  2. In-app Purchase
  3. Reklám hozzáadásával (pl.: AdMoB)

Ebben a cikkben nagy vonalakban – programozásmentesen – számolok be arról, hogy valósítható meg az In-App Billing.

Feltételek az In-App Billing megvalósításához:

 

Mivel ez az írás nem a Market szerver és az applikáció közti kommunikációt magyarázza, ezért csak útmutatást és hasznos információkat teszem közzé. Két (három) életképes módja van (szerintem) annak, hogyan használjuk az In-App Billing-et:

 

Akkor csapjunk a lecsóba!

Az integrálást az alábbi két linken elérhető leírás mutatja be. Mindkét leírás esetében saját tapasztalatról tudok beszélni:

 

A Developer Console közli, hogy a példaapplikációt ajánlott inkább tanulmányozásra felhasználni mint egy az egyben való beépítésre a programunkba mert fontosabb, hogy megértsük annak működését és sajátot hozzunk létre, mivel a példaapplikáció csak egy konkrét esetet mutat be. Mivel nekem a “Full version” megoldás volt fontosabb, ezért erről írok a továbbiakban.

Hogyan is van ez a megvásárolni kívánt tételekkel (item)? A programunkban egy metódus által közüljük a market-ee közvetve, hogy mi az amit meg szeretnénk vásárolni:

BillingHelper.requestPurchase(mContext, "android.test.purchased");

“android.test.purchase” : ez egy tesztvásárlási termék, ezzel és más hasonló itemID-vel tesztelhetitek a működést. Mivel nekünk az a fontos, hogy valós vásárlás történjen majd, ezért kitalálunk valami alfanumerikus azonosítót. Legyen mondjuk: full_version_001 (amit akár konstansként is jegyezhetünk valahol a programunkban):

BillingHelper.requestPurchase(mContext, "full_version_001");

Ha a linken lévő utasítást követtük és ezzel is megvolnánk, akkor exportáljunk az aláírt projektünket és töltsük fel az Android Developer Console felületen. Egy két kötelező kép és információ megadása után mentsük el. Nem kell publikálni most még, mivel csak mi szeretnénk tesztelni. Miután ezzel meg vagyunk, menjünk ki a főoldalra, ha nem ott volnánk. Itt látható felsorolva minden feltöltött programunk. Igen, de hogy adok hozzá megvásárolható tételt? Az itt felsorolt applikációk sávjaiban látható lenne ez az opció...

Hogyan tovább? Most jön a cikk elején említett feltétel teljesítést, hogy létrehozhassuk a Google Merchant account-unkat. Amennyiben nincs, ezt a főoldalon (még mindig Android Developer Console site) alul értésünkre adja a google és lehetősége biztosít a létrehozására:

Hozzuk létre, töltsük ki az adatokat és kész. Vissza a Developer Console oldalunkhoz és ha minden jól sikerült, látható lesz a programok sávfelsorolásainál mindegyiknél két új opció:

 


Most már létrehozhatunk eladásra szánt termékeket, tegyük is meg. Lépjünk bele (In-app Products) és töltsük ki értelem szerűen a kívánt mezőket. Ami minket legjobban izgat, az az “In-app Product ID” mező. Ide fogjuk beírni a korábban meghatározott azonosítónkat amire hivatkozunk (“full_version_001”). Érdemes megemlíteni, hogy két módban hozhatjuk létre a tételünket:

 

Ha megvagyunk, mentsük el. Újra belelépünk és publikussá tesszük (alul van a gomb) a termékünket. Figyelem! Attól függetlenül, hogy a programunk nem publikált, a Market képes megtalálni a publikált tételeket amiket eladásra szánunk. És csak ebben az esetben fogja megtalálni a Market, ha publikus(ak) a tétel(ek).

Nézzük hogy is állunk:

 

A Google azt mondja van lehetőségünk teszt-vásárlásra amennyiben az Android Developer Console oldalon az “Edit profile” menüben beállítunk “Test Accounts” –hoz email címeket, amikről a vásárlás fog történni. Fejlesztői account-tal nem vásárolhatunk elméletileg. Én kipróbáltam, de még nem tudom, hogy a valósnak tűnő kiszámlázott vásárlásom voltaképp mi is. Én nem jártam sikerrel, nem tudom mi lehetett az oka. Talán írok nekik, és követelem a 4.5 dollárt amit buktam. (smile)

Ezek után nincs más hátra mint feltölteni a telefonra is az aláírt applikációt (pl. DropBox segítségével). Persze ettől még nem fog működni. Sajnos várni kell, amíg letesztelhetjük, hogy megvásárolható-e a termékünk. Ez azért van mert a feltöltött APK adatai el kell jussanak minden Google szerverre. Ez pár óra alatt szerintem biztos megvan. Fontos, hogy a közzétett példában nincs információ tárolás lekezelve a Market sikeres vásárlásának állapotáról. Tehát ezt saját magatoknak kell megoldani (SharedPreferences, SQLite).

Tapasztalhatsz különböző hibákat amitől nem működik megfelelően a vásárlás. Ilyenek lehetnek pl:

 

Ha valaki a Dungeons ("trade") példát szeretné megvalósítani, ajánlom figyelmébe az alábbi oldalt, ahol bemutatják, hol a bug a hivatalson fejlesztői oldalon fellelhető példaprogramban:

http://dimitar.me/a-small-bug-in-the-android-in-app-billing-demo-app-causes-item-not-found/

Sok sikert!