Che*_*eng 11 android android-billing
我正在使用以下内容BillingClient。
implementation 'com.android.billingclient:billing:1.2.2'
Run Code Online (Sandbox Code Playgroud)
虽然我已经发出退款如下
但我仍然收到以下回复 BillingClient.queryPurchases
{
"orderId": "GPA.3352-2555-5719-25534",
"packageName": "com.yocto.wenote",
"productId": "note_list_promo",
"purchaseTime": 1560501011137,
"purchaseState": 0,
"purchaseToken": "djjneabakdaenkjafajbbclo.AO-J1OzbDNn5WkobYbSqLNzoBokm1F552-CqzfLQuNXK69bhxC-TnOTqdPV1RCl9T2okpSWfRD9RrE0eFhSN8glUbsOM5XUBDRnm_yK2Ohq_uyNuU17i1dc3CBhdeEn9uZCIfD3zY4tF"
}
Run Code Online (Sandbox Code Playgroud)
根据文档 BillingClient.queryPurchases
获取在您的应用内购买的所有商品的购买详情。此方法使用 Google Play Store 应用程序的缓存,而无需发起网络请求。
这可能是原因。我尝试使用另一个功能 -queryPurchaseHistoryAsync也无济于事。根据文档
返回用户最近为每个 SKU 进行的购买,即使该购买已过期、取消或消费。
对于queryPurchaseHistoryAsync,没有purchaseState表示以下购买被取消!
{
"productId": "note_list_promo",
"purchaseToken": "djjneabakdaenkjafajbbclo.AO-J1OzbDNn5WkobYbSqLNzoBokm1F552-CqzfLQuNXK69bhxC-TnOTqdPV1RCl9T2okpSWfRD9RrE0eFhSN8glUbsOM5XUBDRnm_yK2Ohq_uyNuU17i1dc3CBhdeEn9uZCIfD3zY4tF",
"purchaseTime": 1560501011137,
"developerPayload": null
}
Run Code Online (Sandbox Code Playgroud)
谷歌真的应该提供一个非缓存版本的queryPurchases.
知道我做错了什么吗?在我发出退款后,我不希望用户可以继续使用付费功能。
我们通过以下方式清除缓存
private static void clearGooglePlayStoreBillingCacheIfPossible(BillingClient billingClient) {
billingClient.queryPurchaseHistoryAsync(SkuType.INAPP, (responseCode, purchasesList) -> {
});
billingClient.queryPurchaseHistoryAsync(SkuType.SUBS, (responseCode, purchasesList) -> {
});
}
Run Code Online (Sandbox Code Playgroud)
之后,我们会BillingClient.queryPurchases像往常一样打电话。
请注意,此类缓存清除不会立即发生。清除缓存可能需要长达 24 小时的时间。奇怪的是,这个重要的要求没有以任何方式记录下来。
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |