Get help with your SDK implementation.
Recently active
Is there any way using the v1 (or v2) API to check more directly whether an entitlement is active? The SDK has something like if !customerInfo!.entitlements.active.isEmpty but it seems like the API just returns something like: "entitlements" : { "premium" : { "expires_date" : "2024-04-23T14:43:37Z", "grace_period_expires_date" : null, "product_identifier" : "monthly", "purchase_date" : "2024-04-23T14:38:37Z" } when hitting the GET /subscriber endpoint. This means I have to check the expires_date against Date.now() or something like that which feels clunky rather than having the attribute calculated directly on the API.
Hey guys, I’m getting empty list of products after following all the quick start tutorial and also the thread below: Here is the logs I have:2022-08-30 20:44:24.710 8209-22767/com.crediswap.crediswap D/[Purchases] - DEBUG: ℹ️ Debug logging enabled2022-08-30 20:44:24.711 8209-22767/com.crediswap.crediswap D/[Purchases] - DEBUG: ℹ️ SDK Version - 4.6.12022-08-30 20:44:24.711 8209-22767/com.crediswap.crediswap D/[Purchases] - DEBUG: 👤 Initial App User ID - null2022-08-30 20:44:24.711 8209-22767/com.crediswap.crediswap D/[Purchases] - DEBUG: 👤 Identifying App User ID: $RCAnonymousID:36244bb505c14d0c8f5accb0d5a7f8a02022-08-30 20:44:24.713 8209-22767/com.crediswap.crediswap D/[Purchases] - DEBUG: ℹ️ Deleting old synced subscriber attributes that don't belong to $RCAnonymousID:36244bb505c14d0c8f5accb0d5a7f8a02022-08-30 20:44:24.714 8209-22767/com.crediswap.crediswap D/[Purchases] - DEBUG: ℹ️ Listener set2022-08-30 20:44:24.714 8209-8209/com.crediswap.crediswap D/[Purchases] - DEBUG: ℹ️ App f
Hi,We have a back-end protecting routes based on the subscription status of the user. If user has a subscription, middleware allows to access. To ensure it, after purchase or any other transaction, Revenuecat sends webhook to our server and we are comparing the expiration dates and change the subscription status of user on our server by sending Revenuecat rest api.However, in the initial subscription, if user make purchases and tries to see premium routes immediately in which webhook doesn’t recieve to our server; user may not see the premium content. In this case i have two questions:Revenuecat paywall waits webhook to be sent to be closed? If paywall waits for sending webhook to be closed, no problem. If not, should we make a control on our server by sending request to Revenuecat rest api when the paywall result is purchased?What should our approach be? We know that we mention about very small milliseconds but we have to consider each possibility that may affect the user experience.
My app retrieve subscription status when the app startsconst customerInfo: CustomerInfo = await Purchases.getCustomerInfo(); console.log('current time', getDateTimeDisplayString(new Date().getTime())); console.log('customer info when loading the app', customerInfo);however, it always loads the last cached data in my ios simulator LOG current time 2024-04-22 19:35:32 LOG customer info when loading the app {"activeSubscriptions": [], "allExpirationDates": {}, "allExpirationDatesMillis": {}, "allPurchaseDates": {}, "allPurchaseDatesMillis": {}, "allPurchasedProductIdentifiers": [], "entitlements": {"active": {}, "all": {}, "verification": "NOT_REQUESTED"}, "firstSeen": "2024-04-22T23:30:56Z", "firstSeenMillis": 1713828656000, "latestExpirationDate": null, "latestExpirationDateMillis": null, "managementURL": null, "nonSubscriptionTransactions": [], "originalAppUserId": "56de1eda-4738-a098-55b8-041900dc5f37", "originalApplicationVersion": null, "originalPurchaseDate": null, "originalPurch
As per subject, I am testing revenue cat integratoin on the ios simulator, but the prices are only showed in USD currency code.Any idea? My app is availble in multiple language or country. It is a limitation of the simulator and then on real device in production will be ok? In such a acase how revenue cat will know the price? Myabe did I miss configuration on Apple side? Thanks for any support.Here a sample if what I get rom the revenue cat api: LOG {"identifier": "$rc_monthly", "offeringIdentifier": "base", "packageType": "MONTHLY", "product": {"currencyCode": "USD", "description": "Remove Ads", "discounts": [], "identifier": "01_month2", "introPrice": null, "price": 2.9899999999999998, "priceString": "$2.99", "productCategory": "SUBSCRIPTION", "productType": "NON_CONSUMABLE", "subscriptionPeriod": "P1M", "title": "1 Month"}} LOG {"identifier": "$rc_three_month", "offeringIdentifier": "base", "packageType": "THREE_MONTH", "product": {"currencyCode": "USD", "description": "Remove Ads
I am using Android SDK, revenuecat version 7.0, and this is my code (kotlin):Purchases.sharedInstance.getCustomerInfoWith( fetchPolicy = CacheFetchPolicy.FETCH_CURRENT, onError = { error: PurchasesError -> log("END with ERROR = $error") }, onSuccess = { customerInfo: CustomerInfo -> val purchased = customerInfo.entitlements["premium"]?.isActive log("END with SUCCESS: isActive = $purchased") })Consider following scenario:Before purchasing a product = getCustomerInfo properly returns no active entitlements (as I never purchased the product) After I purchase the product = getCustomerInfo properly returns existing active entitlement (as I just purchased product) After I refund my purchase in Play Console (including checked checkbox "Remove entitlement") = getCustomerInfo incorrectly still returns I do have active entitlements. Even after hours, even after I specifically used fetch pol
Hello RevenueCat Community,I'm encountering an issue where, despite setting up a closed testing program and adding my email to the list, I'm still being prompted for credit card information when installing the app on my phone. This behavior persists even though I've successfully joined the testing program through the provided link.Details:Platform: Android using flutter SDK Version: purchases_flutter: ^6.26.0 Testing Program Setup: I've created a closed testing program in the RevenueCat dashboard and added my email to the list. The program is configured to not require payment information.Issue: When I install the app on my phone using the same email, the system still requests credit card information. This behavior is unexpected since I'm part of the closed testing program.Steps Taken:I've ensured that the email used in the app matches the one added to the testing program. I've tried clearing the app's cache and reinstalling it to no avail. I've verified that the RevenueCat SDK is corre
W/[Purchases] - WARN(13858): ! Unable to start a network connection due to a network configuration issue: https://api.revenuecat.com/v1/subscribers/gi61cjv4sSYwVJVm9YyqLJzJYet2/attributesE/[Purchases] - ERROR(13858): 😿‼️ PurchasesError(code=InvalidSubscriberAttributesError, underlyingErrorMessage=Some subscriber attributes keys were unable to be saved., message='One or more of the attributes sent could not be saved.')E/[Purchases] - ERROR(13858): 😿‼️ There were some subscriber attributes errors: [SubscriberAttributeError(keyName=$androidId, message=Android ID cannot be modified.)]
Hello there!I have noticed that the revenuecat events differentiate in behavior for android and ios but i did not find a specific explanation for that. If a subscription is canelled and a user purchases again, a renewal event is sent for ios but an initial_purchase is sent for android. Is this correct behaviour?Ive seen that initial_purchase events are sent for first subscriptions or if a “lapsed” user resubscribes. What exactly is a “lapsed” user? The documentation says an active user is someone who interacted with revenue cat in the past 28 days. But then again android is sending initial purchases. I have not come to a conclusion with this. I hope anyone can help me out, thanks!
I have verified that I can purchase products in the Amazon AppStore Live App Testing using the Unity SDK in version 6.9.3.https://github.com/RevenueCat/purchases-unity#amazon-support> This version of the SDK doesn't have support for Amazon Store. If you would like to use our SDK with Amazon Store, use the version tagged amazon-latest and follow the AMAZON-INSTRUCTIONS.md docs to get set up.However, the GitHub readme says I need to use the version tagged "amazon-latest".Is the information in the GitHub readme out of date?
When trying to upgrade an existing Play Store subscription in our React Native mobile app, I often get a "The device or user is not allowed to make the purchase" error, and the upgrade fails. Eventually, using another payment method, the upgrade succeeds. I’m unsure if this is an error with my payment method, RevenueCat code, or something else.Steps taken on a Samsung Galaxy A14 in a live production app with real purchases:Purchase sakura_gold_v1a:monthly-5-autorenewing subscription with Apple Card credit card info entered into Play Store - succeeds. Upgrade to sakura_diamond_v1a:montly-19-autorenewing subscription with Apple Card - fails. Retry - fails. Apple card shows no declined transactions that require approval Play Store app is up to date Play Store “Require authentication for purchases” is on Google payments activity shows Declined transaction Error logged in app: code: 3, message: The device or user is not allowed to make the purchase., name: Error, nativeStackAndroid:
Fetched all offerings with accurate details Create a closed testing release with testers (Successfully published) Using a real device with logged in email in the play store that is included in the testersAll of the necessary steps to test the subscription feature have been done but still I’m getting : D/[Purchases] - DEBUG(10299): ℹ️ Vending Offerings from cacheD/[Purchases] - DEBUG(10299): ℹ️ Checking if cache is stale AppInBackground falseI/flutter (10299): PurchasesErrorCode.productNotAvailableForPurchaseErrorI/flutter (10299): The product is not available for purchase.
I’m working on the best way to handle errors in my app, referencing the revenuecat error documentation.It seems to me that there are broadly four classes of error:`PurchaseCancelledError` - which is simple enough to handle in the UI `NetworkError` - in which a purchase definitely didn’t go through, and I can give my users a chance to retry the purchase Errors related to my code and configuration - in this case, I should display an error message, send an alert to our error logging system, and not allow the user to proceed. And `StoreProblemError`The last category of error I find puzzling - `StoreProblemError`. The documentation says that “If everything was working while testing, you shouldn't have to do anything to handle this error in production. RevenueCat will automatically retry any purchase failures so no data is lost.” So if I’m reading this correctly, the user will not have an active subscription made immediately, but they will have a subscription made eventually because the rev
Just launched my app with subscriptions on Monday.On Tuesday I had an iOS user successfully subscribe to a Monthly plan.Now, Wednesday morning, I’m seeing this error in my Sentry dashboard. Not quite sure what to make of this. Clearly things were working well enough ~12 hours prior that someone was able to subscribe - and I haven’t touched/changed anything since.Only the one error / one user so far - but I’m concerned it could continue.
How does RC recommend anyone already using mobile to get the existing purchases and subscriptions for users on a Flutter Web app given no RC Flutter Web SDK. I want to ensure subscribers on Mobile can log in on Web and their subscriptions are retrieved. I see there is the Revenue Cat API, and also Firebase Integrations. I want to understand what the best practice is. Thanks
IntroThis vulnerable can be used on all app uses revenuecat subscriptions verification. All code here wrote on JavaScriptEntitlement’s bugThis vulnerable based on getting entitlement’s s from server, exampleconst params = {url: "https://api.revenuecat.com/v1/product_entitlement_mapping",timeout: 5000,headers: $request.headers}delete params["headers"]["x-revenuecat-etag"]$httpClient.get(params, function(errormsg, response, data) {if(errormsg) {err(errormsg)}else{mapping(data)}}) SSL pinningSSL pinning is mechanism to stop sending response if traffic was capturing .Recommendation: add SSL pinning to all app requests
I have added the latest RevenueCat dependency (purchases_flutter: ^6.26.0) in my Flutter project. However, when I try to run my IOS project I am getting the following errors. Failed to build iOS appError (Xcode): double-quoted include "LaunchReviewPlugin.h" in framework header, expected angle-bracketed instead/Volumes/Data/Projects/demo/ios/Pods/Target%20Support%20Files/launch_review/launch_review-umbrella.h:12:8 Error (Xcode): 'Flutter/Flutter.h' file not found/Users/abc/.pub-cache/hosted/pub.dev/launch_review-3.0.1/ios/Classes/LaunchReviewPlugin.h:0:8 Error (Xcode): (fatal) could not build module 'launch_review'/Users/abc/Library/Developer/Xcode/DerivedData/Runner-ffencdqrnvwqyfcxfawlmzddeskh/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/launch_review.build/VerifyModule/launch_review_objective-c_arm64-apple-ios12.0-simulator_gnu11/Test/Test.framework/Headers/Test.h:0:8 Error (Xcode): (fatal) could not build module 'Test'/Users/abc/Library/Developer/Xcode/DerivedData/
For a non-subscription purchase, is there a way to do it in flutter client, serverless case. Get information such as the actual price paid by the user and the country.
Hello everyone I am hardstuck with this issue since 1 week,Products are loaded on play store(i can buy subscription start free trial use promocode etc correctly), but on IOS on a real device, running the development build, with a sandbox user offerings are not loading and I get this errorThere is an issue with your configuration. Check the underlying error for more details. There's a problem with your configuration. None of the products registered in the RevenueCat dashboard could be fetched from App Store Connect (or the StoreKit Configuration file if one is being used).More information: https://rev.cat/why-are-offerings-empty]I already triple-checked everything inside thishttps://community.revenuecat.com/sdks-51/why-are-offerings-or-products-empty-124paid app agreement is signed and is in the “Verifying” state, the subscriptions are in "ready fro submission", bundle id matches everything is setup correctly, but still I can't make this work, and keep getting this error.The credentials
Hi,I am trying to fetch APP Store IAP products using the API Purchases.getProducts, however, it is returning no products. After looking at various post it seems that I need to pass second argument to the method Purchases.getProducts as the default value is “subscription” and my product is not Subscription.I am struggling to pass the second argument which is ENUM in the latest SDK and not a simple string like “sub” or “iap”. I don’t know how to import these enum values so that I can use it as argument in the function call.Could you please help me with some sample code to pass the second argument? Thanks in advance. Thanks,Kapil
There are two subscription setups:Identifier: tier1:monthly1, Subscription Id: tier1, Base Plan Id: monthly1Identifier: tier2:monthly2, Subscription Id: tier2, Base Plan Id: monthly2When changing the plan from tier1:monthly1 to tier2:monthly2, the following error occurs for a specific user:PlatformException(4, One or more of the arguments provided are invalid., {code: 4, message: One or more of the arguments provided are invalid., readableErrorCode: PurchaseInvalidError, readable_error_code: PurchaseInvalidError, underlyingErrorMessage: Couldn't find existing purchase for SKU: tier1, userCancelled: false}, null)In testing locally, this error is not reproducible, and the cause of the error is not apparent. The product_id of the subscription for the user where the error occurs is as follows, with tier1:monthly1 set:{ "app_id": "", ... "product_id": "tier1:monthly1", }The code for changing the plan is as follows:final currentEntitleInfo = (await Purchases.getCustomerInfo()).entit
Hey everybody,I started to implement RevenueCat today into our existing Flutter app and so far I’m really enjoying is. The only thing I’m wondering right now is, is the following debug message that shows up all the time: [Purchases] - INFO: ℹ️ Purchases instance already set. Did you mean to configure two Purchases objects? What I’m doing so far in my code is to initialize the Purchases like that: Future<void> initSubscriptions() async { await Purchases.setDebugLogsEnabled(true); if (Platform.isAndroid) { // TODO Setup Google // await Purchases.setup("public_google_sdk_key"); } else if (Platform.isIOS) { final bool revenueCatAlreadyConfigured = await Purchases.isConfigured; if (!revenueCatAlreadyConfigured) { await Purchases.setup("<my_api_key>", appUserId: "SIMULATOR-TEST-CLIENT"); print("iOS setup finished"); } else { print("RevenueCat is already configured"); } } else { print("Platform doesn'
Hello,Just asking some quick clarification questions publicly in case they help others, these are specific for Flutter but I would assume that they’re applicable for other SDKs.1. I am invoking:PaywallResult paywallResult = await RevenueCatUI.presentPaywallIfNeeded("Premium", displayCloseButton: true);I would assume that the only thing I can do to “react” to whatever the user did would be to switch on the enum - no other subscription details bar PaywallResult (notPresented, cancelled, error, purchased, restored) are returned?2. Related but I also noticed that you can hook into subscription changes like this: Purchases.addCustomerInfoUpdateListener((customerInfo) async { });Would you do this in a centralised place (like where we are initialising the SDK), to listen for all subscription changes for a user and then “observe” these using a ChangeNotifier or similar?
I use RevenueCat in apps developed with Flutter. It does not show up inside the IOS Runner Privacy Report. I use the last version purchases_flutter: ^6.25.0Is this an issue or is as intended?
The image aspect ratio recommended for the Template 4 - Persian Paywall is stated as 19.5:9 - https://www.revenuecat.com/docs/tools/paywalls/creating-paywalls#uploading-images Is this correct? the image width is over twice as big as the height?
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.