이전에 좀 보긴했지만
잘정리된 사이트라 보관 차원에서 링크 저장
번역하신분께서 적어두셨듯 (http://infuture.kr/m/1629)
영어로 인해 제대로 보지 못했었는데
아래 링크에서 잘 정리해 주신듯 함.
연재니 계속 읽어보고 정리해야겠음.
이전에 좀 보긴했지만
잘정리된 사이트라 보관 차원에서 링크 저장
번역하신분께서 적어두셨듯 (http://infuture.kr/m/1629)
영어로 인해 제대로 보지 못했었는데
아래 링크에서 잘 정리해 주신듯 함.
연재니 계속 읽어보고 정리해야겠음.
onActivityResult
메서드로 구매 결과가 전달됩니다.Bundle bundle = mService.getBuyIntent(3, "com.example.myapp", MY_SKU, "subs", developerPayload); PendingIntent pendingIntent = bundle.getParcelable(RESPONSE_BUY_INTENT); if (bundle.getInt(RESPONSE_CODE) == BILLING_RESPONSE_RESULT_OK) { // Start purchase flow (this brings up the Google Play UI). // Result will be delivered through onActivityResult(). startIntentSenderForResult(pendingIntent, RC_BUY, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); }
getPurchases
메서드를 사용하세요.Bundle activeSubs = mService.getPurchases(3, "com.example.myapp", "subs", continueToken);
Bundle
이 반환됩니다. 구독이 만료되고 갱신하지 않으면 반환되는 Bundle
에 더 이상 구독이 표시되지 않습니다.IntentFilter promoFilter = new IntentFilter("com.android.vending.billing.PURCHASES_UPDATED"); registerReceiver(myPromoReceiver, promoFilter);
unRegisterReceiver(myPromoReceiver);
키 | 설명 |
---|---|
productId | 상품의 ID입니다. |
type | 이 키의 값은 인앱 상품의 경우 “inapp” , 구독의 경우 "subs" 여야 합니다. |
price | 아이템의 형식 지정된 가격(통화 기호 포함)으로, 세금을 제외한 가격입니다. |
price_amount_micros | 마이크로 단위의 가격으로, 1,000,000 마이크로 단위가 1 통화 단위와 같습니다. 예를 들어, price 가 "€7.99" 이면 price_amount_micros 는 "7990000" 입니다. 이 값은 특정 통화에 대해 현지화된 반올림 가격을 나타냅니다. |
price_currency_code | price 에 대한 ISO 4217 통화 코드입니다. 예를 들어, price 가 영국 파운드 단위로 지정되어 있는 경우 price_currency_code 는 "GBP" 입니다. |
title | 상품의 제목입니다. |
description | 상품에 대한 설명입니다. |
Bundle ownedItems = mService.getPurchases(3, getPackageName(), "inapp", null);
int response = ownedItems.getInt("RESPONSE_CODE"); if (response == 0) { ArrayList<String> ownedSkus = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); ArrayList<String> purchaseDataList = ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST"); ArrayList<String> signatureList = ownedItems.getStringArrayList("INAPP_DATA_SIGNATURE_LIST"); String continuationToken = ownedItems.getString("INAPP_CONTINUATION_TOKEN"); for (int i = 0; i < purchaseDataList.size(); ++i) { String purchaseData = purchaseDataList.get(i); String signature = signatureList.get(i); String sku = ownedSkus.get(i); // do something with this purchase information // e.g. display the updated list of products owned by user } // if continuationToken != null, call getPurchases again // and pass in the token to retrieve more items }
Bundle skuDetails = mService.getSkuDetails(3, getPackageName(), "inapp", querySkus);
int response = skuDetails.getInt("RESPONSE_CODE"); if (response == 0) { ArrayList<String> responseList = skuDetails.getStringArrayList("DETAILS_LIST"); for (String thisResponse : responseList) { JSONObject object = new JSONObject(thisResponse); String sku = object.getString("productId"); String price = object.getString("price"); if (sku.equals("premiumUpgrade")) mPremiumUpgradePrice = price; else if (sku.equals("gas")) mGasPrice = price; } }
Bundle buyIntentBundle = mService.getBuyIntent(3, getPackageName(), sku, "inapp", "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ");
PendingIntent pendingIntent = buyIntentBundle.getParcelable("BUY_INTENT");
startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0));(응답)
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1001) { int responseCode = data.getIntExtra("RESPONSE_CODE", 0); String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA"); String dataSignature = data.getStringExtra("INAPP_DATA_SIGNATURE"); if (resultCode == RESULT_OK) { try { JSONObject jo = new JSONObject(purchaseData); String sku = jo.getString("productId"); alert("You have bought the " + sku + ". Excellent choice, adventurer!"); } catch (JSONException e) { alert("Failed to parse purchase data."); e.printStackTrace(); } } } }(구매 정보)
'{ "orderId":"GPA.1234-5678-9012-34567", "packageName":"com.example.app", "productId":"exampleSku", "purchaseTime":1345678900000, "purchaseState":0, "developerPayload":"bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ", "purchaseToken":"opaque-token-up-to-1000-characters" }'
Bundle bundle = mService.getBuyIntent(3, "com.example.myapp", MY_SKU, "subs", developerPayload); PendingIntent pendingIntent = bundle.getParcelable(RESPONSE_BUY_INTENT); if (bundle.getInt(RESPONSE_CODE) == BILLING_RESPONSE_RESULT_OK) { // Start purchase flow (this brings up the Google Play UI). // Result will be delivered through onActivityResult(). startIntentSenderForResult(pendingIntent, RC_BUY, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); }(구매 확인)
Bundle activeSubs = mService.getPurchases(3, "com.example.myapp", "subs", continueToken);
int response = mService.consumePurchase(3, getPackageName(), token);