android - 计费流程未启动

标签 android in-app-billing android-billing billingclient

我已经在这里待了一个星期了。我无法启动计费流程,请帮忙!谢谢。我没有收到任何错误。据我所知,它永远不会触发“public void onSkuDetailsResponse”方法。

我曾尝试将我的整个应用剥离到仅包含计费部分以使其正常工作,但仍然没有成功。

private void setupBillingClient() {
    billingClient = BillingClient.newBuilder(this).setListener(this).enablePendingPurchases().setListener(this).build(); //billingClient = BillingClient.newBuilder(this).enablePendingPurchases().build(); //
    billingClient.startConnection(new BillingClientStateListener() {
        @Override
        public void onBillingSetupFinished(@NonNull BillingResult billingResult) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                Toast.makeText(getApplication(), "success to connect billing", Toast.LENGTH_SHORT).show();
                loadAllSKUs();
            }
        }

        @Override
        public void onBillingServiceDisconnected() {

        }
    });
}

private void loadAllSKUs() {
    final List<String> skuList = new ArrayList<>();
    skuList.add("GunVault Donation"); //from play store...do this for multiple items if have them
    //  SkuDetailsParams params = SkuDetailsParams.newBuilder()
    //           .setSkusList(skuList)
    //           .setType(BillingClient.SkuType.INAPP)
    //          .build();
    SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
    params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
    billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {     //     billingClient.querySkuDetailsAsync(params, new SkuDetailsResponseListener()
        @Override
        public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> skuDetailsList) { //     if (skuDetailsList != null && billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
            if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
                for (Object skuDetailsObject : skuDetailsList) {   //     for (final SkuDetails skuDetails : skuDetailsList) {
                    final SkuDetails skuDetails = (SkuDetails) skuDetailsObject;

                    String sku = skuDetails.getSku();
                    String price = skuDetails.getPrice();
                    String gunVaultDonation;

                    Toast.makeText(About.this, skuDetails.getSku() + " " + sku, Toast.LENGTH_SHORT).show();

                    final BillingFlowParams params = BillingFlowParams.newBuilder()
                            .setSkuDetails(skuDetails)
                            .build();

                    btnDonate.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Toast.makeText(getApplication(), "Donate clicked", Toast.LENGTH_SHORT).show();
                            BillingFlowParams billingFlowParams = BillingFlowParams
                                    .newBuilder()
                                    .setSkuDetails(skuDetails)
                                    .build();
                            billingClient.launchBillingFlow(About.this, billingFlowParams);
                        }
                    });




                }
            } else if (billingResult.getResponseCode() == 
               BillingClient.BillingResponseCode.ERROR) {
                Toast.makeText(About.this, "Error", Toast.LENGTH_SHORT).show();
            }
        }

    });

如果有其他需要,请告诉我

最佳答案

终于明白了。我使用的是应用内商品的商品名称而不是商品 ID。

关于android - 计费流程未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67592211/

相关文章:

Android 4.4 BLE指示数据大于20字节

android - 在android中将值设置为textview

node.js - Google Play 应用内结算购买签名的服务器端验证失败

android - 与应用程序安装关联的帐户信息

Android IABv3 getSkuDetails 不返回 Sku 详​​细信息

android - 在 ChipGroup (Android) 中添加垂直分隔线

android - 使用 Intent 将对象从一个 Activity 传递到另一个 Activity 有什么问题

android - inventory.getPurchase() 总是返回 null,尽管已经购买

android - Android帐单库V3

Android 应用内结算总是回复错误 3 : BILLING_UNAVAILABLE