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.
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.
Java:
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();
}
}