Android подтверждение покупки
Как правильно реализовать подтверждение покупки (отключение рекламы в приложении).
Помогите, пожалуйста, разобраться, что и куда вставить.
Вот мой код.
private void mBillingClient() {
mBillingClient = BillingClient.newBuilder(this)
.enablePendingPurchases()
.setListener(new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(BillingResult billingResult, @Nullable List<Purchase> list) {
int responseCode = billingResult.getResponseCode();
if (responseCode == BillingClient.BillingResponseCode.OK && list != null) {
//сюда мы попадем когда будет осуществлена покупка
payDisableAds();
}
}
})
.build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(BillingResult billingResult) {
if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
// The BillingClient is ready. You can query purchases here.
//здесь мы можем запросить информацию о товарах и покупках
querySkuDetails(); // запрос о товарах в консоли
List<Purchase> purchasesList = queryPurchases(); // запрос о покупках пользовател
//если товар уже куплен, предоставить его пользователю
if (purchasesList != null) {
if (purchasesList.size() == 1) {
String purchaseId = purchasesList.get(0).getSku();
if (TextUtils.equals(skuDisableAds, purchaseId)) {
payDisableAds();
Log.i(LOG_TAG, "пользователь купил товар");
} else {
SharedPreferences.Editor sharedPreferencesEditor = PreferenceManager
.getDefaultSharedPreferences(MainActivity.this).edit();
sharedPreferencesEditor.putBoolean(DISABLE_ADS, false).apply();
payDisableAds = false;
}
}
}
}
}
@Override
public void onBillingServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
//сюда мы попадем если что-то пойдет не так
}
});
}
private void querySkuDetails() {
List<String> skuList = new ArrayList<>();
skuList.add(skuDisableAds);
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.INAPP);//INAPP тип одноразовая покупка
mBillingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(BillingResult billingResult,
List<SkuDetails> skuDetailsList) {
int responseCode = billingResult.getResponseCode();
if (responseCode == BillingClient.BillingResponseCode.OK && skuDetailsList != null) {
for (SkuDetails skuDetails : skuDetailsList) {
mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
}
}
}
});
}
private List<Purchase> queryPurchases() {
Purchase.PurchasesResult purchasesResult = mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
return purchasesResult.getPurchasesList();
}
// диологовое окно покупки товара
private void launchBilling(String skuId) {
BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
.setSkuDetails(mSkuDetailsMap.get(skuId))
.build();
mBillingClient.launchBillingFlow(this, billingFlowParams);
}
// действия после покупки или наличия товара
private void payDisableAds() {
SharedPreferences.Editor sharedPreferencesEditor = PreferenceManager
.getDefaultSharedPreferences(this).edit();
sharedPreferencesEditor.putBoolean(DISABLE_ADS, true).apply();
payDisableAds = true;
buttonDisableAds.setVisibility(View.GONE);
backgroundButtonDisableAds.setVisibility(View.GONE);
}
public void onClickPayDisableAds(View view) {
launchBilling(skuDisableAds);
}