Get help with your SDK implementation.
Recently active
In the past 2 weeks we have had 5 Google Play Pass users complain that they are not getting an unlocked version of our app upon install. When we look up their accounts in the Rev Cat portal we are not seeing any entitlements. Please check the following account ids:eccadc44-b852-49e3-9abd-98ca8caaa5793e02d09e-39af-4f3e-97e7-1202c5721a800bbacb64-3025-438d-9c97-e9072834ad3fff55917c-c849-4a1e-8a76-47055e13cf62 Normally we see the entitlements that are tied to purchase we provisioned for Google Play Pass on accounts like these in the portal
Working through setting up RC for the first time am using https://docs.revenuecat.com/reference/subscribers to grab a particular user’s entitlements and subscriptions information. Per the docs, I see that the subscriptions payload returns a mapping of product_id to the subscription itself. When testing with a Sandbox account, I see the is_sandbox populates as true which is to be expected. If a user has a sandbox subscription and I then subscribe the same user with a production subscription, what exactly happens? Is this allowed and, if so, how does this affect the final subscriptions payload?
When I am setting attributes with Cordova whether generically like this:Purchases.setAttributes({“age”: “24”});Or when using something like the display name like this:Purchases.setDisplayName(“Doe”);I always end up with an error message that looks like this:To Native Cordova -> PurchasesPlugin setAttributes INVALID ["options": [{ age = 24;}]]Or this for the display name:To Native Cordova -> PurchasesPlugin setDisplayName INVALID ["options": [Doe]] Am I missing something? I went through and updated everything in my app to be uptodate. I am using the following versions of things:"@ionic-native/core": "^5.35.0","@ionic-native/purchases": "^5.35.0","cordova-plugin-purchases": "^2.3.0",Everything else with purchases is working just fine as far as I can tell, I just can’t seem to use it to set an attribute.
While working with on the app in my simulator everytime I remove and run the app revenue cat new customer data is increasing. I would like to filter this debug mode datas. Is there anyway to do that? some thing like this:#if DEBUG Purhcases.environment = .sandbox#endif
I have 2 products in the AppStore: a monthly subscription and a yearly subscription, and I am testing the RevenueCat API in sandbox.the purchase function (Purchases.shared.purchase(package: package)) seems to be working fine, there’s no error.I’ve tested a scenario where I buy a monthly subscription, and then a yearly subscription right after, the purchase function returns the CustomerInfo with old info (still the productIdentifier pointing to the monthly subscription). However, Purchases.shared.restorePurchases actually return the up to date CustomerInfo with the yearly subscription.Here’s the code I’m using to purchase:static func purchase(package: Package, completion: @escaping (_ info: CustomerInfo?, _ error: Error?, _ usercancelled: Bool) -> Void) { Purchases.shared.purchase(package: package) { transaction, customerInfo, error, userCancelled in completion(customerInfo, error, userCancelled) } } Could it be a bug or is there something wrong wi
Hi Team - My goal is to setup offer codes to allow customers coming from partnerships to redeem prepaid subscriptions.After setting up auto-renewing subscriptions, I’ve hit a snag implementing Offer Codes in my iOS app.The following has been configured:2 subscriptions(yearly and monthly) setup in App Store Connect under same the subscription group Both subscriptions are at the same level of service and include a 7-day trial period Subscription key uploaded to RevenueCat Created 1-year free offer codes under the yearly renewable subscription Offer code is for new, existing and expired usersObserved user experience:User logs in to app and subscribes to monthly renewable subscription User then navigates to https://apps.apple.com/redeem?ctx=offercodes&id=1579782821&code=CODE to redeem 1-year free offer Code is accepted and Apple ID authorization is prompted After authorizing the subscription a error is presented stating, “ This offer can’t be redeemed with your current subscription
I setup every thing as in documentation and wait for a weak and still getting that error “Invalid Play Store credentials “ after making purchasewhat should i do now ???and dose space in Service Account credentials JSON string make a different ?
If there is an attempt to change the purchase (switch between subscriptions), while app is without internet we will get a response like this:`PurchasesError(code=StoreProblemError, underlyingErrorMessage=Error finding existing purchase for SKU: something, message='There was a problem with the store.')`All the next attempts (even if the internet is now available) will return the following response:`PurchasesError(code=OperationAlreadyInProgressError, underlyingErrorMessage=null, message='The operation is already in progress.')``This is happening until the app is killed and restarted.
I’m integrating RevenueCat into an app with a custom configuration and AB testing system. I can mirror some of what my app does in RevenueCat by setting up different offerings in RC. Then RC can report its transaction centric view segmented by the cohorts that my custom client side code creates. But to achieve this I need the client/app to call a RC API to set the users current offering. Is there a way to do this?
Hello, If you get the error : TypeError: _reactNativePurchases.default.setup is not a functionThe getting started for RN is not up to date.The Purchases.setup("public_ios_sdk_key") is no more available.https://docs.revenuecat.com/docs/getting-started#7-configure-the-sdkYou should use Purchases.configure({ apiKey: "public_ios_sdk_key" }) instead.https://docs.revenuecat.com/docs/configuring-sdk#initialization
Hello, My app has 3 products, Monthly, Annual, and Lifetime packages in 1 offering. On launch I call getOfferings, take the current offering, and store the packages. My paywall is dynamically generated based on these packages. When I try and call purchase() on my Annual or Lifetime packages it works fine, but my Monthly fails with a weird error: 2022-08-23 11:00:18.932233+0930 Pestle[44020:4973217] [Purchases] - INFO: 💰 Purchasing Product 'mymonthlyoffering' from package in Offering 'Pro Upgrade'2022-08-23 11:00:23.562161+0930 Pestle[44020:4973974] [Default] [StoreKit] Received error that does not have a corresponding StoreKit Error:Error Domain=ASDServerErrorDomain Code=3502 "This item is not available." UserInfo={client-environment-type=Sandbox, storefront-country-code=AUS, NSLocalizedDescription=This item is not available.}2022-08-23 11:00:23.562331+0930 Pestle[44020:4973974] [Default] [StoreKit] Purchase did not return a transaction: Error Domain=ASDServerErrorDomain Code=3502 "Th
I am wanting to change a user’s current offering depending on how they answer certain questions in our onboarding flow (before seeing the paywall). I am able to successfully update their current offering using the REST API, but when the user reaches the paywall, the “standard” current offering is still shown, not the user’s customer current offering. I read somewhere that the current offering is cached on app launch. Is there any way to refresh this without having to restart the app?
We’re integrating RevenueCat to our Unity app, but we can’t seem to find the way to display the detailed logs I’ve seen around in the documentation and in this forum. Those described here. I’ve tried in both an Android and an iOS build.I am, of course, calling SetDebugLogsEnabled(true) before calling Configure(...), as prescribed in the docs. I can also correctly purchase sandbox subscriptions using the SDK, so the setup phase seems to be working fine. (We’re using RevenueCat SDK 4.0.0 and Unity 2021.3.8)
I'm using lib 4.1.2 purchases_flutter.My app requires login to be subscribed.Subscribe works correctly, the problem starts when I log out of the user and log in.When I login again the entitlements active comes empty, if I reopen the app it also comes with empty entitlements.I'm using test user on android with annual subscription renewed every 30 min.Any tips?
[React native IAP implementation]Hello! I’m implementing a redeem code button that will redeem discounted annual products in my app. The way i implemented to check it was add a purchasesListener when he clicks the redeem code button, the problem is I want to remove the listener when he goes from page A ( page with redeem code button ) to another page B ( meaning he did not reclaim the coupon ), or when he enters another specific page C in our app, that is se screen after the paywall if he did not claim any offer codesI don’t know if I agree with the interface of this purchases listener. Having to pass a function reference when i add and when i remove means i have to keep track of this function reference in some sort of global store or do some workarounds only to keep the exact reference i used to remove…Couldn’t the sdk accept a function and keep inside the sdk the reference to the function, making it immutable across app’s lifecycle?I thought it this way→ add purchasesListener ( cal
Is there a list of all the error code number? Ideally we could rely on an enum to decide what message to display or if we want to attempt a retry, but there is a code number in the SDK’s error that could be the next best thing:We could use that, but we can’t seem to be able to find a comprehensive list of all the errors with their codes, only this list of strings. Where can we find such a list? (We’re using RevenueCat SDK 4.0.0 and Unity 2021.3.8)
We have the combined issues of 1) purchase requests hanging and 2) PurchaseErrorCode.operationAlreadyInProgress for our flutter app. Haven’t been able to reproduce on our side but have several users recently report this.Example of a recent Android report: https://finch.hellonext.co/b/Bugs/p/can-t-sign-up-for-trial-with-monthly-billing. We always display the error code that is returned (like in the bug report screenshot) but it sounds like some users can have requestToPurchaseProduct effectively hang without an error code returned. Is requestToPurchaseProduct always supposed to throw an error to timeout, or are we expected to handle timing out purchase requests ourselves?After the hanging, users who close the app and retry again end up getting stuck with PurchaseErrorCode.operationAlreadyInProgress. The error documentation said to wait but the user has been stuck with PurchaseErrorCode.operationAlreadyInProgress for a while, so is there any recommended ways to debug/handle this state?
the problem is I get the web hooks on EXPIRATION, PRODUCT_CHANGE and CANCELLATION but I don’t get it on INITIAL_PURCHASE or RENEWAL so we can't update our database what am I missing, I set every thing right, I also set revenueCat web hooks on App Store Connect for Sandbox and production and I even get customer history in overview with sandbox checked
Hello all,I have setup real time developer notifications for my Android app, everything seems to be working fine and when I click the “Send test notification” in the developer console, the notification is successfully sent and no error is provided, however, all my Android purchases keep getting automatically cancelled 3 days after a successful purchase. My guess is that the purchase is cancelled because they’re not acknowledged by the SDK.I’ve followed the setup steps multiple times and the purchase flow and everything else works as expected, but it is really frustrating to see all my purchases returned because some misconfiguration on either mine or RC’s end that I haven’t been able to pinpoint.I also setup a new Pub/Sub subscription to the topic automatically created by the RevenueCat system and I successfully receive the base64 encoded notification with a payload similar to this one:{"version":"1.0","packageName":"com.my.app","eventTimeMillis":"1641511258205","testNotification":{"ve
I’m trying to set up our payment at my workplace and I encountered a problem I cannot find others are having.Everything works, in theory and practically which is weird, but I still get warning logs in console when clicking the purchase button in app.So as soon as I click the purchase button I get two warning/error in log:[Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a transaction date - this is an issue with the App Store.[Purchases] - WARN: 🍎‼️ There is a problem with the SKPaymentTransaction missing a transaction identifier - this is an issue with the App Store.However, I still get the prompt to purchase and I fill in my sandbox account details and hit buy. Everything is successful. The customer and data shows up on RevenueCat list. However the billing shows up as an error in customer info in RevenueCat in the details of history for customer.I found this post on RC forums with same issue but the solution was to create a new sandbox user and to mak
When I tried to restore a lifetime access IAP on iOS with this code it did not detect a purchase. It seems to only work with subscriptions. Am I doing something wrong, or is there a different method to detect if a user has purchased a lifetime access IAP? Tried looking through docs but didn’t come across anything. Thanks for any help in advance.Purchases.shared.restorePurchases { (customerInfo, error) in //Check customerInfo to see if entitlement is active attemptingRestorePurchase = true // Bool that starts loading indicator if customerInfo?.entitlements.all[Constants.entitlementID]?.isActive == true { paidCustomer = true //Mark user as paid attemptingRestorePurchase = false //stop loading indicator } else { if networkMonitor.isConnected { // Alert toggle - checks internet connection attemptingRestorePurchase = false // stop loading indicator restorePurchaseError.toggle() // Alert toggle - Restore not successful } else {
Hello, I have some issues with the app review.I have tested it using an android and iOS simulators and I can fetch the entitlements without any issue, I can see the description, price etc and the subscription works.However after installing the app through the TestFlight application, when I fetch the entitlements, I only see the price.Any idea why could this happen?Thanks
Revenuecat team: Thank you for providing such a good service.ConditionSDK: react-native-purchases@^4.5.2: version "4.5.3" Restore setting: Block RestoreSDK login timing: at App initializing and before purchaseRuns restorePurchase internally before makePurchase to check if product is already purchased by different Member. (Shows message to re-login by purchased member)UsecaseiPhone user (App ID = X)log in to app as Member: A=app_user_id. Then purchase Monthly subscription. User log out Member: A. User log in as Member: B. User Try to purchase Monthly subscription (internally runs restore for checking before purchase), “Receipt already in use” error occurs and prevent Member: B from purchasing. This behavior is as we expected. But after above, When User try to purchase again as Member: B( internally runs restore for checking before purchase), this time “Receipt already in use” does not occur goes through restorePurchase and "Product already purchased" occurs AND SDK's APP_USER_ID IS C
I have the following issue:My app requires being logged in, otherwise I don’t make use of the RevenueCat SDK, meaning that when I init() the Purchases I always provide the userID. When the user logs out, I also call the logOut() method in the SDK.If I make a purchase with account A, then log out, create a new account B and make a new purchase, on iOS at least I get a pop up saying the I am already subscribed and no matter if I press Manage or OK, the SDK will return that I have an active entitlement and make the account B premium.This is really bad, since with one account you could create multiple accounts that automatically will get the premium status.Am I doing something wrong? Is this just happening when I use the simulator with the StoreKit? I don’t want to have this behaviour in production.Thanks!
Hi, I’ve configured Free Trial offer on both Monthly and Yearly Plans in Google Play Store.The free trial (14 days) shows up in payment sheet incase of Yearly plans, but not incase of Monthly plans.The configuration is exactly the same in both monthly and yearly subscriptions and when I fetch the product info I get the following object - {…,freeTrialPeriod:”P2W”,...} in Logcat. Following the eligibility criteria - I fetch all entitlements and allPurchasedProductIdentifiers to make sure that user has not subscribed to the plan beforehand So, I’m not sure why its not reflecting in pay sheet only in case of monthly plans.Any help regarding this topic will be appreciated.
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.