Я реализовал подписку на приложение в моем приложении для Android.Но я не могу проверить в режиме отладки.Нам всегда нужно генерировать подписанный APK и проверять следующий процесс - может кто-нибудь подсказать, как справиться с этим сценарием.
После установки подписанного APK, когда я открываю свое приложение, оно показывает мою подпискупродукт и игра с 3-дневной пробной версией и одной активной подпискойНа следующий день, когда я открываю приложение, оно снова показывает то же сообщение, а количество пробных версий по-прежнему составляет 3 дня.
Когда я нажал кнопку подписки, он был обработан до варианта оплаты.После завершения процесса с моего аккаунта была снята ежемесячная абонентская плата, и был показан способ оплаты.- но я все еще был в пробном режиме, тогда почему он сократил сумму.Он должен быть заряжен после 3 дней
Может кто-нибудь, пожалуйста, предложите ... найти мой код ниже
/*In-App BillingConfig*/
private void initBillingConfig() {
try {
mBillingClient = BillingClient.newBuilder(context).setListener(new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(int responseCode, @Nullable List<Purchase> purchases) {
try {
if (responseCode == BillingClient.BillingResponse.OK && purchases != null) {
for (Purchase purchase : purchases) {
if (purchase.getSku().equalsIgnoreCase(MONTHLY_2USD)) {
showToast("You have subscribed our product(" + MONTHLY_2USD + ") for next 1 month");
appendLog("You have subscribed our product(" + MONTHLY_2USD + ") for next 1 month");
}
}
} else if (responseCode == BillingClient.BillingResponse.ITEM_ALREADY_OWNED) {
showToast("onPurchasesUpdated: Item already purchased");
appendLog("onPurchasesUpdated: Item already purchased");
} else if (responseCode == BillingClient.BillingResponse.USER_CANCELED) {
showToast("You have canceled our subscription mode.");
appendLog("You have canceled our subscription mode.");
} else if (responseCode == BillingClient.BillingResponse.DEVELOPER_ERROR) {
showToast("BillingClient.BillingResponse.DEVELOPER_ERROR");
appendLog("BillingClient.BillingResponse.DEVELOPER_ERROR");
overridePendingTransition(0,0);
finish();
}
} catch (Exception e) {
e.printStackTrace();
showToast("onPurchasesUpdated: " + e.getMessage());
appendLog("onPurchasesUpdated: " + e.getMessage());
}
}
}).build();
mBillingClient.startConnection(new BillingClientStateListener() {
@Override
public void onBillingSetupFinished(@BillingClient.BillingResponse int billingResponseCode) {
try {
if (billingResponseCode == BillingClient.BillingResponse.OK) {
// The billing client is ready. You can query purchases here.
checkBillingSKU();
} else if (billingResponseCode == BillingClient.BillingResponse.ITEM_ALREADY_OWNED) {
appendLog("onBillingSetupFinished: Item already purchased");
}
} catch (Exception e) {
e.printStackTrace();
showToast("onBillingSetupFinished: " + e.getMessage());
appendLog("onBillingSetupFinished: " + e.getMessage());
}
}
@Override
public void onBillingServiceDisconnected() {
// Try to restart the connection on the next request to
// Google Play by calling the startConnection() method.
try {
mBillingClient.startConnection(this);
} catch (Exception e) {
e.printStackTrace();
showToast("onBillingServiceDisconnected: " + e.getMessage());
appendLog("onBillingServiceDisconnected: " + e.getMessage());
}
}
});
} catch (Exception e) {
e.printStackTrace();
showToast("initBillingConfig: " + e.getMessage());
appendLog("initBillingConfig: " + e.getMessage());
}
}
private void showToast(String msg) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
});
}
private void checkBillingSKU() {
try {
List skuList = new ArrayList<>();
skuList.add(MONTHLY_2USD);
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList).setType(BillingClient.SkuType.SUBS);
mBillingClient.querySkuDetailsAsync(params.build(),
new SkuDetailsResponseListener() {
@Override
public void onSkuDetailsResponse(int responseCode, List<SkuDetails> skuDetailsList) {
// Process the result.
try {
if (responseCode == BillingClient.BillingResponse.OK && skuDetailsList != null) {
for (SkuDetails skuDetails : skuDetailsList) {
String sku = skuDetails.getSku();
String price = skuDetails.getPrice();
showToast(skuDetails.toString());
if (MONTHLY_2USD.equals(sku)) {
//mPremiumUpgradePrice = price;
purchaseProduct();
}
}
}
} catch (Exception e) {
e.printStackTrace();
showToast("onSkuDetailsResponse: " + e.getMessage());
appendLog("onSkuDetailsResponse: " + e.getMessage());
}
}
});
} catch (Exception e) {
e.printStackTrace();
showToast("checkBillingSKU: " + e.getMessage());
appendLog("checkBillingSKU: " + e.getMessage());
}
}
private void purchaseProduct() {
try {
BillingFlowParams flowParams = BillingFlowParams.newBuilder()
.setSku(MONTHLY_2USD)
.setType(BillingClient.SkuType.SUBS) // SkuType.SUB for subscription
.build();
int responseCode = mBillingClient.launchBillingFlow(DashBoard.this, flowParams);
showToast("BillingFlowParams: " + responseCode);
appendLog("BillingFlowParams: " + responseCode);
} catch (Exception e) {
e.printStackTrace();
showToast("purchaseProduct: " + e.getMessage());
appendLog("purchaseProduct: " + e.getMessage());
}
}