# In App Purchase



## wer112 (29. Mrz 2021)

Ich habe ein Fragment mit mehreren Buttons, wo man sachen kaufen kann. Ich habe nach mehreren Suchen, ein aktuelles Video gefunden, wo ich mein Schritt näher kam.
Leider habe ich irgendwo ein Fehler gemacht(musste etwas abweichen, da er es mit Abo gemacht hatte und ich will ja, das es immer wieder gekauft werden kann.)
wenn ich jetzt auf einen Button drücke kommt das:

drive.google.com/folderview?id=1KgIBNCm5soil_GrAsS2SIdfFDeG-MPq9/1.jpg

Und wenn ich die Strings falsch eingebe kommt(2.jpg)

Ich habe Sogar die Product Id persönlich eingegeben...

Es wäre sehr wichtig, dass es richtig fünktioniert. Für jede Hilfe,nbin ich sehr dankbar!

Für andere wäre es ja ebenfalls sehr hilfreich...



Damit ihr mir helfen könnt bzw. Korregieren könnt, schicke ich euch den Code.



```
package de...............;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;


import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.EventListener;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.FirebaseFirestoreException;




public class fragment_shop  extends Fragment implements View.OnClickListener, BillingProcessor.IBillingHandler {

    TextView coinText;


    Button  zehn_coins, fünfundzwanzig_coins, fünfzig_coins, einhundert_coins, eintausend_coins, fünftausend_coins;

    private BillingProcessor billingProcessor;
    private TransactionDetails subscriptionTransactionDetails;



    FirebaseAuth fAuth;
    FirebaseFirestore fStore;

    String userID;
    String product_id = "";

    private int coins = 0;






    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    /* --------------------------------- Hier kommt alles rein, was normalerweise in die onCreat Methode kommt -------------------------------- */
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

        View fragmentlayout_shop = inflater.inflate(R.layout.shop_layout, null);
        coinText = (TextView)fragmentlayout_shop.findViewById(R.id.textView7);

        LadenCoins();


        zehn_coins = fragmentlayout_shop.findViewById(R.id.button2);
        zehn_coins.setOnClickListener(this);
        fünfundzwanzig_coins = fragmentlayout_shop.findViewById(R.id.button3);
        fünfundzwanzig_coins.setOnClickListener(this);
        fünfzig_coins = fragmentlayout_shop.findViewById(R.id.button4);
        fünfzig_coins.setOnClickListener(this);

        einhundert_coins = fragmentlayout_shop.findViewById(R.id.button6);
        einhundert_coins.setOnClickListener(this);
        eintausend_coins = fragmentlayout_shop.findViewById(R.id.button7);
        eintausend_coins.setOnClickListener(this);
        fünftausend_coins = fragmentlayout_shop.findViewById(R.id.button8);
        fünftausend_coins.setOnClickListener(this);



        billingProcessor = new BillingProcessor(getActivity(), getResources().getString(R.string.play_console_license), this);
        billingProcessor.initialize();

        return fragmentlayout_shop;
    }

    private boolean hasPurchase(){
        if (subscriptionTransactionDetails != null){
            return  subscriptionTransactionDetails.purchaseInfo != null;
        }
        else{
            return  false;
        }
    }



    @Override
    public void onClick(View v) {


        if (v.equals(zehn_coins)){
            product_id = "product_zehn_coins";











        if (billingProcessor.isOneTimePurchaseSupported()) {

            billingProcessor.purchase(getActivity(), product_id);


        }else{
            Toast.makeText(getActivity(), "onBillingInitialized: purchased update is not supported", Toast.LENGTH_SHORT).show();
        }

        if (hasPurchase()){
            coins += 10;
        }


        }else if (v.equals(fünfundzwanzig_coins)){






        }else if (v.equals(fünfzig_coins)){




        }else if (v.equals(einhundert_coins)){







        }else if (v.equals(eintausend_coins)){



        }else if (v.equals(fünftausend_coins)){





        }

    }








    public void onBackPressed() {
        Log.e("######","Du kommst hier net raus");
    }

    private void LadenCoins() {


        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        userID = fAuth.getCurrentUser().getUid();

        DocumentReference documentReference = fStore.collection("Guthaben").document(userID);

        documentReference.addSnapshotListener(getActivity(), new EventListener<DocumentSnapshot>() {
            @Override
            public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException error) {
                coins = value.getLong("Coins").intValue();
                coinText.setText("" + coins);


            }
        });



    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {


        super.onActivityCreated(savedInstanceState);
    }


    @Override
    public void onBillingInitialized() {

        subscriptionTransactionDetails =  billingProcessor.getPurchaseTransactionDetails(product_id);


    }

    @Override
    public void onProductPurchased(String productId, TransactionDetails details) {

    }

    @Override
    public void onPurchaseHistoryRestored() {

    }

    @Override
    public void onBillingError(int errorCode, Throwable error) {

    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (!billingProcessor.handleActivityResult(requestCode, resultCode, data)){
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    @Override
    public void onDestroy() {
        if (billingProcessor != null){
            billingProcessor.release();
        }
        super.onDestroy();
    }
}
```


----------



## krgewb (29. Mrz 2021)

Der Drive-Link geht nicht.


----------



## wer112 (29. Mrz 2021)

krgewb hat gesagt.:


> Der Drive-Link geht nicht.








						In App Purchase – Google Drive
					






					drive.google.com
				




Könnte Sein, das ich bei anschreiben ein Fehler geschrieben habe. Jetzt müsste er Stimmen


----------

