title: Launch billing flow not being shown
body: <p>Having trouble with implementation of in-app billing, specifically with testing the Billing Flow Launch. </p>
  
  <ul>
  <li>It successfully connects to the billing service.  </li>
  <li>It worked previously, but only for the first time, then I had
  to manually remove the purchase from Order Management.</li>
  <li>I have also noticed that onPurchasesUpdated is not being invoked. </li>
  <li>Running an internal
  test on an updated and compatible device.   </li>
  </ul>
  
  <h2>Query product details</h2>
  
  <pre><code>public void queryProducts() {
          List&lt;String&gt; skuList = new ArrayList&lt;&gt;();
          skuList.add(COINS_5);
          skuList.add(COINS_15);
          SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
          params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
  
          billingClient.querySkuDetailsAsync(params.build(),
                  new SkuDetailsResponseListener() {
                      @Override
                      public void onSkuDetailsResponse(BillingResult billingResult, List&lt;SkuDetails&gt; skuDetailsList) {
                          if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK &amp;&amp; skuDetailsList != null) {
                              for (SkuDetails skuDetails : skuDetailsList) {
                                  String sku = skuDetails.getSku();
                                  String price = skuDetails.getPrice();
  
                                  flowParams = BillingFlowParams.newBuilder().setSkuDetails(skuDetails).build();
  
                                  if ("coins_5".equals(sku)) {
                                      coins5Price = price;
                                  } else if ("coins_15".equals(sku)) {
                                      coins15Price = price;
                                  }
                              }
                          }
                      }
                  });
  }
  </code></pre>
  
  <h2>onPurchasedUpdated</h2>
  
  <pre><code>@Override
  public void onPurchasesUpdated(BillingResult billingResult, @Nullable List&lt;Purchase&gt; purchases) {
          if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK &amp;&amp; purchases != null) {
              for (Purchase purchase : purchases) {
                  handlePurchase(purchase);
              }
          } 
          else if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.USER_CANCELED) {
          }
  
          else {
          }
  
      }
  
  </code></pre>
  
  <h2>Acknowledging purchase (don't think this influences the launch of billing flow)</h2>
  
  <pre><code>public void handlePurchase(Purchase purchase) {
          Toast.makeText(CoinsActivity.this, "Handle purchase" , Toast.LENGTH_LONG).show();
          if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
              // Grant entitlement to the user.
  
              // Acknowledge the purchase if it hasn't already been acknowledged.
              if (!purchase.isAcknowledged()) {
                  AcknowledgePurchaseParams acknowledgePurchaseParams =
                          AcknowledgePurchaseParams.newBuilder()
                                  .setPurchaseToken(purchase.getPurchaseToken())
                                  .build();
                  client.acknowledgePurchase(acknowledgePurchaseParams, acknowledgePurchaseResponseListener);
  
              }
          }
      }
  </code></pre>
  
  <p>Any tips would be appreciated, as I've been stuck on this for a while. </p>