【发布时间】:2017-06-09 08:04:45
【问题描述】:
我无法正常使用应用内购买。在实施应用内购买时,我按照此处的 Google 开发者网站上的步骤进行操作: https://developer.android.com/google/play/billing/billing_integrate.html
该应用已在 Google Play 商店中发布,我正在尝试使用与我的 Google 开发者帐户不同的帐户购买应用内购买(我尝试了其他几个帐户)。我的应用程序的最新版本是在 1 月 18 日完成的。
所以关于代码,一切似乎都很好,并且通过这段代码启动了购买流程。 buyConsumable 方法中的引用是 SKU。
public void buyConsumable(String reference, BuyConsumableCompletionHandler handler) {
this.reference = reference;
defaultHandler = handler;
if(iabHelper != null) {
try {
iabHelper.launchPurchaseFlow(activity, reference, 10001, this);
} catch (Exception e) {
Log.e(Constants.ERROR, e.getLocalizedMessage());
defaultHandler.purchaseFailed();
}
} else {
defaultHandler.purchaseFailed();
}
}
我使用默认的 iabHelper 没什么特别的。当调用启动流程并出现 Google Play 商店弹出窗口时,我在我的 Android 监视器中看到以下异常:
01-24 14:29:53.891 4865-5272/? E/Parcel:解组时找不到类:com.google.android.finsky.billing.lightpurchase.PurchaseParams java.lang.ClassNotFoundException:com.google.android.finsky.billing.lightpurchase.PurchaseParams 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:324) 在 android.os.Parcel.readParcelableCreator(Parcel.java:2404) 在 android.os.Parcel.readParcelable(Parcel.java:2358) 在 android.os.Parcel.readValue(Parcel.java:2264) 在 android.os.Parcel.readArrayMapInternal(Parcel.java:2614) 在 android.os.BaseBundle.unparcel(BaseBundle.java:221) 在 android.os.BaseBundle.getString(BaseBundle.java:920) 在 android.content.Intent.getStringExtra(Intent.java:6195) 在 com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2699) 在 com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2161) 在 com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:6877) 在 com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:310) 在 com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:6635) 在 android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:292) 在 com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3991) 在 android.os.Binder.execTransact(Binder.java:453) 引起:java.lang.ClassNotFoundException:com.google.android.finsky.billing.lightpurchase.PurchaseParams 在 java.lang.Class.classForName(本机方法) 在 java.lang.BootClassLoader.findClass(ClassLoader.java:781) 在 java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:469) 在 java.lang.Class.classForName(本机方法) 在 java.lang.Class.forName(Class.java:324) 在 android.os.Parcel.readParcelableCreator(Parcel.java:2404) 在 android.os.Parcel.readParcelable(Parcel.java:2358) 在 android.os.Parcel.readValue(Parcel.java:2264) 在 android.os.Parcel.readArrayMapInternal(Parcel.java:2614) 在 android.os.BaseBundle.unparcel(BaseBundle.java:221) 在 android.os.BaseBundle.getString(BaseBundle.java:920) 在 android.content.Intent.getStringExtra(Intent.java:6195) 在 com.android.server.am.ActivityStackSupervisor.startActivityLocked(ActivityStackSupervisor.java:2699) 在 com.android.server.am.ActivityStackSupervisor.startActivityMayWait(ActivityStackSupervisor.java:2161) 在 com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:6877) 在 com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:310) 在 com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:6635) 在 android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:292) 在 com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:3991) 在 android.os.Binder.execTransact(Binder.java:453) 原因:java.lang.NoClassDefFoundError: Class not found using the boot class loader;没有可用的堆栈跟踪
我仍然可以完成购买,所以我按下购买按钮,然后使用我的 Paypal/CC 购买应用内购买。我在 Android 监视器中收到以下错误:
E/Volley:[4116] c.a:https://android.clients.google.com/fdfe/ees/commitPurchase 的意外响应代码 500
我检查了您在点击应用并导航到服务和 API 时从 Google 开发者控制台获得的许可代码,该代码也与我在应用中使用的代码相同。
有人知道如何解决这个问题吗?
【问题讨论】:
标签: java android in-app-purchase in-app-billing