12
votes

Dans l'application facturant getprice () Android

J'ai mis en œuvre avec succès dans l'application Facturation dans mon application qui fonctionne tous bien. J'essaie maintenant de récupérer le prix des articles (définis dans la console de développeur) afin que je puisse refléter ces prix au sein de mon application sans valeurs codantes difficiles.

Ce code ne relève évidemment que les prix des articles déjà achetés via l'inventaire Ce que je ne cherche pas ce que je cherche: xxx

J'ai regardé un DOCS Querifier les articles disponibles à l'achat, mais en difficulté pour le comprendre. Je pensais que la classe d'assistance aurait mis en place une sorte de méthode des prix d'obtenir des prix.

Alors, ma question: Quelqu'un peut-il me dire dans la bonne direction?


0 commentaires

3 Réponses :


5
votes

OK, j'ai trouvé la solution. J'ai déchiffré les documents du développeur et il semble qu'il y a eu des erreurs dedans.

Ceci est ma solution créée dans IABHELPER: P>

public String getPricesDev(String packageName) throws RemoteException, JSONException{


        ArrayList<String> skuList = new ArrayList<String>();
        skuList.add("full.discount.fetch");
        skuList.add("gas");
    Bundle querySkus = new Bundle();
    querySkus.putStringArrayList("ITEM_ID_LIST", skuList);

    Bundle skuDetails = mService.getSkuDetails(3,packageName, "inapp", querySkus);


    int response = skuDetails.getInt("RESPONSE_CODE");
    if (response == 0) {
       ArrayList<String> responseList 
          = skuDetails.getStringArrayList("DETAILS_LIST");

       for (String thisResponse : responseList) {
          JSONObject object = new JSONObject(thisResponse);
          String sku = object.getString("productId");
          String price = object.getString("price");

          if(sku.contains("full.discount.fetch")) return price;

       }
    } 
    return "Not found";


}


0 commentaires

9
votes

Si vous utilisez la mise en œuvre proposée dans l'échantillon "TrivialDrive" par Google, vous pouvez récupérer les informations de tous les skus (même s'ils ne sont pas achetés) en transmettant les paramètres "Détails" et "Moreskus" dans le méthode qui interroge l'inventaire

/**
 * Queries the inventory. This will query all owned items from the server, as well as
 * information on additional skus, if specified. This method may block or take long to execute.
 * Do not call from a UI thread. For that, use the non-blocking version {@link #refreshInventoryAsync}.
 *
 * @param querySkuDetails if true, SKU details (price, description, etc) will be queried as well
 *     as purchase information.
 * @param moreItemSkus additional PRODUCT skus to query information on, regardless of ownership.
 *     Ignored if null or if querySkuDetails is false.
 * @param moreSubsSkus additional SUBSCRIPTIONS skus to query information on, regardless of ownership.
 *     Ignored if null or if querySkuDetails is false.
 * @throws IabException if a problem occurs while refreshing the inventory.
 */
public Inventory queryInventory(boolean querySkuDetails, List<String> moreItemSkus,
                                    List<String> moreSubsSkus) throws IabException {


0 commentaires

1
votes

Utilisation de l'API de facturation

public void getPrices(){


        List<String> skuList = new ArrayList<> ();
        skuList.add("id_one"); //These are the product ids in your google console
        skuList.add("id_two");
        skuList.add("id_three");
        SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
        params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);
        mBillingClient.querySkuDetailsAsync(params.build(),
                new SkuDetailsResponseListener() {
                    @Override
                    public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {

                        for (SkuDetails details:
                             skuDetailsList) {

                           String item = details.getSku();
                           String price = details.getPrice();
                           String description = details.getDescription();
                           String currencyCode = details.getPriceCurrencyCode();
                           String title = details.getTitle();

                            Toast.makeText(InAppBillingActivity.this, "Finished", Toast.LENGTH_SHORT).show();

                           Log.d("hererereeer- item     ", item);
                           Log.d("hererereeer- price     ", price);
                           Log.d("hererereeer- descr     ", description);
                           Log.d("hererereeer- code     ", currencyCode);
                           Log.d("hererereeer- title     ", title);

                        }

                    }
                });
    }


0 commentaires