Child pages
  • In-App Billing
Skip to end of metadata
Go to start of metadata

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:

  • rendelkezned kell külföldi, a Google Merchant-ra jogosultak listájában lévő országban bankszámlával (és ugye a hozzá tartozó bankkártyával a kártyaszám miatt)
  • rendelkezned kell külföldi címmel
  • Google Checkout account-al
  • kell egy aláírt, működőképes APK az integrált fizetési móddal

 

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:

  • 1. “Full version”: Ami annyit tesz, hogy egyetlen tétel kínálunk eladásra, az pedig az ingyenes programunk eddig korlátozott részeinek használatára ad lehetőséget megvásárlás után.
  • 2. “Trading”: Ez esetben értelem szerűen több tételt kínálunk eladásra. A hivatalos fejlesztői oldalon (http://developer.android.com/guide/google/play/billing/index.html) a példaprogram ezt igyekszik bemutatni, hogy vásárolhatunk meg kardot (egyszer) és afféle életerő italokat (többször is).
  • (3.) Subscriptions: Például havonta megújúluló fizetési módok, előfizetési lehetőség.

 

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ó:

  • In-app Products
  • Subscriptions

 


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:

  • Egyszeri vásárlásra, amely a vásárlói account-hoz fűződik örökre (Managed per user account) vagy
  • Alkalmi vásárlása (Unmanaged) pl “Trading” módszernél említett életerő ital, amiből a játék során bármennyit vehetek

 

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:

  • Aláírt feltöltött APK (nem publikált)
  • Létrehozott eladásra szánt tétel(ek) (publikált)

 

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:

  • "Item not found" (market nyitása során):
    • elírtad a publikált tétel azonosítóját és nem egyezik a feltöltött apk-ban lévővel
    • még nem vártál eleget ahhoz, hogy minden google serveren frissüljön a programod adatállománya
    • egyéb amit még nem ismerek
  • “This version of android is not configured for billing trough google play…” (market nyitása során):
    • Aláíratlan apk-t tettél fel a telódra (tehát nem egyezik az aláírt apk-val ami a marketer feltoltál)
    • Aláírt de eltérő aláírással ellátott apk-k kommunikálnak egymással a telódon és a market-en.
    • egyező aláírású apk-k de különböző verziószámmal ellátott (AndroidManifest.xml)
    • egyéb amit még nem ismerek
  • “Signature verification failed.”:
    • a Public Key-t amit be kellett írnod a programba, helytelen, vagy nem írtad be (Android Developer Console / Edit Profile –nál taláható ugye) és így nem egyezik azzal amit a market visszaküld neked (mert ő tudja mi a te public key-ed és ezzel egyeztettek vásárlást (is))
    • android.test.purchase esetén sokszor feljött nekem, talán azért mert nem vártam eleget miután feltoltam az apk-t.

 

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!

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels