2013-04-23 3 views
0

구독 제품을 만들었고 사람들이 앱을 구입하려고 할 때 앱 스토어에서 앱을 클릭하면 '항목을 찾을 수 없습니다'라는 오류 메시지가 표시됩니다.Android 결제 - 상품을 찾을 수 없음

개발자 콘솔에 실시간으로 표시됩니다. 이것에

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    sendEmail(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data 

결과 :

onActivityResult(10001,0,Intent { (has extras) } 

및 onIabPurchaseFinished

IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() 
{ 
    public void onIabPurchaseFinished(IabResult result, Purchase purchase) 
    { 
     sendEmail(TAG, "Purchase finished: " + result + ", purchase: " + purchase); 
이 방법에서

여기

는 onActivityResult를()이다 : 여기

내가 호출 어떻게

실행 된 적이없는 것 같습니다.

그리고

public void onUpgradeAppButtonClicked() 
{ 
    sendEmail(TAG, "Buy button clicked; launching purchase flow for upgrade. SKU: " + SKU_SUBSCRIPTION + " and RC_REQUEST: " + RC_REQUEST); 
    //setWaitScreen(true); 
    mHelper.launchPurchaseFlow(this, SKU_SUBSCRIPTION, RC_REQUEST, mPurchaseFinishedListener); 
} 

이 결과 :

구매 버튼을 클릭; 업그레이드를위한 구매 흐름 시작. SKU : my_sku 및 RC_REQUEST : 10001

누구에게 오류가 발생했는지 알 수 있습니까? 이 문제가 일부 구형 전화에서 발생할 수 있습니까? https://play.google.com/store/apps/details?id=com.problemio&hl=en

및 과금에 도착 : 응용 프로그램에 대한 링크는 누군가가 어쩌면 자신의 휴대 전화에 그것을 시도 할 수 있다면 난 단지 :)이 함께 테스트하기 위해 전화 한을 가지고 있기 때문에

또한, 그 도움이 될 것입니다 홈 화면 하단에 있습니다.

편집 : 나는 때때로 시간이 걸리는 것을 알고

인 - 응용 제품 진정으로 안드로이드 시스템에서 생중계하지만 내 dev에 콘솔 :

편집에 살고 말합니다하기 :

/** 
* Same as calling {@link #launchPurchaseFlow(Activity, String, int, OnIabPurchaseFinishedListener, String)} 
* with null as extraData. 
*/ 
public void launchPurchaseFlow(Activity act, String sku, int requestCode, OnIabPurchaseFinishedListener listener) { 
    launchPurchaseFlow(act, sku, requestCode, listener, ""); 
} 

다음이 :

내 IABHelper.java에서

나는이 있습니다

+0

나는 당신의 응용 프로그램을 좋아한다. 모두 잘 작동하지만 앱에 구독료를 기부하는 동안 예외 항목을 찾을 수 없습니다. 아래 나의 대답을 확인하십시오. – Maulik

답변

1

나는 애플 리케이션 청구서에 가입을 시도하지 않았지만 내 지식에 따라 아래 내 대답을 확인하십시오. 제품에 대해 제공 한 제품 키가 올바른지 확인하십시오. 항목 유형에 IabHelper.ITEM_TYPE_SUBS을 (를) 사용하십시오.

1) static final String SKU_SUBSCRIPTION = "your product id should be here"; 

    2) mHelper.launchPurchaseFlow(youractivity.this, 
          SKU_SUBSCRIPTION, IabHelper.ITEM_TYPE_SUBS, 
          RC_REQUEST, mPurchaseFinishedListener, payload); 

제게 알려 주시면 감사하겠습니다. 희망이 당신을 도울 것입니다.

체크 IabHelper 방법 : I Play 스토어에서 다운로드 한 후

 // The listener registered on launchPurchaseFlow, which we have to call back when 
    // the purchase finishes 
    OnIabPurchaseFinishedListener mPurchaseListener; 

    public void launchPurchaseFlow(Activity act, String sku, int requestCode, OnIabPurchaseFinishedListener listener) { 
     launchPurchaseFlow(act, sku, requestCode, listener, ""); 
    } 

    public void launchPurchaseFlow(Activity act, String sku, int requestCode, 
      OnIabPurchaseFinishedListener listener, String extraData) { 
     launchPurchaseFlow(act, sku, ITEM_TYPE_INAPP, requestCode, listener, extraData); 
    } 

    public void launchSubscriptionPurchaseFlow(Activity act, String sku, int requestCode, 
      OnIabPurchaseFinishedListener listener) { 
     launchSubscriptionPurchaseFlow(act, sku, requestCode, listener, ""); 
    } 

    public void launchSubscriptionPurchaseFlow(Activity act, String sku, int requestCode, 
      OnIabPurchaseFinishedListener listener, String extraData) { 
     launchPurchaseFlow(act, sku, ITEM_TYPE_SUBS, requestCode, listener, extraData); 
    } 

    /** 
    * Initiate the UI flow for an in-app purchase. Call this method to initiate an in-app purchase, 
    * which will involve bringing up the Google Play screen. The calling activity will be paused while 
    * the user interacts with Google Play, and the result will be delivered via the activity's 
    * {@link android.app.Activity#onActivityResult} method, at which point you must call 
    * this object's {@link #handleActivityResult} method to continue the purchase flow. This method 
    * MUST be called from the UI thread of the Activity. 
    * 
    * @param act The calling activity. 
    * @param sku The sku of the item to purchase. 
    * @param itemType indicates if it's a product or a subscription (ITEM_TYPE_INAPP or ITEM_TYPE_SUBS) 
    * @param requestCode A request code (to differentiate from other responses -- 
    *  as in {@link android.app.Activity#startActivityForResult}). 
    * @param listener The listener to notify when the purchase process finishes 
    * @param extraData Extra data (developer payload), which will be returned with the purchase data 
    *  when the purchase completes. This extra data will be permanently bound to that purchase 
    *  and will always be returned when the purchase is queried. 
    */ 
    public void launchPurchaseFlow(Activity act, String sku, String itemType, int requestCode, 
         OnIabPurchaseFinishedListener listener, String extraData) { 
     checkSetupDone("launchPurchaseFlow"); 
     flagStartAsync("launchPurchaseFlow"); 
     IabResult result; 

     if (itemType.equals(ITEM_TYPE_SUBS) && !mSubscriptionsSupported) { 
      IabResult r = new IabResult(IABHELPER_SUBSCRIPTIONS_NOT_AVAILABLE, 
        "Subscriptions are not available."); 
      if (listener != null) listener.onIabPurchaseFinished(r, null); 
      return; 
     } 

     try { 
      logDebug("Constructing buy intent for " + sku + ", item type: " + itemType); 
      Bundle buyIntentBundle = mService.getBuyIntent(3, mContext.getPackageName(), sku, itemType, extraData); 
      int response = getResponseCodeFromBundle(buyIntentBundle); 
      if (response != BILLING_RESPONSE_RESULT_OK) { 
       logError("Unable to buy item, Error response: " + getResponseDesc(response)); 

       result = new IabResult(response, "Unable to buy item"); 
       if (listener != null) listener.onIabPurchaseFinished(result, null); 
       return; 
      } 

      PendingIntent pendingIntent = buyIntentBundle.getParcelable(RESPONSE_BUY_INTENT); 
      logDebug("Launching buy intent for " + sku + ". Request code: " + requestCode); 
      mRequestCode = requestCode; 
      mPurchaseListener = listener; 
      mPurchasingItemType = itemType; 
      act.startIntentSenderForResult(pendingIntent.getIntentSender(), 
              requestCode, new Intent(), 
              Integer.valueOf(0), Integer.valueOf(0), 
              Integer.valueOf(0)); 
     } 
     catch (SendIntentException e) { 
      logError("SendIntentException while launching purchase flow for sku " + sku); 
      e.printStackTrace(); 

      result = new IabResult(IABHELPER_SEND_INTENT_FAILED, "Failed to send intent."); 
      if (listener != null) listener.onIabPurchaseFinished(result, null); 
     } 
     catch (RemoteException e) { 
      logError("RemoteException while launching purchase flow for sku " + sku); 
      e.printStackTrace(); 

      result = new IabResult(IABHELPER_REMOTE_EXCEPTION, "Remote exception while starting purchase flow"); 
      if (listener != null) listener.onIabPurchaseFinished(result, null); 
     } 
    } 
+0

감사합니다.내가 사용하고있는 것은이 호출이다. mHelper.launchPurchaseFlow (this, SKU_SUBSCRIPTION, RC_REQUEST, mPurchaseFinishedListener); ITEM_TYPE_SUBS 또는 페이로드 매개 변수가없는 이전 API 버전을 사용하고 있습니까? 페이로드가 필요한지 확실하지 않습니다 – Genadinik

+0

intersting ... 페이로드 오브젝트를 어떻게 구성합니까? 나는 그 예에서 내가 가진 것을 찾지 못하는 것 같습니다. – Genadinik

+0

@Genadinik은 App 구입시 버전 3을 사용하고 있습니다. 당신은 또한 안드로이드 SDK의 기본 데모에서 찌를 수 있습니다. 2013 년 2 월 이후에 http://android-developers.blogspot.in/2012/12/in-app-billing-version-3.html 링크를 확인하십시오. – Maulik

관련 문제