2013. 8. 7. 17:56

InApp Billing Sample Test Program(Trivial Drive) Structure


1. Main 의 OnCreate 에서 mHelper(IabHelper).startSetup 호출


2. IabHelper 의 startSetup 에서 ServiceConnection 인스턴스 생성


3. InAppBillingService bind 요청 후 onServiceConnected() 호출

 public void onServiceConnected(ComponentName name, IBinder service) {

      mService = IInAppBillingService.Stub.asInterface(service);

IInAppBillingService를 사용할 수 있는 mService 셋팅


4. isBillingSupported 를 이용하여 결제가능여부 확인

 int response = mService.isBillingSupported(3, packageName, ITEM_TYPE_INAPP);

ITEM_TYPE_INAPP 은 inapp과 subs가 존재한다. inapp은 item 방식의 상품을 의미하고 subs는 구독하여 결제하는 상품을 의미한다.

- 다음은 RESPONSE의 Define

 BILLING_RESPONSE_RESULT_OK = 0;

 BILLING_RESPONSE_RESULT_USER_CANCELED = 1;

 BILLING_RESPONSE_RESULT_BILLING_UNAVAILABLE = 3;

 BILLING_RESPONSE_RESULT_ITEM_UNAVAILABLE = 4;

 BILLING_RESPONSE_RESULT_DEVELOPER_ERROR = 5;

 BILLING_RESPONSE_RESULT_ERROR = 6;

 BILLING_RESPONSE_RESULT_ITEM_ALREADY_OWNED = 7;

 BILLING_RESPONSE_RESULT_ITEM_NOT_OWNED = 8; 


5. response 의 결제 여부 check 후, lisner 를 통해 Main 의 startSetup 를 불러온다.

listener.onIabSetupFinished(new IabResult(BILLING_RESPONSE_RESULT_OK, "Setup successful.")); 


6. Main 의 StartSetup에서 mHelper(IabHelper).queryInventoryAsync() 호출 

- query한 item이 들어갈 inventory 생성 후


7. IabHelper의 queryInventoryAsync에서 queryPurchases()호출

ArrayList<String> ownedSkus = ownedItems.getStringArrayList(INAPP_ITEM_LIST);

ArrayList<String> purchaseDataList = ownedItems.getStringArrayList(INAPP_PURCHASE_DATA_LIST);

queryPurchases() 는 구매된 Product List 를 가져온다.


8. querySkuDetail() 함수를 호출해 결제한 ID 에 대한 상세 정보를 가져온다.


9. queryInventoryAsync 가 끝나면 Main 함수의 onQueryInventoryFinished 호출


10. onQueryInventoryFinished 에서는 inventory의 item 을 받아와서 comsume


'Computer Programming > Android' 카테고리의 다른 글

[Android] 안드로이드 스트링 비교  (0) 2015.09.24
[Android]BroadCast Err(Handler?)  (0) 2013.09.23
[Android]InApp Billing - 3  (0) 2013.08.08
[Android]InApp Billing - 2  (0) 2013.08.08
Posted by 은돌군