所以我有一个实例化的计费客户
billingClient = BillingClient.newBuilder(this).setListener(this).build();
Run Code Online (Sandbox Code Playgroud)
然后我打电话
billingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(int responseCode) {
//TODO: use this for stuff
com.android.billingclient.api.Purchase.PurchasesResult result;
result = billingClient.queryPurchases(BillingClient.SkuType.SUBS);
Timber.d(result.toString());
}
@Override
public void onBillingServiceDisconnected() {
//TODO: use this for stuff
Timber.d("something went wrong ");
}
});
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,木材线上的断点总是返回断开状态。谁能提供我将如何做的见解或示例?
我想为我的android应用的应用内购买(使用kotlin编写)实施Google Play结算。我正在关注本教程。
这是我的代码:
private lateinit var billingClient: BillingClient
private lateinit var productsAdapter: ProductsAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupBillingClient()
}
private fun setupBillingClient() {
billingClient = BillingClient
.newBuilder(this)
.setListener(this)
.build()
billingClient.startConnection(object : BillingClientStateListener {
override fun onBillingSetupFinished(@BillingClient.BillingResponse billingResponseCode: Int) {
if (billingResponseCode == BillingClient.BillingResponse.OK) {
println("BILLING | startConnection | RESULT OK")
} else {
println("BILLING | startConnection | RESULT: $billingResponseCode")
}
}
override fun onBillingServiceDisconnected() {
println("BILLING | onBillingServiceDisconnected | DISCONNECTED")
}
})
}
fun onLoadProductsClicked(view: …
Run Code Online (Sandbox Code Playgroud) Google Play 结算库以前不需要该android.permission.INTERNET
许可。在 6.0 版本中,我可以从合并的清单中看到,现在确实如此。
它的来源是来自名为 的清单文件transport-backend-cct:3.1.8
。谷歌搜索告诉我它是 Firebase 的一部分,但我没有使用它。也许计费库现在在底层使用 Firebase。
我想避免这种情况的原因是我的一个应用程序使用麦克风。我担心如果我在批准麦克风权限后在更新中“偷偷地”添加互联网权限,我的客户会感到震惊。
也许这可能性不大,但是否可以避免使用此权限并仍然使用 Google Play 结算服务?
我想在应用内购买Android应用程序,我经常阅读我必须从SDK Manager下载Google Play结算库
(例如http://www.techotopia.com/index.php/An_Android_Studio_Google_Play_In-app_Billing_Tutorial#Installing_the_Google_Play_Billing_Library),但我找不到它.我需要这个文件吗?如果是,我如何管理它显示给我?在developers.android webside上没有写入Google Play结算库,但如果我将他们的示例代码复制到我的项目中,我会收到很多错误.我在github上搜索了示例项目,我找到了一个,但是当我运行它时,应用程序崩溃了.有没有示例项目,我认为这可以解决我的问题?
谢谢 !!!
sdk android in-app-purchase in-app-billing play-billing-library
我需要一些关于如何建立连接和查询 sku 详细信息的信息。我正在编写教程并将应用程序内计费逻辑复制到我的应用程序中。
https://codelabs.developers.google.com/codelabs/play-billing-codelab
我按照教程进行操作,没有任何问题。问题在于如何建立连接,然后查询 sku 详细信息。
当我创建 BillingManager 类的实例时,它会尝试建立连接 -
public BillingManager(Activity activity) {
mActivity = activity;
mBillingClient = BillingClient.newBuilder(mActivity).setListener(this).build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponse) {
if (billingResponse == BillingClient.BillingResponse.OK) {
Log.i(TAG, "onBillingSetupFinished() response: " + billingResponse);
} else {
Log.w(TAG, "onBillingSetupFinished() error code: " + billingResponse);
}
}
@Override
public void onBillingServiceDisconnected() {
Log.w(TAG, "onBillingServiceDisconnected()");
}
});
}
Run Code Online (Sandbox Code Playgroud)
然后,我将进行异步查询来获取 sku 详细信息 -
private void handleManagerAndUiReady() {
// Start querying for SKUs
List<String> inAppSkus = …
Run Code Online (Sandbox Code Playgroud) 我最近实现了 Google Play Billing Library 2.0,但无法成功触发待处理交易。当我打开 Google Play 购买对话框时,我没有像“获取付款代码”按钮这样的选项,而是只有一个带有“购买”按钮的普通购买对话框
我也遵循了指导方针:
可以使用许可证测试器来测试待处理的事务。除了两张测试信用卡外,许可证测试人员还可以使用两种延迟付款方式的测试工具,这些付款方式会在几分钟后自动完成或取消。
在 Google Play 控制台中添加了“许可证测试”帐户(设置 -> 开发者帐户 -> 帐户详细信息 -> 许可证测试),但仍然不起作用。那么如何测试待处理交易购买流程呢?
android android-billing google-play-console play-billing-library
我刚刚更新了我的应用程序以使用最新的播放计费计费 (2.0) 版本,这会迫使您支持待处理的事务,否则库初始化会快速失败。在该库有关待处理事务的发行说明中,我看到:
可以使用许可证测试器来测试待处理的事务。除了两张测试信用卡外,许可证测试人员还可以使用两种新的测试工具来延迟付款,几分钟后自动完成或取消。
然而,在运行时,在有效许可证测试程序的 Google Play 底部表单中,没有待处理交易的选项,那么我们如何测试呢?这个功能在google play还没有完全实现吗?
我只能在这两个选项中选择一个:
我错过了什么 ?
android in-app-purchase in-app-billing google-play play-billing-library
我正在使用 Google Play 结算库 v 4.0。有没有办法检索设备当前登录帐户的所有采购订单(采购历史记录)?我尝试过queryPurchaseHistoryAsync(String skuType, PurchaseHistoryResponseListener listener)
billingClient 和回调内的结果onPurchaseHistoryResponse(BillingResult billingResult, List<PurchaseHistoryRecord> purchaseHistoryRecordList)
,列表 - 有 10 个元素,但不是最新的。
在调用该函数之前,计费客户端已设置并startConnection()
已被调用。
在文档中,据说 queryPurchaseHistoryAsync() “返回用户对每个 SKU 进行的最近购买,即使该购买已过期、取消或消耗。”
任何想法都会有用。:)
编辑:
queryPurchaseHistoryAsync() 返回每个 sku 的最后一次购买,因此它们是最新的,但对于每个产品而言。是否有机会像 Google Play 应用 -> 付款和订阅 -> 预算和历史记录那样获取历史记录?
android android-billing android-inapp-purchase play-billing-library
假设我有两种产品:
有没有什么方法可以从订阅升级到IAP而不强制用户手动取消订阅?
有SubscriptionUpdateParams
with setOldPurchaseToken
,但似乎只能用于从一个订阅基本计划升级到另一个订阅基本计划(例如按月升级到按年)。文档只说:
指定用户要升级或降级的 Google Play 结算购买令牌。
有没有什么好的方法来做这样的流程呢?
android in-app-billing google-play android-billing play-billing-library
我正在从 Google Play 结算版本 4.0.0 升级到版本 5.1.0。在版本 4 中SkuDetails
,有一个函数getOriginalJson()
包含我发送到后端的 json 对象。我深入研究了API,但找不到 5.1.0 版本中的官方等效项。
我可以在两个地方看到此信息可能在我们不应该访问的com.android.billingclient.api.ProductDetails
内部成员中可用,以及作为附加此信息的函数的一部分。我可能可以从 中提取我需要的内容,但我想知道是否有更好/官方的东西。JSONObject
toString()
parsedJson
toString()