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 |