我已经能够在我的android应用程序中实现应用内购买(遵循android开发者网站的逐步说明)https://developer.android.com/intl/es/training/in-app-billing/index.html),但应该用来指示购买是否成功的回调发生了一些奇怪的事情。我收到带有真实和静态产品ID的“Purchase Successful”(购买成功)消息,但我希望看到的更改只有在我通过单击升级按钮再次调用“Iab.QueryInventoryFinishedListener”后才能进行。据我所知,“onIabPurchaseFinished”似乎有问题。我已经尝试过使用下面链接中提供的问题解决方案,但“onActivityResult”也没有奏效。我在一个片段中执行这些操作,没有看到任何错误,但我不确定这是否是问题的一部分。任何帮助都将不胜感激。提前谢谢。
我从未打过电话。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_game, container, false);
mHelper = new IabHelper(getActivity(), base64EncodedPublicKey);
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
if (!result.isSuccess()) {
// Oh noes, there was a problem.
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
// Hooray, IAB is fully set up!
}
});
return rootView;
}
@Override
public void onDestroy() {
super.onDestroy();
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
@Override
public void onClick(View button) {
if (button == upgrade){
if (upgradeOn) {
//Button Animation
final Animation animation = buttonAnimation();
upgrade.startAnimation(animation);
upgradeOn = false;
//Check for upgrade
mHelper.queryInventoryAsync(mGotInventoryListener);
}
}
}
//1.
//Check For Previous Purchases
IabHelper.QueryInventoryFinishedListener mGotInventoryListener
= new IabHelper.QueryInventoryFinishedListener() {
public void onQueryInventoryFinished(IabResult result,
Inventory inventory) {
if (result.isFailure()) {
upgradeOn = true;
}
else {
//Check for previous upgrade
previousUpgrade = inventory.hasPurchase("android.test.purchased");
if (previousUpgrade){
purchaseSuccess();
}else {
//Continue with new purchase
mHelper.launchPurchaseFlow(getActivity(), "android.test.purchased", 811,
mPurchaseFinishedListener, "bGoa+V7g/yqDXvKRqq+JTFn4uQZbPiQJo4pf9RzJ"
+ ParseUser.getCurrentUser().getUsername());
}
}
}
};
//2.
//Handle Purchase
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
}
if (requestCode == 811){
Log.e("TEST: ","AAAAHHH!");
if (resultCode == 0){
Log.e("TEST","URRGGGHHH!");
}
}
}
//3.
//Purchase Complete
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener
= new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase)
{
if (result.isFailure()) {
return;
}
else if (purchase.getSku().equals("android.test.purchased")) {
purchaseSuccess();
}
}
};
我能解决这个问题。事实证明,“onActivityResult”必须位于我正在处理的片段的父活动中。我重新定位了它(以及mHelper代码,即setup和destroy),但将代码示例中显示的其他方法保留在我的片段中,并且能够让“onIabPurchaseFinished”调用自定义方法“purchaseSuccess();”
在阅读了关于这个问题答案的评论后,我发现了这个问题:IabHelper PurchaseFinishedListener
我正在开发一个应用内购买。我已将该应用程序放在 Play 商店进行封闭测试。在帐户设置中使用测试人员电子邮件和添加的测试人员电子邮件。我在 Play 商店中有 2 个托管产品。我在调试模式下测试了 android.test.purchased 并且工作正常。但是在我购买 SKU 时从 Play 商店安装的发布版本中,它成功完成了购买,但由于某种原因我收到了失败响应。我试图弄清楚这一点。此外,我在购
我试图在Android中测试应用内购买。 我已经将一个私人签名的apk上传到Google Player Developer Console。它目前是“Alpha测试”部分的草稿。 当我尝试购买商品时,出现以下错误: 这让我感到困惑,因为我使用的是测试帐户,而不是用于发布此应用程序的帐户。 我怀疑它可能会失败,因为我的手机上有开发者帐户,但这是我的个人手机,所以我不想从手机上删除该帐户(特别是如果我
问题内容: 我目前正在尝试编写应用内购买代码。我一直在寻找有关Google无法解决的某些问题的最佳做法的文档,信息和教程。 到目前为止,我所做的是: 我正在运行一个结算服务,可以处理与Google Play的通话。该服务可以完成“示例”交易,我的应用程序会收到该消息。 我现在想将内容传送到设备。我认为接下来需要发生的事情: 我的应用程序需要与我的服务器联系,并显示成功交易的证明。做一些Cert的手
问题内容: 我已经尝试解决这一问题了一段时间,但是我无法使其正常工作。当用户单击链接时,系统会要求他确认他要执行此操作。然后进行ajax调用。调用的脚本可以正常工作,并返回重定向到的字符串。 我在这里看到了几个关于window.location问题的帖子,但是它们都无法解决我的问题。 我的代码: 如果不这样做,我可以看到传递了正确的数据。例如/ user / homepage。但是,重定向尚未发生
准备工作 付费应用协议 如果你还没有,你需要在 iTunes Connect 签署付费应用协议, 并设置您的银行和税务信息。 iTunes Connect 开发人员帮助: 协议、税务和银行概述 创建您的应用内购买 然后,您需要在iTunes Connect中配置您的应用内购买,并包含名称,定价和说明等详细信息,以突出显示您的应用内购买的功能。 iTunes Connect开发人员帮助:创建应用程序
我在google play store中有一个应用程序,在添加计费3V以处理订阅时遇到了一些问题。任何新的订阅者在付款和付款完成并出现在谷歌控制台后都无法访问我的应用程序。 我希望能在我的应用程序中帮助我处理应用程序内购买,代码如下: public static void isUserHasSubscription(Context Context,onCheck onCheck){BillingC