Я полагаю, что используемая вами библиотека основана на Google, так что все должно быть в порядке. Вам просто нужно найти правильные методы для выполнения необходимых вам операций. Я думаю, что вы должны добавить все свои продукты вручную в базу данных Firebase, как предложено svi.data, затем вы можете получить их в упражнении, где вы показываете список продуктов, где их может получить пользователь.

инаю создавать приложение, где я могу купить предметы из него. Может быть так: где вы можете увидетьImage, Name of product, а такжеPrice, Ну, у меня уже естьSign-in with Google сделано сAuthentication Firebase и я храню это наFirebase databaseЯ хотел бы создать следующую структуру, которую @Alex Mamo рекомендует мне:

Firebase-root
    |
    --- users
    |     |
    |     --- uid1
    |          |
    |          --- //user details (name, age, address, email and so on)
    |          |
    |          --- products
    |                |
    |                --- productId1 : true
    |                |
    |                --- productId2 : true
    |
    --- products
    |     |
    |     --- productId1
    |     |     |
    |     |     --- productName: "Apples"
    |     |     |
    |     |     --- price: 11
    |           |
    |           |
    |           --- users
    |                |
    |                --- uid1: true
    |                |
    |                --- uid2: true
    |
    --- purchasedProducts
         |      |
         |      --- uid1
         |           |
         |           --- productId1: true
         |           |
         |           --- productId2: true
         |
         --- paidProducts
         |      |
         |      --- uid2
         |           |
         |           --- productId3: true
         |
         --- availableProducts
         |      |
         |      --- uid3
         |           |
         |           --- productId4: true

Выглядит хорошо, чтобы сделать легкое приложение, как у меня. Потому что сценарий так же прост, как:

Пользователь регистрируется в приложенииПользователь видит бесплатные продукты и может купить некоторые продуктыПользователь может видеть, что продукты, которые уже заплатили за них

С самого начала я хранюuid внутриusers, Что я не знаю, так это

Нужно ли создавать одинаковые продукты наGoogle Play Console вFirebase database? Я уже создал 1 продукт для тестированияGoogle Play ConsoleЯ должен создать продукт также в моем приложении (я имею в виду наFirebase database)?

Реализоватьin-app billing Я слежу за этимруководство но я нашел этоAndroid-InApp-биллинг-v3 библиотека и выглядит хорошо, хотя.

Если есть кто-то из вас, кто работал сin-app-purchased и создал предметы и знает, как получить их отGoogle Play Console Пожалуйста, не стесняйтесь поделиться демо о том, как.

РЕДАКТИРОВАТЬ

Я уже понял, как покупать вещи, которые я использовалБиблиотекадело в том что на моемLogin У меня есть страница создания базы данных FireBase. Я имею в виду, что я поставил там идентификатор пользователя и адрес электронной почты ... Должен ли я добавить все продукты там же?

 Skizo-ozᴉʞS27 нояб. 2017 г., 11:15
@Blundell, но я имею в виду, что я должен создать на своей базе данных Firebase те же продукты, что и консоль Google Play?
 Blundell27 нояб. 2017 г., 11:05
Ваш вопрос довольно сложный, и на самом деле это два вопроса в одном. 1) Я давно не делал IAP - но да, вам обычно приходится создавать все элементы в консоли Play. 2) да стоит выстрел
 Blundell27 нояб. 2017 г., 14:39
да, вам нужно, так или иначе, вам нужно получить удостоверения личности от одного к другому.

Ответы на вопрос(1)

Решение Вопроса

что у вас есть в плане структуры базы данных, чтобы, надеюсь, немного упростить.

У нас будет 2 типа сохраненных данных:

Первый Тип

Это узел данных, который вы добавите и подготовите его вручную, и мы назовем его «Продукты». В этом узле продуктов вы добавите идентификаторы продуктов, которые вы получили из консоли Google Play, а затем предоставите некоторые детали примерно так:

    Products
    |
    |--------Wood_id
    |         | 
    |         |--name : "wood"
    |          --price: "10"
    |          -- ........ 
    |
    |---------Iron_id
              | 
              |--name : "iron"
               --price: "20"
               -- ........

Хорошо, теперь давайте определим диаграмму выше:

Wood_id или Iron_id: обозначает точный идентификатор, с которым вы создали свои продукты в консоли Google Play. ((вы вводите его вручную в базу данных вместе с его деталями))

name: обозначает название элемента, которое будет отображаться в представлении переработчика ((также вы вводите все эти детали вручную)).

цена: баллы или что вы решите.

Так что это вещи, которые вы вводите вручную в дереве базы данных в консоли Firebase.

при заполнении в представлении переработчика это будет выглядеть так

        |---------------|
        |     wood      |
        ------------------
        |     iron      |
        |               |
        -----------------

Вы можете достичь этого с помощью пользовательского интерфейса Firebase ((который облегчит вам поиск узлов и просмотр их в RecyclerView)).

хорошо, до сих пор мы можем показывать продукты пользователя и просматривать их в списке продуктов ((и каждый элемент имеет свой идентификатор и идентификатор, который равен идентификатору на консоли Google Play))

Второй тип

Тип данных, которые мы добавим из приложения, которые являются узлом (Пользователи) и узлом (Приобретенные товары).

Узел пользователей такой

     Users
     |
     |--------user1
     |         | 
     |         |--name : "..."
     |          --e-mail: "..."
     |          -- ........ 
     |
     |---------user2
               | 
               |--name : "..."
                --e-mail: "..."
                -- ........

Хорошо, это узел, который вы можете добавить, и обычно он создается после того, как пользователь создан ((Регистрация)), но вы, похоже, достигли этого с помощью входа в Google.

Так что этот узел не очень важен, но вы можете добавить его, если хотите.

А теперь посмотри, что мы будем делать. Мы позволим пользователю щелкнуть по элементу, а затем проверим, существует ли этот элемент в его списке, в противном случае мы покажем ему намерение оплаты. После того, как он / она купит предмет, мы добавим его в узел (Купленные предметы) следующим образом:

             Purchased items
             |
             |--------user1
             |         | 
             |         |--Wood_id : "any_value"
             |          --Iron_id:  "any_value"
             |         
             |
             |---------user2
                       | 
                       |--Iron_id : "any_value"

Вышеуказанное дерево указывает, что пользователь1 купил (дерево и железо), а пользователь 2 купил только (железо).

когда user2, например, нажимает на wood, мы берем идентификатор продукта, связанный с wood, который является (Wood_id), и мы запускаем прослушиватель события value, используя firebase, и мы проверим, есть ли у user2 (Wood_id) или нет, в нашем случае user2 не имеет дерева Так что здесь вы можете использовать, если вы хотите, чтобы указанная вами библиотека для выставления счетов и передать (Wood_id), чтобы купить из консоли Google Play, и в слушателях этой библиотеки, которую вы упомянули, вы проверяете на успешность оплаты (и здесь вы добавляете для user2 Wood_id в узле «Купленные товары», чтобы в следующий раз пользователь2 щелкнул по firebase, чтобы запустить слушателя и больше не показывать платеж).

Вот как вы бы поступили, используя библиотеку, которую хотите использовать.

ОБНОВИТЬ

Как получить в утилизаторе просмотр базы данных (Продукты).

сначала добавьте новейшую базу данных Firebase и Firebase UI

   compile 'com.google.firebase: firebase-database: 11.4.2'
   compile 'com.firebaseui: firebase-ui-database: 3.1.0'

после этого вам нужно создать класс Java, вызвать его (ProductsClass) внутри него и добавить эти:

    public class ProductsClass{

     //these should be the same name as keys in your database
     public String name;
     public String product_id;
     public String state;

      //empty constructor
     public  ProductsClass(){
     }

     public  ProductsClass(String name, String product_id, String state){
       this.name=name; 
       this.product_id=product_id;
       this.state=state;


     }

      public String getName(){
         return name;

         }

        public void setName(){
         this.name=name;

         }

         public String getProduct_id(){
         return product_id;

         }

        public void setProduct_id(){
         this.product_id=product_id;

         }



         public String getState(){
         return state;

         }

         public void setState(){
         this.sate=state;

         }



    } 

теперь внутри вашего (продукты деятельности)

         private Recyclerview products_recycler;
         private FirebaseAuth mauth;
         private DatabaseReference products_ref;
         private String currentuser;

         //in on create

            products_recycler=find it by id......
            mauth=FirebaseAuth.getInstance();
            currentuser=mauth.getCurrentUser().getUid();

            products_ref=FirebaseDatabase.getInstance().getReference().child("products");


        //manger
         products_recycler.setHasFixedSize(true);
         products_recycler.setLayoutManager(new LinearLayoutManager(this));


           //in onstart

          FirebaseRecyclerOptions< ProductsClass > options =
            new FirebaseRecyclerOptions.Builder< ProductsClass >()
                    .setQuery(products_ref, ProductsClass.class)
                    .build();

           FirebaseRecyclerAdapter adapter = new   FirebaseRecyclerAdapter< ProductsClass, ProductsHolder>(options) {
@Override
public ProductsHolder onCreateViewHolder(ViewGroup parent, int viewType) {

    //inflate the single recycler view layout(item)

    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.productslayout, parent, false);

    return new ProductsHolder(view);
}

    @Override
    protected void onBindViewHolder(ProductsHolder holder, int position, ProductsClass model) {

      //here you set stuff in items , get data, ....

      //model is your class model (you get data from it) 





     }
   };


    // now  set adapter
       adapter.startListening();
       products_recycler.setAdapter(adapter);




      //make a static class called ProductsHolder in the same activity

      public static class ProductsHolder extends RecyclerView.ViewHolder{


        View view;

         public ProductsHolder(View itemView){

             view= itemView;
          }

          //what ever methods you need to add

       }

примечание: R.layout.productslayout - это пользовательский макет для каждого элемента в представлении переработчика.

таким образом, вы получаете в любой деятельности любой узел, который вы хотите.

ссылка ссылка:эта ссылка

 svi.data30 нояб. 2017 г., 14:18
не забывайте, что смысл использования базы данных Firebase - определить, есть ли у пользователя идентификатор продукта или нет.
 Skizo-ozᴉʞS30 нояб. 2017 г., 14:36
Я делаю, так что ... Я использую только библиотеку, чтобы купить, другой материал - это firebase, который должен действовать, верно? Я имею в виду, что пользователь может платить ТОЛЬКО, если идентификатор не указан в идентификаторе Firebase, иначе не появится возможность оплаты, верно?
 svi.data30 нояб. 2017 г., 14:16
вам не нужно использовать метод, если пользователь заплатил (слушатель firebase поможет вам обнаружить это). Библиотека поможет вам только с покупкой предметов. Надеюсь, вы понимаете мою точку зрения.
 Skizo-ozᴉʞS30 нояб. 2017 г., 00:59
Это идеальный ответ @ svi.data, спасибо большое, чувак !, просто чтобы уточнить ... У меня есть в этой библиотеке методы, чтобы проверить, заплатил ли пользователь за что-то, эти методы мне не нужны? Например, посмотрите на этокод посмотри наonPurchaseHistoryRestored() метод, это код, который мне не нужен? Мне интересно, хранится ли он на моей базе данных Firebase? Я использую эту библиотеку только для покупки, если предмет не находится на моей базе данных Firebase?
 svi.data30 нояб. 2017 г., 14:37
да вот что делать, просто и прямо.

Ваш ответ на вопрос