hun*_*erp 13 android in-app-billing
我已按照应用结算中的步骤操作:
虽然我CAN购买物品,有一个奇怪的警告"项目未找到"我不得不解雇之前,我可以去购买屏幕.
和此日志错误:
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
Run Code Online (Sandbox Code Playgroud)
Dim*_*ski 31
这不是服务器端错误.该错误位于示例应用程序的Dungeons类中的onClick for Purchase按钮中.
提供的方法在if {} else if {}语句中有一个错误,当所选项不是订阅项(mManagedType!= Managed.SUBSCRIPTION)时,它会导致mBillingService.requestPurchase被调用两次.因此,同一项目将被请求两次,一次是项目类型为"inapp"(这是有效请求),紧接着是项目类型为"subs"(这是不正确的,它显示"找不到项目") .
这是有缺陷的代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请将mManagedType == Managed.SUBSCRIPTION添加到else(如果在上面).
以下是该函数的外观:
@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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7409 次 |
| 最近记录: |