2012-05-27 11 views
13

मैं एप्लिकेशन बिलिंग में के लिए चरणों का अनुसरण किया:एप्लिकेशन बिलिंग में: आइटम नहीं मिला

  1. स्थापित डेमो एप्लिकेशन
  2. प्रकाशित एक एप्लिकेशन के अंतर्गत उत्पाद
  3. ही प्रकाशित नहीं एप्लिकेशन

हालांकि मैं कैन आइटम खरीद सकता हूं, एक उत्सुक चेतावनी "आइटम नहीं मिला" है कि मुझे खरीद स्क्रीन पर जाने से पहले खारिज करना होगा।

और इस लॉग त्रुटि:

E/Volley(1384): [157] BasicNetwork.performRequest: Unexpected response code 500 for https://android.clients.google.com/fdfe/details?doc=subs:com.testorooney.testo:sword_001 

उत्तर

31

यह सर्वर साइड बग नहीं है। नमूना अनुप्रयोग के डंगऑन कक्षा में खरीद बटन के लिए ऑनक्लिक पर बग है।

आपूर्ति विधि में {} और अगर {} कथन है जहां यह mBillingService.request खरीद को दो बार बुलाया जाता है, जब चयनित आइटम सदस्यता आइटम नहीं है (mManagedType! = प्रबंधित। सदस्यता)। तो एक ही आइटम से दो बार अनुरोध किया जाएगा, एक बार आइटम के "इनएप" (जो वैध अनुरोध है) के साथ और उसके बाद तुरंत "सबस" के आइटम प्रकार के साथ (जो गलत है और यह दिखाता है "आइटम नहीं मिला") ।

if (mManagedType != Managed.SUBSCRIPTION && 
        !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_INAPP, mPayloadContents)) { 
       showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID); 
      } else if (!mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_SUBSCRIPTION, mPayloadContents)) { 
       // Note: mManagedType == Managed.SUBSCRIPTION 
       showDialog(DIALOG_SUBSCRIPTIONS_NOT_SUPPORTED_ID); 
      } 

इसे ठीक करने के कुछ और करने के लिए mManagedType == Managed.SUBSCRIPTION जोड़ने के ऊपर है, तो:

यहाँ गाड़ी कोड है।

@Override 
    public void onClick(View v) { 
     if (v == mBuyButton) { 
      if (Consts.DEBUG) { 
       Log.d(TAG, "buying: " + mItemName + " sku: " + mSku); 
      } 

      if (mManagedType != Managed.SUBSCRIPTION && 
        !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_INAPP, mPayloadContents)) { 
       showDialog(DIALOG_BILLING_NOT_SUPPORTED_ID); 
      } else if (mManagedType == Managed.SUBSCRIPTION && !mBillingService.requestPurchase(mSku, Consts.ITEM_TYPE_SUBSCRIPTION, mPayloadContents)) { 
       // Note: mManagedType == Managed.SUBSCRIPTION 
       showDialog(DIALOG_SUBSCRIPTIONS_NOT_SUPPORTED_ID); 
      } 
     } else if (v == mEditPayloadButton) { 
      showPayloadEditDialog(); 
     } else if (v == mEditSubscriptionsButton) { 
      editSubscriptions(); 
     } 
    } 
+6

यह बेवकूफ बग है ... मुझे लगता है कि इसे रिलीज़ करने से पहले किसी ने भी इस डेमो/ट्यूटोरियल का परीक्षण नहीं किया। –

+2

यहां पहुंचने वाले किसी के लिए: ** यह उत्तर इन-ऐप-बिलिंग-v02 नमूना के बारे में है-इन-ऐप-बिलिंग-v03 ** – bitek

0

मैं अनुभव एक ही व्यवहार है कि। मैंने पढ़ी कई पोस्टों में कहा है कि यह केवल एक सर्वर-साइड त्रुटि है और इसके बारे में आप कुछ भी नहीं कर सकते हैं।

हालांकि, मैंने अपने मित्र से InApp Billing sample code की पुरानी प्रति प्राप्त करने का निर्णय लिया, और अब मैं खरीद स्क्रीन प्रदर्शित करने से पहले item not found error का अनुभव नहीं करता हूं।

इससे मुझे विश्वास होता है कि InApp Billing sample code की हाल की प्रतिलिपि में सर्वर अनुरोध को इकट्ठा करने के तरीके में कुछ गड़बड़ है।

मुझे पुराने नमूना कोड और नए नमूना कोड के बीच अंतर का विश्लेषण करने का मौका नहीं मिला है।

लेकिन मैं आपको बता सकता हूं कि यदि आप नमूना कोड की पुरानी प्रति प्राप्त कर सकते हैं, तो अब आप जिस समस्या का सामना कर रहे हैं उसका अनुभव नहीं करेंगे।

+0

अप्रैल 2011 से डाउनलोड किया गया है, कोई results.http: //code.google.com/p/marketbilling/source/list – hunterp

+0

मैं सिर्फ पुराने प्रतिलिपि विश्लेषण किया

यहाँ समारोह देखना चाहिए कि कैसे है मेरे दोस्त से प्राप्त कोड और वास्तव में अंतर यह लाइन है (BillingService.java में): \t \t \t request.putInt (Consts.BILLING_REQUEST_API_VERSION, 1); –

0

आइटम नहीं मिला त्रुटि तब होती है जब आपकी उत्पाद आईडी (एपीके फ़ाइल में) उत्पाद आईडी (बाजार खाते में उत्पाद सूची में लिखी गई) से मेल नहीं खाती है।

और यदि आप "android.test.purchased" का उपयोग कर रहे हैं तो आपको अपना एपीके अपलोड करने की आवश्यकता नहीं है।

और 1 चीज जो सबसे महत्वपूर्ण है, आपको अपने कोड में अपनी "सार्वजनिक कुंजी" जोड़नी होगी। इस चरण को या तो अपने एंड्रॉइड उदाहरण या अपने स्वयं के ऐप कोड का उपयोग करना चाहिए।
http://developer.android.com/guide/market/billing/billing_integrate.html

+0

मेरे पास निश्चित रूप से सही सार्वजनिक कुंजी – hunterp

3

मैं इस एक ही त्रुटि तहखानों उदाहरण स्थापित करने के लिए और भी जब अपने प्रोजेक्ट के लिए कोड का नमूना लागू करने के लिए है:

सार्वजनिक कुंजी के लिए यह लिंक देखें। मैंने देखा कि अगर मैं makerequestbundle पर जाता हूं और API_VERSION को 1 में बदलता हूं तो मैं इस त्रुटि के बिना इनएप प्रबंधित खरीदारी कर सकता हूं।

दूसरी बात मैं देखा है कि सदस्यता इस त्रुटि के बिना निष्पादित करता है, तो API_VERSION 2.

पर छोड़ दिया है इम सोच अगर यह एक सर्वर साइड बग के रूप में मैं कोड पर देखा है और नहीं कर सकते समस्या मिल जाती है। मेरी उत्पाद आईडी सभी मेलिंग इत्यादि हैं।

+0

वाह है .... बिल्कुल सही! – hunterp

+0

यह सर्वर साइड बग नहीं है। यह खरीद बटन के ऑनक्लिक में नमूना प्रोजेक्ट में एक बग है। कृपया नीचे मेरी व्याख्या देखें। –

0

दुर्भाग्य से, ऐसा लगता है कि आप एपीआई को 1 में बदलते हैं, सदस्यता अक्षम हैं। इसलिए, यह वास्तव में 'आइटम नहीं मिला' त्रुटि से छुटकारा पाता है, लेकिन सदस्यता गैर-कार्यात्मक बनाता है (वे केवल एपीआई 2 में उपलब्ध होना चाहिए)।

तो, ड्राइंग बोर्ड पर वापस। मैं गैर-सदस्यता अनुरोधों के लिए एपीआई 1, और अन्य सभी के लिए एपीआई 2 वापस करने के लिए कोड को दोबारा करने जा रहा हूं।कुछ हद तक सुरुचिपूर्ण समाधान की तरह लगता है।

+0

उत्तर ने मेरे लिए सही काम किया है। – Booger