Skip to main content
Solved

Basicc paywall showing, not the designed v2 paywall


Forum|alt.badge.img+1

Hello, in my android app using jetpack composed i implemented revenue cat. Everything seems to be ok apart from the fact that the paywall showing is the basic paywall. I have Designed paywall using the V2 of the paywall editor , but the basic paywall is still showing. I checked my logs and everything seems to be fine: 

[Purchases] - DEBUG         D  👤 Logging in from $RCAnonymousID:b831970ef3294aa19a10b4ddf59fc251 -> tNQh1DwjRTU9zJZIk08oEGnLHBo2[Purchases] - DEBUG         D  ℹ️ No subscriber attributes to synchronize.[Purchases] - DEBUG         D  API request started: POST /subscribers/identify[Purchases] - DEBUG         D  API request completed with status: POST /subscribers/identify 200[Purchases] - DEBUG         D  👤 Logged in successfully as tNQh1DwjRTU9zJZIk08oEGnLHBo2. Created: false[Purchases] - DEBUG         D  ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:b831970ef3294aa19a10b4ddf59fc251[Purchases] - DEBUG         D  ℹ️ Deleting subscriber attributes for $RCAnonymousID:b831970ef3294aa19a10b4ddf59fc251 from cache[Purchases] - DEBUG         D  ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:b831970ef3294aa19a10b4ddf59fc251[Purchases] - DEBUG         D  😻 Start Offerings update from network.[Purchases] - DEBUG         D  Request already scheduled with jitter delay, adding existing callbacks to unjittered request with key: BackgroundAwareCallbackCacheKey(cacheKey=[/subscribers/tNQh1DwjRTU9zJZIk08oEGnLHBo2/offerings], appInBackground=false)[Purchases] - DEBUG         D  API request started: GET /subscribers/tNQh1DwjRTU9zJZIk08oEGnLHBo2/offerings[Purchases] - DEBUG         D  API request completed with status: GET /subscribers/tNQh1DwjRTU9zJZIk08oEGnLHBo2/offerings 200[Purchases] - DEBUG         D  ℹ️ Requesting products from the store with identifiers: my_words_subscription[Purchases] - DEBUG         D  ℹ️ Products request finished for my_words_subscription[Purchases] - DEBUG         D  💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"my_words_subscription","type":"subs","title":"My words subscription (My words)","name":"My words subscription","description":"This suscription gives you access to publish and your quotes to the \ncommunity","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4J5erch9a_IcBbO3j4jwbgTtWyHrBNh5WEuai4hgKDu3mbRqAZxPxKLzA5pklk=","subscriptionOfferDetails":[{"offerIdToken":"AWOstcbCA6ReMobmJS\/3K7dSPdglmtYEsMY4QSz4wQdK3ePW3IDBRmOD+301Ic3rvHsHEDrjtDyfLZdcJ57RQdf57y2Axa5Kanw9E2OpnaNzq5POwgZtUlCF5w==","basePlanId":"my-words-subscription-yearly","pricingPhases":[{"priceAmountMicros":20500000000,"priceCurrencyCode":"NGN","formattedPrice":"₦20,500.00","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWOstcZvYO2LvqGAzBWUhqFnwt9aLnCCTs3eVmRRvHx8QXYbZ6isbczooSlEQiaAQbEGKhAJRyWRY5y24rFC\/YPw3O\/cnJm+wpoB8LQVTUCICOSE5cOZ3bFRpg==","basePlanId":"my-words-subscription-monthly","pricingPhases":[{"priceAmountMicros":2000000000,"priceCurrencyCode":"NGN","formattedPrice":"₦2,000.00","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"my_words_subscription","type":"subs","title":"My words subscription (My words)","name":"My words subscription","description":"This suscription gives you access to publish and your quotes to the \ncommunity","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4J5erch9a_IcBbO3j4jwbgTtWyHrBNh5WEuai4hgKDu3mbRqAZxPxKLzA5pklk=","subscriptionOfferDetails":[{"offerIdToken":"AWOstcbCA6ReMobmJS\/3K7dSPdglmtYEsMY4QSz4wQdK3ePW3IDBRmOD+301Ic3rvHsHEDrjtDyfLZdcJ57RQdf57y2Axa5Kanw9E2OpnaNzq5POwgZtUlCF5w==","basePlanId":"my-words-subscription-yearly","pricingPhases":[{"priceAmountMicros":20500000000,"priceCurrencyCode":"NGN","formattedPrice":"₦20,500.00","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWOstcZvYO2LvqGAzBWUhqFnwt9aLnCCTs3eVmRRvHx8QXYbZ6isbczooSlEQiaAQbEGKhAJRyWRY5y24rFC\/YPw3O\/cnJm+wpoB8LQVTUCICOSE5cOZ3bFRpg==","basePlanId":"my-words-subscription-monthly","pricingPhases":[{"priceAmountMicros":2000000000,"priceCurrencyCode":"NGN","formattedPrice":"₦2,000.00","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='my_words_subscription', productType='subs', title='My words subscription (My words)', productDetailsToken='AEuhp4J5erch9a_IcBbO3j4jwbgTtWyHrBNh5WEuai4hgKDu3mbRqAZxPxKLzA5pklk=', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@96258a2, com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@52d4933]}[Purchases] - DEBUG         D  💰 my_words_subscription - ProductDetails{jsonString='{"productId":"my_words_subscription","type":"subs","title":"My words subscription (My words)","name":"My words subscription","description":"This suscription gives you access to publish and your quotes to the \ncommunity","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4J5erch9a_IcBbO3j4jwbgTtWyHrBNh5WEuai4hgKDu3mbRqAZxPxKLzA5pklk=","subscriptionOfferDetails":[{"offerIdToken":"AWOstcbCA6ReMobmJS\/3K7dSPdglmtYEsMY4QSz4wQdK3ePW3IDBRmOD+301Ic3rvHsHEDrjtDyfLZdcJ57RQdf57y2Axa5Kanw9E2OpnaNzq5POwgZtUlCF5w==","basePlanId":"my-words-subscription-yearly","pricingPhases":[{"priceAmountMicros":20500000000,"priceCurrencyCode":"NGN","formattedPrice":"₦20,500.00","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWOstcZvYO2LvqGAzBWUhqFnwt9aLnCCTs3eVmRRvHx8QXYbZ6isbczooSlEQiaAQbEGKhAJRyWRY5y24rFC\/YPw3O\/cnJm+wpoB8LQVTUCICOSE5cOZ3bFRpg==","basePlanId":"my-words-subscription-monthly","pricingPhases":[{"priceAmountMicros":2000000000,"priceCurrencyCode":"NGN","formattedPrice":"₦2,000.00","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"my_words_subscription","type":"subs","title":"My words subscription (My words)","name":"My words subscription","description":"This suscription gives you access to publish and your quotes to the \ncommunity","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4J5erch9a_IcBbO3j4jwbgTtWyHrBNh5WEuai4hgKDu3mbRqAZxPxKLzA5pklk=","subscriptionOfferDetails":[{"offerIdToken":"AWOstcbCA6ReMobmJS\/3K7dSPdglmtYEsMY4QSz4wQdK3ePW3IDBRmOD+301Ic3rvHsHEDrjtDyfLZdcJ57RQdf57y2Axa5Kanw9E2OpnaNzq5POwgZtUlCF5w==","basePlanId":"my-words-subscription-yearly","pricingPhases":[{"priceAmountMicros":20500000000,"priceCurrencyCode":"NGN","formattedPrice":"₦20,500.00","billingPeriod":"P1Y","recurrenceMode":1}],"offerTags":[]},{"offerIdToken":"AWOstcZvYO2LvqGAzBWUhqFnwt9aLnCCTs3eVmRRvHx8QXYbZ6isbczooSlEQiaAQbEGKhAJRyWRY5y24rFC\/YPw3O\/cnJm+wpoB8LQVTUCICOSE5cOZ3bFRpg==","basePlanId":"my-words-subscription-monthly","pricingPhases":[{"priceAmountMicros":2000000000,"priceCurrencyCode":"NGN","formattedPrice":"₦2,000.00","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='my_words_subscription', productType='subs', title='My words subscription (My words)', productDetailsToken='AEuhp4J5erch9a_IcBbO3j4jwbgTtWyHrBNh5WEuai4hgKDu3mbRqAZxPxKLzA5pklk=', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@96258a2, com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@52d4933]}[Purchases] - DEBUG         D  ℹ️ Building offerings response with 1 products[Purchases] - DEBUG         D  OfferingImagePreDownloader: starting image download[Purchases] - DEBUG         D  Retrieving customer info with policy: CACHED_OR_FETCHED[Purchases] - DEBUG         D  ℹ️ Vending CustomerInfo from cache.[Purchases] - DEBUG         D  ℹ️ Checking if cache is stale AppInBackground false[Purchases] - DEBUG         D  ℹ️ Vending Offerings from cache[Purchases] - DEBUG         D  ℹ️ Checking if cache is stale AppInBackground false[Purchases] - DEBUG         D  Retrieving customer info with policy: CACHED_OR_FETCHED[Purchases] - DEBUG         D  ℹ️ Vending CustomerInfo from cache.[Purchases] - DEBUG         D  ℹ️ Checking if cache is stale AppInBackground false

Best answer by JayShortway

@bethel-m Thank you for sharing the logs! On my end it looks like you're using purchases-android 8.11.0, but Paywalls v2 requires at least 8.12.2. Could you try if updating to the latest (8.13.0) resolves the issue? Thanks in advance! 

View original
Did this post help you find an answer to your question?

12 replies

JayShortway
RevenueCat Staff
Forum|alt.badge.img+5
  • RevenueCat Staff
  • 38 replies
  • February 28, 2025

Hi, thanks for reporting this! It's odd that there are no logs. Your paywall seems to be rendering okay on my end. Could you share a code snippet of how you're showing the Paywall composable? Thanks in advance! 


Forum|alt.badge.img+1
  • Author
  • Member
  • 5 replies
  • February 28, 2025

I added the logs in the post above, i just removed the time and app package name to save space.

When you say its rendering okay, you mean the custom design right?. I attached what am currently getting on my own end to this post. 

This is the code composable showing the paywall:

  SubscribeCard(
                cardBackGroundColors = cardBackgroundColor,
                onClick = {
                    showRevenueOffers.value = true
                }
            )


 if (showRevenueOffers.value) {
        PayWallScreen(onDismissRequest = { showRevenueOffers.value = false })
    }

@Composable
fun PayWallScreen(onDismissRequest: () -> Unit) {
    PaywallDialog(
        PaywallDialogOptions.Builder()
            //  .setRequiredEntitlementIdentifier(Constants.ENTITLEMENT_ID)
            .setRequiredEntitlementIdentifier("community_access")
            .setShouldDisplayDismissButton(true)
            .setDismissRequest(onDismissRequest)
            .setListener(
                object : PaywallListener {
                    // override
                    override fun onPurchaseCompleted(
                        customerInfo: CustomerInfo,
                        storeTransaction: StoreTransaction
                    ) {
                      //  onDismissRequest()
                    }

                    override fun onRestoreCompleted(customerInfo: CustomerInfo) {
                   //     onDismissRequest()
                    }

                    override fun onPurchaseCancelled() {
                        super.onPurchaseCancelled()
                      //  onDismissRequest()
                    }

                    override fun onPurchaseError(error: PurchasesError) {
                        super.onPurchaseError(error)
                    }

                    override fun onPurchaseStarted(rcPackage: Package) {
                        super.onPurchaseStarted(rcPackage)
                    }

                    override fun onRestoreError(error: PurchasesError) {
                        super.onRestoreError(error)
                    }

                    override fun onRestoreStarted() {
                        super.onRestoreStarted()
                    }

                }
            )
            .build()
    )
}

 


JayShortway
RevenueCat Staff
Forum|alt.badge.img+5
  • RevenueCat Staff
  • 38 replies
  • February 28, 2025

Ah yes, I meant that it's odd that there are no logs regarding the fallback paywall. 

I copied your code, and I attached what I'm seeing on my end. Some questions: 

  • Is the SubscribeCard an AlertDialog or another kind of popup window?
  • What happens if you use the Paywall composable, instead of PaywallDialog? Do any logs show up?
  • Have you tried passing as few Paywall(Dialog)Options as possible? Just to see if it's caused by a specific option.
  • Have you tried passing in the Offering directly, in the Paywall(Dialog)Options?

Not really sure what's going on yet. Thanks in advance for providing this info! 

 

 


  • New Member
  • 1 reply
  • February 28, 2025

Just letting know I have the exact same problem/behavior in flutter.


Forum|alt.badge.img+1
  • Author
  • Member
  • 5 replies
  • February 28, 2025

I had to log again, and apparently there are other log tags from revenue cat not just [purchases]  there as also the RevenueCatUI tag 

the way it was explained in the docs, i thought everything came with the [purchase]  tag. 

 

this is the log: 

RevenueCatUI   W  Displaying default template because paywall is missing for offering 'default'.

RevenueCatUI  W  Displaying default template due to validation errors.

RevenueCatUI  W  Could not process value for variable 'sub_offer_duration' for package '$rc_annual'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.
RevenueCatUI W  Could not process value for variable 'sub_offer_duration' for package '$rc_monthly'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.

 

What could be the problem


JayShortway
RevenueCat Staff
Forum|alt.badge.img+5
  • RevenueCat Staff
  • 38 replies
  • March 3, 2025

Ah thanks for pointing out that inconsistency in the docs. We'll get that fixed!

Glad to hear you were able to uncover more logs. One thing that stands out to me is that {{ sub_offer_duration }} is a "v1" paywall variable. In v2, that would be {{ product.offer_period_with_unit }}. Does switching to the v2 variable help? Let me know!


Forum|alt.badge.img+1
  • Author
  • Member
  • 5 replies
  • March 3, 2025

on the paywall design platform am already using v2 variables: 

{{ product.price_per_period }} ({{ product.price_per_month }}/month )

, and 

{{ product.price_per_period }}.

Are you also using jetpack compose, i will like to see how you implemented yours. 

 


JayShortway
RevenueCat Staff
Forum|alt.badge.img+5
  • RevenueCat Staff
  • 38 replies
  • March 4, 2025

Yes, I'm actually using the paywall-tester project in the purchases-android repository. It's using the PaywallDialog composable, but I don't expect that to make a difference.

Just to clarify, could you share the logs again, now that you are using v2 variables? Thanks in advance! 


Forum|alt.badge.img+1
  • Author
  • Member
  • 5 replies
  • March 4, 2025

here is the log: 

RevenueCatUI W  Displaying default template because paywall is missing for offering 'default'.
RevenueCatUI W  Displaying default template due to validation errors.
RevenueCatUI W  Could not process value for variable 'sub_offer_duration' for package '$rc_annual'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.
RevenueCatUI W  Could not process value for variable 'sub_offer_duration' for package '$rc_monthly'. Please check that the product for that package matches the requirements for that variable. Defaulting to empty string.

this this time instead of showing and hiding the screen based on state managed by click , like this:

   if (showRevenueOffers.value) {
        PayWallScreen(onDismissRequest = { showRevenueOffers.value = false })
    }

i used navigation, by navigating to the screen , but its still the same outcome:

   navigateToPaymentScreen = {
                    navController.navigate(PaymentRoute)
                }

 


JayShortway
RevenueCat Staff
Forum|alt.badge.img+5
  • RevenueCat Staff
  • 38 replies
  • Answer
  • March 5, 2025

@bethel-m Thank you for sharing the logs! On my end it looks like you're using purchases-android 8.11.0, but Paywalls v2 requires at least 8.12.2. Could you try if updating to the latest (8.13.0) resolves the issue? Thanks in advance! 


Forum|alt.badge.img+1
  • Author
  • Member
  • 5 replies
  • March 5, 2025

yes…. that solved it…. upgrading from 8.110 to 8.13.0..

Thank you for your help


JayShortway
RevenueCat Staff
Forum|alt.badge.img+5
  • RevenueCat Staff
  • 38 replies
  • March 5, 2025

I'm glad that solved it! Apologies for the back and forth. 


Reply


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings