2013-08-25 31 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

相关问题