Ken*_*sen 37 android billing in-app
直到2016年6月20日,我才能取消在我的应用程序中完成的测试购买.从同一个测试帐户进行多个应用程序内购买(非消费品),可以轻松开发和测试代码,而不需要太多的麻烦.
2016年6月20日之后,我的商家帐户中没有显示购买,我无法从我的测试帐户购买超过1次.我得到的只是:"你已经拥有这个项目"的消息.
我向google开发人员支持小组记录了一个请求,答案是:
从2016年6月20日开始,我们更改了一次性应用内购买(IAP)的测试购买.以前,测试购买一次性IAP会生成订单ID.从2016年6月20日开始,一次性IAP不会生成正式订单ID(如果有的话),也不会出现在Merchant Center中.此行为已适用于订阅IAP.您可以在Android开发者帮助中心了解有关测试应用内结算的详情:https://developer.android.com/google/play/billing/billing_testing.html#testing-purchases
好吧..所以我去了上面提到的链接,并在那里有一个部分: 取消已完成的测试购买 ,其中说明:
Google Play会为每个用户累积完成的测试购买,但不会将其传递给财务处理.在某些情况下,您可能希望手动取消测试购买以继续测试.为此,请在Play商店中打开应用页面.如果要取消的测试购买是订阅,您还可以使用Purchases.subscriptions API的cancel()方法.重要提示:Purchases.subscriptions API的refund()和revoke()方法不支持测试购买.
所以我去Play商店的应用页面......然后做到了什么?网页没有说明我应该在那里做什么.谁都知道?
它确实说: 你也可以使用Purchases.subscriptions API的cancel()方法.
这表明使用cancel()方法不是唯一的方法.
如何解决这个问题而不在我的应用中添加额外的代码?
cmi*_*nus 17
我进入了主要的Google Play控制台页面,然后点击了订单管理.在此之下,我能够选择所有测试购买并退款.我是该应用程序的主要开发人员,因此我可以访问.如果您是测试人员,您可能需要联系支持团队并要求他们退还您的订单.
dev*_*max 15
所有托管的应用内商品均为耗材.
正如文档中所述.
这意味着您可以使用自有物品而不是取消购买并重新购买.我建议在应用发布时查询广告资源:
mIabHelper.queryInventoryAsync(this);
然后,您可以在回调中使用拥有的项:
@Override
public void onQueryInventoryFinished(IabResult result, Inventory inventory) {
Purchase purchase = inventory.getPurchase(MY_SKU);
boolean isBought = (purchase != null && verifyDeveloperPayload(purchase));
if (isBought) {
mIabHelper.consumeAsync(purchase, new OnConsumeFinishedListener() {
@Override
public void onConsumeFinished(Purchase purchase, IabResult result) {
//Clear the purchase info from persistent storage
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
这对于测试IAB流是可以的,但请确保从发行版中删除此代码.
Sol*_*ake 10
来自/sf/answers/2112520301/ @mttmllns
无需编写任何特殊的消费代码。只需使用 adb 命令清除 Google Play 商店数据:
Run Code Online (Sandbox Code Playgroud)adb shell pm clear com.android.vending
我找到了一个不太方便但有效的解决方案。似乎您可以消费不可食用的产品,这样您就可以再次购买它们。我正在使用phonegap,所以我只有cordova-plugin-purchase插件的示例代码:
store.when("your.product.id").updated(product => {
if(product.owned) {
var transaction = product.transaction;
product.transaction = null;
store.inappbilling.consumePurchase(
function() { // success
alert("consume success");
},
function(err, code) { // error
alert("consume error " + err)
},
product.id,
transaction.id
);
}
});
Run Code Online (Sandbox Code Playgroud)
当您致电store.refresh()或购买产品时,将调用更新的回调。因此,根据您的用例,您可能想要实施一种额外的方法来检查何时消费该产品。
我没有使用原生 Android 应用内支付的经验,但显然您也可以在那里消费产品。
编辑:抱歉,我刚刚读到您不想在项目中包含其他代码。我认为目前这是不可能的,但我想在这里保留我的答案,因为它可能会帮助其他尝试测试应用内支付的人。
小智 5
在Play控制台上,转到开发者帐户->帐户详细信息,设置许可证测试人员(默认情况下,您是一个)
购买物品
转到订单管理,选择那些测试订单,然后选择:退款,但是在退款时不要忘记检查撤销。(我忘记了撤消,现在找不到找回它们的方法)
无论如何,另一个测试帐户可以。
| 归档时间: |
|
| 查看次数: |
10318 次 |
| 最近记录: |