Проверьте, действительно ли покупка действительна, тогда Вознаграждение - PullRequest
1 голос
/ 10 марта 2020

Я реализовал покупку приложения в своем приложении. Но это выгодно пользователю без покупки. Может кто-нибудь помочь мне решить проблему? Я использовал ключ base64, чтобы убедиться, что покупка действительна или по-прежнему не получает эту ошибку {Пользователь получает вознаграждение, но в моей консоли нет истории заказов.}. Это очень сложно, поэтому я спрашиваю, поможет ли какой-нибудь эксперт мне решить эту проблему.

Здесь я потребляю покупки и награждаю пользователя.

@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
    if (responseCode == BillingClient.BillingResponse.OK
            && purchases != null) {
        for (Purchase purchase : purchases) {

            if (verifyValidSignature(purchase.getOriginalJson(), purchase.getSignature())) {
               handlePurchase(purchase);
                consumePurchase(purchase);
            }
        }
    }
}

boolean thatThingHappened = false;
private void handlePurchase(Purchase purchase) {

    switch (purchase.getSku()) {
        case ITEM_S: {
            if (purchase.getPurchaseToken()!=null){    

                if (!thatThingHappened){
                    thatThingHappened = true;
                    //reward the user

                    /*incrementCoins(2000); */

                    //In database i am getting this and it has been more than 15 without any purchase
                    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
                    rootRef.child("Purchase").push().child(Uid).setValue(2000);
                }
            }
            break;
        }
    }
}

private boolean verifyValidSignature(String signedData, String signature) {
    return Security.verifyPurchase(getString(R.string.base64Key), signedData, signature);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...