Articles of in app billing

使用虚拟信用卡凭据测试Android Market应用内结算

我已经配置了一个Android应用程序来使用应用程序内的计费模块,如http://developer.android.com/guide/market/billing/index.html所述。 使用英国开发团队的帐户进行测试时,它可以正常工作,这些帐户具有与之相关的真实信用卡。 但是,我的部分开发团队位于中国,由于Google Billing不在中国运营,因此他们无法测试结算function。 可以理解的是,团队很难与他人分享个人卡详细信息或个人帐户信息。 有人知道这方面的工作吗? 在测试中,虚拟卡号可以与帐户相关联吗? 我知道这可以在商家沙箱中使用( http://code.google.com/apis/checkout/developer/Google_Checkout_Basic_HTML_Sandbox.html ),但我似乎无法findAndroid计费测试的等效内容。 任何帮助/指导/支持将在这里表示赞赏。 中国团队专注于许多与购买后体验相关的模块,如果我们找不到解决方法,这将严重受损。 谢谢!

应用内结算不起作用:“IAB Helper未设置”

我试图在我的应用程序中包含应用程序内结算,并且为了测试目的,基于应用程序计费版本3的“TrivialDrive”示例的整个过程(并实现IAB文件中提供的未修改版本的IAB文件)演示文稿的“util”子目录),但它对我不起作用 – 在LogCat上,就在应用程序因错误而终止之前,它会显示消息“应用程序内计费错误: 操作非法状态(launchPurchaseFlow):IAB Helper未设置。 “(在startRegistered()函数被触发后,给我LOG消息”点击注册按钮;启动购买流程进行升级。“)… 知道这里出了什么问题吗? 以下是我的代码的相关部分: package com.mytest; (..) import com.mytest.iab.IabHelper; // the originals from the demo example, unmodified import com.mytest.iab.IabResult; import com.mytest.iab.Inventory; import com.mytest.iab.Purchase; public class Result3 extends Activity implements OnClickListener { private static final String TAG = “BillingService”; private Context mContext; boolean mIsRegistered = false; // this has already been set […]

应用内结算v3 – 请勿检测退款

我已经关注了Google的“In-App Billing v3”培训。 我买了一件物品,但我有问题。 https://developer.android.com/training/in-app-billing/index.html 我已取消并退还购买但该应用程序检测到买入为真。 我无法继续测试我的应用程序,因为我始终检测到购买该项目。 我在logCat中发现的唯一错误是下一个: [3687] InAppBillingService.logResponseBundle:Bundle不包含响应代码 启动mHelper.queryInventoryAsync(mGotInventoryListener)后出现。 任何想法?

Google IAP会返回简短的购买令牌以进行validation

我已经实施了服务器端validationGoogle IAP购买令牌。 我的移动应用程序将此令牌发送给我,因为它来自Google。 常规令牌看起来像 minodojglppganfbiedlabed.AO-J1OyNtpooSraUdtKlZ_9gYs0o20ZF_0ryTNACmvaaaG5EwPX0hPruUdGbE3XejoXYCYzJA2xjjAxrDLFhmu9WC4fvTDNL-RDXCWjlHKpzLOigxCr1QhScXR8uXtX8R94iV6MmMHqD 但有时我会得到一个像这样的短标记 korpimulxmslxissnschtkdb 当我通过Google Play Developer APIvalidation此令牌时: https : //www.googleapis.com/androidpublisher/v2/applications/packageName/purchases/subscriptions/subscriptionId/tokens/token ,对于短令牌,我收到404错误。 哪里有问题? 这个短令牌可能代表真实交易吗?

是否可以根据国家/地区提供多种APK支持?

我有一个免费和定价产品的应用程序,我需要为我的应用程序创建两个APK,并在支持它的国家/地区显示支持应用程序内结算的应用程序,并显示另一个不支持的应用程序的APK -App Billing(它只有免费产品)在不支持它的国家/地区。 我可以使用Android Market Multiple APK支持function来实现这一目标吗? 如果没有,除了创建两个单独的应用程序之外,还有其他可行的建议

Google Play应用内购买返回错误代码-1008:null puchaseData或dataSignature

我在v2中成功实施后,尝试实施Google Play应用内购买v3 。 但是,每次尝试购买我真正的应用内商品时,都会收到以下后续错误: IAB返回null purchaseData或dataSignature(响应-1008:未知错误) 这来自IabHelper.java类,第452行 : if (purchaseData == null || dataSignature == null) { logError(“BUG: either purchaseData or dataSignature is null.”); logDebug(“Extras: ” + data.getExtras().toString()); result = new IabResult(IABHELPER_UNKNOWN_ERROR, “IAB returned null purchaseData or dataSignature”); if (mPurchaseListener != null) mPurchaseListener.onIabPurchaseFinished(result, null); return true; } 我已经确认a)我的应用已签名,b)我的应用版本与Google Play商店中的草稿版本#匹配,以及c)尝试购买的用户已添加为测试用户。 我已尝试过3个测试帐户和4个应用内购买订阅types。 我应该关注这个错误代码吗? 这是一个仅限于非生产版本的问题吗? 如果/当我发布此版本时,这是否会影响我的客户? 一旦您实际使用IAB版本3进行实际发布,您真的只能测试端到端的应用内购买吗? 我意识到我可以使用android.test.purchased项types,我有(它的工作原理),但我不认为这是一个有效的端到端测试。

Android In App Subscription始终返回初始收据,我从未获得续订

我的Android应用有问题。 我正在尝试实施每月订阅。 我创建了IAP,该应用程序处于测试阶段,我注册为测试人员。 购买订阅时,一切都按预期工作。 我可以将其作为测试人员购买,这意味着订阅实际上并未收费,而且每天都会续订。 但这是我的问题开始的地方。 我总是得到原始收据,原始purchaseTime和purchaseToken 。 每当应用程序启动时,我都会调用queryInventoryAsync ,我希望获得最新的续订收据。 但我总是得到原始收据。 我的想法错了吗? 我不应该使用新orderID获得续订收据吗? (正如谷歌文档所说,我应该得到一个像GPA.blabla..0|1|2的orderID GPA.blabla..0|1|2 。我知道有一些缓存机制,但我已经等了三天了,我仍然得到原始订单,而我应该是最新的。 我总是在人行横道上使用cordova,我使用以下插件进行购买: https : //github.com/j3k0/cordova-plugin-purchase 。 我不知道它是否重要,它不应该因为它使用每个其他插件使用的相同的IABHelper类,但也许它们的代码有问题? 我记录了从调用mService.getPurchases(3, mContext.getPackageName(), itemType, continueToken);收到的确切响应mService.getPurchases(3, mContext.getPackageName(), itemType, continueToken); 它包含错误的数据(原始收据)。 为什么? 🙁 其他人有类似的问题吗? 是因为测试订阅了吗? 实际购买时会起作用吗? 我已经开始使用真钱进行测试,但需要一周的时间才能续订。 非常感谢。 修改 :无法从Google Play商店应用中清除缓存。 我不能要求我的用户这样做。 另外,我测试了这个,它不起作用! 编辑2生产订阅(真钱,没有测试)也不起作用! 仍然收到原始收据! 编辑3我还没有解决这个问题。 检测续订的正确方法是什么? 我应该只在后端运行一个cronjob并根据Google的Purchase Status API查询每个订阅吗? 编辑4感谢您的回答。 我已经在后端使用Purchase Status API来确定订阅是否已续订。 但它有点糟糕,如果我获得100.000订阅会导致什么? 遍历所有这些并查询Google […]

Android In-App Billing v3:“无法执行操作:queryInventory”

我首次使用新的v3 API设置了In-App Billing。 它在我的设备上正常工作,但我收到了很多其他用户的错误报告。 其中之一是: java.lang.IllegalStateException: IAB helper is not set up. Can’t perform operation: queryInventory at my.package.util.iab.IabHelper.checkSetupDone(IabHelper.java:673) at my.package.util.iab.IabHelper.queryInventory(IabHelper.java:462) at my.package.util.iab.IabHelper$2.run(IabHelper.java:521) at java.lang.Thread.run(Thread.java:1019) 另一个是: java.lang.NullPointerException at my.package.activities.MainActivity$4.onIabSetupFinished(MainActivity.java:159) at my.package.util.iab.IabHelper$1.onServiceConnected(IabHelper.java:242) 我的活动实现遵循Google的示例代码(所有引用的类都不受示例影响): IabHelper mHelper; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //… mHelper = new IabHelper(this, IAB_PUBLIC_KEY); mHelper.enableDebugLogging(true); mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() { public void onIabSetupFinished(IabResult result) { if […]

“开发者有效载荷”的目的是什么? 它可以用于什么?

Android文档说它意味着“有关订单的补充信息”,但同时它也表示不使用它来发送“实际数据或内容”。 那么这个“开发者有效载荷”的目的是什么? 为什么存在此function? 您能描述一下如何在我自己的应用内结算实施中使用它的真实世界实例吗?

“你已经拥有这个项目”,但getPurchases是空的

我昨天购买了一个订阅 (不是Managed Product或非Unmanaged Product )来testing,我退还了自己,然后取消了订阅。 退款和取消后,当我打电话给: m_billingService.getPurchases(3, m_context.getPackageName(), ITEM_TYPE_SUBS, null) 它会返回购买状态为0 (有效/正常)。 今天当我调用同样的方法时,它什么也不返回。 然而,当我尝试购买该项目,谷歌播放商店响应,我已经拥有该项目。 我已经重新启动了Android设备,清除了谷歌播放服务caching,并确保只有testing帐户在我的手机上激活(即,我删除了我的谷歌开发者帐户)。 问题之前已经被问过,但总是在产品而不是订阅的情况下。 这些post的答案似乎是“消费”产品; 订阅不被消耗。