как получить срок действия подписки в inapp v3 android
Привет у меня есть я реализовал iNAPP биллинга V3 для одного года подписка на элемент с помощью андроид-встроенная-выставление счетов-В3. Я хочу показать оставшиеся дни в своем приложении. Я звоню getSubscriptionTransactionDetails
, чтобы получить детали транзакции для продукта, но он всегда возвращает null
. вот мой код.
private BillingProcessor startInappCheck(){
bp = new BillingProcessor(mContext, BASE64ENCODEDPUBLICKEY, new BillingProcessor.IBillingHandler() {
@Override
public void onProductPurchased(String productId, TransactionDetails details) {
LogUtils.e(TAG, "onProductPurchased :" +productId);
// showToast("onProductPurchased: " + productId);
}
@Override
public void onBillingError(int errorCode, Throwable error) {
LogUtils.e(TAG, "onBillingError :" +errorCode);
}
@Override
public void onBillingInitialized() {
// showToast("onBillingInitialized");
readyToPurchase = true;
try{
SkuDetails subs = bp.getSubscriptionListingDetails(SUBSCRIPTION_ID);
LogUtils.d(TAG, "Owned Subscription: " + subs.toString());
TransactionDetails tr = bp.getSubscriptionTransactionDetails(SUBSCRIPTION_ID);
LogUtils.d(TAG, "Owned Subscription: " + tr.toString());
}catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void onPurchaseHistoryRestored() {
// showToast("onPurchaseHistoryRestored");
for(String sku : bp.listOwnedSubscriptions()){
LogUtils.d(TAG, "Owned Subscription: " + sku);
}
// showToast("onPurchaseHistoryRestored");
}
});
return bp;
}
Я вызвал этот метод из onCreate
.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if (!bp.handleActivityResult(requestCode, resultCode, data))
super.onActivityResult(requestCode, resultCode, data);
}
Моя кнопка элемента подписки реализована в fragment
. Еще одна проблема, которую я обнаружил, что после успешной подписки onProductPurchased
не вызывается, но я реализовали логику в onResume
для обновления пользовательского интерфейса, если bp.isSubscribed(SUBSCRIPTION_ID)
возвращает true
. Пожалуйста, скажите мне, как получить дату начала подписки и срок ее действия.
2 ответа:
Я хочу дать ответ на мой собственный вопрос, чтобы, если кто-то ищет то же самое, мог найти решение. После большого количества google я не нашел точного решения, которое искал, поэтому я создаю метод в
BillingProcessor
классе вiabv3 library
проекте, который возвращаетBundle
с деталями покупок, в которых я получаю дату покупки. Теперь я могу найти срок годности с этим. Метод выглядит следующим образомpublic Bundle getPurchases(){ if (!isInitialized()) return null; try{ return billingService.getPurchases(Constants.GOOGLE_API_VERSION, contextPackageName, Constants.PRODUCT_TYPE_SUBSCRIPTION, null); }catch (Exception e) { e.printStackTrace(); } return null; }
Я использовал этот код для получения сведений о покупке в библиотеке процессоров биллинга.
TransactionDetails transactionDetails = bp.getSubscriptionTransactionDetails(channelModel.getAndroidProductId()); Log.d(TAG, "initializePaymentSetup: " + transactionDetails.toString()); Log.d(TAG, "initializePaymentSetup: " + transactionDetails.purchaseInfo.toString()); transactionDetails.purchaseInfo.purchaseData// this will return the purchase date