2013-08-25 33 views
5

我正在使用版本3 Billing API實現訂閱結算。支付對話框關閉後(付款成功),控制返回到我的活動在應用程序結算API v3中,當調用onActivityResult時,INAPP_PURCHASE_DATA爲空值

調用方法

 String payload = UUID.randomUUID().toString(); 
     bundle = mService.getBuyIntent(3, getPackageName(), mProduct, "subs", payload); 

     int responseCode = bundle.getInt("RESPONSE_CODE"); 
     if (responseCode == 0) { 
      PendingIntent pendingIntent = bundle.getParcelable("BUY_INTENT"); 
      startIntentSenderForResult(pendingIntent.getIntentSender(), 1001, new Intent(), Integer.valueOf(0), Integer.valueOf(0), Integer.valueOf(0)); 
     } else if (responseCode == 1) { 
       mErrorMessage.setText(getResources().getString(R.string.purchase_cancelled)); 
       mErrorMessage.setVisibility(View.VISIBLE); 
     } else if (responseCode == 7) { 
       mErrorMessage.setText(getResources().getString(R.string.payment_twice)); 
       mErrorMessage.setVisibility(View.VISIBLE); 
     } else { 
       mErrorMessage.setText(getResources().getString(R.string.payment_general_error)); 
       mErrorMessage.setVisibility(View.VISIBLE); 
     } 

我的活動

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (resultCode == Activity.RESULT_OK) { 
      // Null 
      String purchaseData = data.getStringExtra("INAPP_PURCHASE_DATA" 
     } 
    } 

的問題是,購買數據字符串爲空。這可能是因爲我已經購買了這個訂閱(測試時是100萬次) - 而且我應該先用getPurchases()進行檢查。

購買是否被稱爲「經歷 - 顯然成功」,如果用戶試圖支付他或她是1)當前用戶,或2)在取消之後但服務到期之前的期間?

+0

發佈你的調用方法 –

+0

我也發佈了調用方法 –

+2

我有同樣的問題與android.test.purchased ....試圖通過使用沙箱實現真正的產品和測試....我認爲與android。 test.purchased你總是得到空...... –

回答

4

我有同樣的問題,我發現我使用ITEM_TYPE_SUBS = "subs"而不是ITEM_TYPE_INAPP = "inapp"

當我把正確的參數,它按預期工作。

+0

這根本不解決問題,OP指定 字符串有效負載= UUID.randomUUID()。toString(); bundle = mService.getBuyIntent(3,getPackageName(),mProduct,「subs」,payload); – desgraci

+0

好的。 「inapp」救了我。謝謝@Repminister – Nizam

相關問題