2014-04-26 2 views
0

내가 getProductDetails 일부 제품 ID 세부 정보를 얻을 수() getPurchases에서받지 않습니다 즉. 그리고 첫 번째 테스트 제품을 성공적으로 구입합니다. getPurchases()에서 구입 한 제품 목록을 가져올 수 없습니다.노키아 X IAP - getPurchases은() 내 구매 한 제품은()

============================================== ===================

public void getThePurchasedItem(ArrayList<String> productQuery){ 
    final Bundle queryBundle = new Bundle(); 
    queryBundle.putStringArrayList("ITEM_ID_LIST", productQuery); 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      String continuationToken = null; 
      Bundle ownedItems = null; 
      try { 
       showToast("getThePurchasedItem 0000000"); 
       ownedItems = mService.getPurchases(BILLING_API_VERSION, getPackageName(), ITEM_TYPE_INAPP, queryBundle, continuationToken); 
       showToast("getThePurchasedItem 1111111"); 
     //     ownedItems = mService.getPurchases(BILLING_API_VERSION, getPackageName(), ITEM_TYPE_INAPP, null, null); 
      } catch (RemoteException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      int response = ownedItems.getInt("RESPONSE_CODE"); 

      showToast("response code:"+response); 

      if (response == RESULT_OK) { 
       ArrayList<String> ownedProducts = ownedItems.getStringArrayList("INAPP_PURCHASE_ITEM_LIST"); 
       ArrayList<String> purchaseDataList = ownedItems.getStringArrayList("INAPP_PURCHASE_DATA_LIST"); 

       continuationToken = ownedItems.getString("INAPP_CONTINUATION_TOKEN"); 

       System.out.println("getPurchasedItem data size:"+purchaseDataList.size()); 
       System.out.println("getPurchasedItem item size:"+ownedItems.size()); 
       String data = ""; 

       showToast("purchaseDataList.size():"+purchaseDataList.size()); 
       showToast("ownedProducts.size():"+ownedProducts.size()); 

       for (int i = 0; i < purchaseDataList.size(); ++i) { 
        String purchaseData = purchaseDataList.get(i); 
        String product = ownedProducts.get(i); 

        System.out.println("product:"+product); 
        System.out.println("purchaseData:"+purchaseData); 
        /*purchaseData look like this 
        { 
        "productId": "YourProductID", 
        "purchaseToken": "XDd333xk38s", 
        "developerPayload": "" 
        }*/ 
        try { 
         JSONObject jsonPurchaseData = new JSONObject(purchaseData); 
         String productId = jsonPurchaseData.getString("productId"); 
         String developerPayload = jsonPurchaseData.getString("developerPayload"); 
         String purchaseToken = jsonPurchaseData.getString("purchaseToken"); 
         lastObtainedPurchaseToken = purchaseToken; 

         System.out.println("productId:"+productId); 
         System.out.println("developerPayload:"+developerPayload); 
         System.out.println("purchaseToken:"+purchaseToken); 

         data += "=============================\n"; 
         data +="\nproductId:"+productId + "\n"; 
         data +="developerPayload:"+developerPayload + "\n"; 
         data +="purchaseToken:"+purchaseToken + "\n\n"; 

        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        // do something with this purchase information 
        // e.g. display the updated list of products owned by user 
       } 
       data += "============================="; 

       if(purchaseDataList.size()==0){ 
        data="No one product purchased"; 
       } 
       final String finalData = data; 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         // TODO Auto-generated method stub 
         textview.setText(finalData); 
        } 
       }); 
      }else{ 
       System.out.println("getPurchasedItem failed:"+response); 
      } 
     } 
    }).start(); 
} 

답변

1

테스트 ID가 구매 상태를 저장하고 있지 않습니다. 백엔드에 대한 정보가 없으므로 데이터를 가져올 수 없습니다. 따라서 실제 구매 내역을 얻으려면 Nokia Store에서 귀하의 콘텐츠를 예약 한 실제 ID를 사용해야합니다. 또한 ID를 활용하기 전에 ID가 품질 보증을 통과 할 때까지 기다리는 것을 잊지 마십시오.

관련 문제