web-dev-qa-db-fra.com

BillingFlowParams.Builder setSkuDetails pour tester les réponses de facturation Google Play statiques

Je teste l'achat via l'application à l'aide des trois ID de produit réservés pour tester la facturation statique de Google Play réponses :

  • Android.test.purchased
  • Android.test.canceled
  • Android.test.item_unavailable

Cependant, setSku et setType semblent être obsolètes dans le BillingFlowParams.Builderclasse . Au lieu de cela, nous devrions utiliser setSkuDetails(SkuDetails).

Comment dois-je changer le BillingFlowParams dans l'exemple de code pour utiliser SkuDetails pour les ID de produit de test?

BillingFlowParams flowParams = BillingFlowParams.newBuilder()
     .setSku(skuId)
     .setType(SkuType.INAPP) 
     .build();
int responseCode = mBillingClient.launchBillingFlow(flowParams);
11
Ping

vous devriez obtenir SkuDetails de BillingClient.querySkuDetailsAsync, l'exemple de code peut ressembler à ceci:

private BillingClient mBillingClient;

// ....

mBillingClient = BillingClient.newBuilder(this).setListener(new PurchasesUpdatedListener() {
    @Override
    public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
        if (responseCode == BillingClient.BillingResponse.OK
                && purchases != null) {

            // do something you want

        } else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
        } else {
        }
    }
}).build();


mBillingClient.startConnection(new BillingClientStateListener() {
    @Override
    public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {        

if (billingResponseCode == BillingClient.BillingResponse.OK) {
        // The billing client is ready. You can query purchases here.

List<String> skuList = new ArrayList<>();
        skuList.add("Android.test.purchased");

SkuDetailsParams skuDetailsParams = SkuDetailsParams.newBuilder()
                    .setSkusList(skuList).setType(BillingClient.SkuType.INAPP).build();
mBillingClient.querySkuDetailsAsync(skuDetailsParams,
                    new SkuDetailsResponseListener() {
 @Override
  public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {

  BillingFlowParams flowParams = BillingFlowParams.newBuilder()
                                    .setSkuDetails(skuDetailsList.get(0))
                                    .build();
  int billingResponseCode = billingClient.launchBillingFlow(SkuActivity.this, flowParams);
  if (billingResponseCode == BillingClient.BillingResponse.OK) {
                                // do something you want
                            }
                        }
                    });
                 }
               }


@Override
    public void onBillingServiceDisconnected() {
        // Try to restart the connection on the next request to
        // Google Play by calling the startConnection() method.
    }
});

Vous pouvez également consulter https://developer.Android.com/google/play/billing/billing_library_overview

11
Renkuei