- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的应用程序中实现应用程序内计费,除了退款之外,一切都很好。在过去的几天里,我一直在反对这一点,如果用户要求退款,似乎无法从应用程序方面知道。
我希望能够在用户获得退款后撤销对一次性托管产品(删除广告)的访问权限。
我没有使用后端,所以我依赖 Google Play API。
我尝试使用 queryPurchaseHistoryAsync
查询 Google Play API它返回用户最近购买的列表。这似乎不起作用,因为在要求退款后购买仍然存在(在写这篇文章之前已经等待了一天)。
这是我所做的:
PurchaseState
枚举是
public @interface PurchaseState {
// Purchase with unknown state.
int UNSPECIFIED_STATE = 0;
// Purchase is completed.
int PURCHASED = 1;
// Purchase is waiting for payment completion.
int PENDING = 2;
}
最佳答案
问题
即使用户进行了退款并实际获得了退款,任何进行的购买仍将被记录。当您(开发者/应用所有者)为应用内产品发出退款/撤销请求时也是如此。
唯一的区别是购买的“purchaseState”。 Google 的计费库的问题在于,它们在对 的 purchase.getPurchaseState() 调用中掩盖了这个“purchaseState”值。待定 或 已购买 状态。见反编译代码:
public int getPurchaseState() {
switch(this.zzc.optInt("purchaseState", 1)) {
case 4:
return 2; // PENDING
default:
return 1; // PURCHASED
}
}
当您的应用内商品处于退款状态时,它的状态是
int getUnmaskedPurchaseState(Purchase purchase) {
int purchaseState = purchase.getPurchaseState();
try {
purchaseState = new JSONObject(purchase.getOriginalJson()).optInt("purchaseState", 0);
} catch (JSONException e) {
e.printStackTrace();
}
return purchaseState;
}
硬解
A purchase can be voided in the following ways:
- The user requests a refund for their order. The user cancels their order.
- An order is charged back.
- Developer cancels or refunds order. Note: only revoked orders will be shown in the Voided Purchases API.
- If developer refunds without setting the revoke option, orders will not show up in the API.
- Google cancels or refunds order.
关于Android 应用内结算 - 如何处理退款,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61734553/
我有一个 MySQL 数据库,其中包含订单表和具有可用库存的零件号表。 例如 ==Orders Table== part_number order_date qty ==Stock Table== p
我正在使用 Libgdx + Android Studio 并尝试实现 Google Play Billing。我按照 here 中的说明进行操作.我修改了我的依赖项,如示例所示: dependenc
背景:我们有一个电视应用程序,它提供每月订阅作为其唯一的应用程序内项目。 我主要是在寻找我认为是真实的确认: 从 Google Play 计费库 2.0 版开始,就有一种称为待定购买的东西。主要的实际
我正在尝试集成 Google Play 结算。 这是我的 onCreate : private final static String TAG = "MainActivity" ; priva
我遵循了 Google 开发者文档中的所有最佳实践:https://developer.android.com/google/play/billing/billing_library_overview
我想知道文档是否将使用 ProGuard 的含义错误(相反)? 来源:https://developer.android.com/google/play/billing/billing_library
编辑:因为有些人仍在检查这个线程,我想提一下,这是非常过时的,因为它是关于应用程序购买中的 v2,现在已弃用。请查看latest (目前是 v3)文档,非常简单 关于这个问题有很多话题,我想我理解这个
在 2020 年 11 月之前,Google Play 上的 Android 应用必须管理“帐户保留”状态。 https://developer.android.com/distribute/play
我创建了一个带有应用内计费的测试应用。将其上传到 google play 并将其发送给 beta 测试人员。当他们尝试购买时,他们会收到 Error retrieving information fr
我是一名优秀的程序员,十分优秀!