Discussion and help from anything related to RevenueCat.
Recently active
Hello, I want to be able to process subscriptions that come from App store promos.I found out that this method ‘addShouldPurchasePromoProductListener’ is should be able to process it, but I can’t find an example or doc of how to properly implement it. In my app users have to sign up first before using an app, so what if they click on that promo in the appstore before signing up, what should be the app behavior and method implementation in such case?
Following the documentation instructions located here on this RevenueCat “checking-if-a-user-is-subscribed” page i’ve been unable to async verify is a user is already subscribed. My code is as follows:```const checkIfPurchased = async () => {try {await Purchases.configure({ apiKey: APIKeys.apple });await Purchases.syncPurchases();const customerInfo = await Purchases.getCustomerInfo();const ENTITLEMENT_ID = 'app_199_1m';if (typeof customerInfo.entitlements.active[ENTITLEMENT_ID] !== 'undefined') {setSubscription(true);}return user?.subscription;} catch (e) {Bugsnag.notify(`Error checkIfPurchased(): ${e}`);}};this does not work. I get undefined for customerInfo.entitlements.active[ENTITLEMENT_ID] . What am I missing?
why the free trail is not shown in my react native app but i was saw this in testing not in production.even the introPrice variable is null but in google play subscription my monthly plan has free trial
Here's an overview of my system:My app requests a new user ID from my backend. It uses the obtained ID by passing it to the Purchases.logIn() method.When I get the original user ID from the customer info given from the login callback, it sets the original userid (UID) into its app data. Turns out when I wipe out the app data and repeat the process, the getOriginalid() method returns the same newly regenerated ID used during relogin instead of returning a different id; not considering that the same google account is logged in.I also tried changing the transfer behavior in the Dashboard, but to no avail. I want my app to obtain the original id, even when app data is reset Is there any real way that I can ensure the same user is logging in, even when App data is compromised?
Hi, I have a problem with case: One user with unique App User IDs logged to app on device A (Google Play Account A@gmail.com) and bought subscription. Then user is logging to app on device (B) (Google Play Account B@gmail.com) and see subscription in app → It’s working as expect. But app has option to upgrade or downgrade subscription and if user is logged on device (B) it is possible upgrade/downgrade plan and then two Google Play account have subscription. This is code to get current subscription ID and available subscription list for upgrade/downgrade Purchases.sharedInstance.getCustomerInfoWith({ error -> onError.invoke(error) }, { customerInfo -> val entitlement = customerInfo.entitlements[REVENUECAT_SUBSCRIPTION_ENTITLEMENTS] Purchases.sharedInstance.getOfferingsWith({ error -> onError.invoke(error) }, { offerings -> onSuccess.invoke(offerings.current?.availablePackages?.filter { it.pr
ContextFlutter base app with Revenue Cat support for store in-app items payments. Developed for Android and iOS. Currently in beta access on Play Store for mainly use in Singapore area.ProblemWhen a user attempts to buy a one-time in-app item on Android devices. We catch the following exception.PlatformException(3, The device or user is not allowed to make the purchase., {code: 3,message: The device or user is not allowed to make the purchase., readableErrorCode:PurchaseNotAllowedError, readable_error_code: PurchaseNotAllowedError,underlyingErrorMessage: Error updating purchases. DebugMessage: . ErrorCode: 3.,userCancelled: false}, null)Although we have our in-app item active in Play Store Console, Ids are synced between Play Store and Revenue Cat, our Play Store profile is set to receive payments, and, we already had payments succeed before. On iOS we have no issues on this matter. Every purchase completes normally.Example of a refused payment : Based on our search, and after a respon
I add a free trial offer to an existing base plan, which is been online for a few months. But I cannot get free trial data from SDK. Using code below:val freeTrialOffer = packageItem.product.subscriptionOptions?.freeTrialI have checked this answer below:I use a new device with an account never subscribe any plan before. The free trial offer eligibility criteria is Developer determined.
I am using Revenue Cat to set up in app purchases in my React Native app. I want to build an API that extends the susbcription renewal date using the App Store Server API for my iOS users. This is the PUT API call:https://api.storekit.itunes.apple.com/inApps/v1/subscriptions/extend/{originalTransactionId}The path parameter includes the originalTransactionId (required, the original transaction identifier of the subscription receiving a renewal date extension). However, I am unable to find the originalTransactionId on Revenue Cat.Here is the Apple documentation: https://developer.apple.com/documentation/appstoreserverapi/extend_a_subscription_renewal_dateHow do I find the originalTransactionId?
Hey,I’m formatting price strings that are returned from RevenueCat (localizedPriceString) in my iOS build but I also need access to the users app store region code to format the currency to and from a floating point number while keeping the correct currency formatting before and after.The number formatter in xcode uses either ‘Locale.current’ (which the user can change in the phone settings leading to possible incorrect formatting) or a manually specified region code. I need the app store region code to ensure the values that I format are returned in the correct currency format.Is there anyway RC can supply this?Cheers,Matt.
I’ve set up a synced StoreKit Configuration file for my app. On simulators it fetches all the offerings without a hitch, but when running on device it doesn’t. Is this a known limitation or is there something I’ve missed?
Hi there, I’m using this script to connect a stripe subscription to a RC User ID (aka posting receipts):curl -X POST \ https://api.revenuecat.com/v1/receipts \ -H 'Content-Type: application/json' \ -H 'X-Platform: stripe' \ -H 'Authorization: Bearer YOUR_REVENUECAT_STRIPE_APP_PUBLIC_API_KEY' \ -d '{ "app_user_id": "my_app_user_id", "fetch_token": "sub_xxxxxxxxxx" }'Sometimes I make a mistake and then delete the RC customer, so I can reconnect them again. But now I’m running into various issues.First, after deleting in RC, I still can’t post the receipt to another RC User ID. I get a "Failed: Bad Request" response.Second, even after deletion, I still see the user ID in Stripe (I’m using the RC plugin in Stripe to open the customer page on the right). So the user is after all not really deleted, what would the failed request explain.After deleting I can’t find the customer anymore in the RC UI though.Also, the original user ID didn’t have the entitlement although the stripe purcha
My revenue cat dashboard is not showing the in app purchases from last 3 days and all the purchases are getting refunded automatically. Is this happening with anyone else?
Hi there, we are setting up some products using the new Google Play subscription structure and I was reviewing the RC docs to get some help with naming, however there are a few things that I think might be incorrect. The docs say the following:Click "Add base plan" and fill out the associated fields. Make sure to set a price, and click "Activate". Since subscription products can only have a single base plan with the same duration and renewal type, a good way to name base plans could be <duration>_<renewaltype>, eg. annual_autorenewing. In Google Play I am able to create multiple base plans with the same duration and renewal type and successfully import them into RC as products. Am I missing something there? Base plan ids do not seem to allow underscore and so the suggested naming convention won’t work. I just wanted to confirm if these are issues in the docs or whether I am misunderstanding something fundamentally 😅. Many thanks,Lydia
In React Native, react-native-iap was used well.But this time, I want to add payment by changing to expo.I don't use google cloud.There were problems from the first.That solution seems too difficult.https://www.revenuecat.com/docs/creating-play-service-credentials I have “no link an exists google cloud project”.
Hey,I am currently working on implementing Offers and Discounts into my paywall for flutter, and I'd appreciate assistance with a couple of issues I've encountered.Firstly, everything appears to be working as expected for the AppStore. When I inspect the StoreProduct object, I can see that both the introductoryPrice and discounts fields correctly reflect my setup on AppStore Connect. However, the situation is different for Android/GooglePlay. It seems that only the introductoryPrice is being set, and the discounts field remains empty. Can you confirm if my assumption is correct, and Android never populates the discounts field since the PlayStore does not offer that capability?Secondly, I am a bit confused about how to handle purchases of a Package using discounts and intro prices. On iOS, I successfully used the method Purchases.purchaseDiscountedPackage to buy a package using the StoreProductDiscount. However, I'm unsure how to make a purchase at the introductoryPrice. Could you pleas
I have created an application that allows users to try the application feature without attaching the credit card details. Is there any way from revenue cat to try the application for free for a few days without attaching a credit card?
I occasionally get an error when fetching offerings. This doesn’t only occur in debug but on the production build as well:2022-11-09 16:03:23.930001-0500 MyApp[39824:849629] [Purchases] - DEBUG: ℹ️ API request started: GET /v1/subscribers/$RCAnonymousID:841e99c6a78a4a14b3c78cfd9b256d73/offerings2022-11-09 16:03:24.005633-0500 MyApp[39824:849650] ATS failed system trust2022-11-09 16:03:24.005682-0500 MyApp[39824:849650] Connection 11: system TLS Trust evaluation failed(-9802)2022-11-09 16:03:24.005738-0500 MyApp[39824:849650] Connection 11: TLS Trust encountered error 3:-98022022-11-09 16:03:24.005770-0500 MyApp[39824:849650] Connection 11: encountered error(3:-9802)2022-11-09 16:03:24.006350-0500 MyApp[39824:849650] Task <CF90CCFF-F001-4DE9-BB4F-1ECE50D343C9>.<4> HTTP load failed, 0/0 bytes (error code: -1200 [3:-9802])2022-11-09 16:03:24.006618-0500 MyApp[39824:849634] Task <CF90CCFF-F001-4DE9-BB4F-1ECE50D343C9>.<4> finished with error [-1200] Error Domain=NSUR
Hi there!How is trial_period calculated in `/v2/products/` endpoint?1) We have a subscription with an offer in PlayStore with the Eligibility criteria type: Developer determined and the only Free Trial phase, but the data for this subscription does not match the expected values:"subscription": { "duration": "P1Y", "grace_period_duration": "P14D", "trial_duration": null} 2) For AppStore subscriptions, there is no data available at all:"subscription": { "duration": null, "grace_period_duration": null, "trial_duration": null}, even though the subscription has an Introductory Offer with a zero price.
Is there an ETA on when the `purchases-unity` package might be updated to add support for the newer-style Android subscription configurations? My team is getting ready to implement subscriptions for the Android SKU of our Unity app, and I’d rather not redo it all from scratch in a few weeks. :)
When is the update for Google Play Billing Library 5 planned for the Unity wrapper? It seems that the included Android version of RC is a major version behind.Unity wrapper: Android 5.8.2Native Android: 6.5.0
We are in the process of migrating old subscriptions to revenuecat and will do this as we release a new version of our app. We will use the receipts API to migrate all old receipts and I think the documentation is clear it can be used for this.My concern is regarding new purchases of users on the old version of the app, when we have also released the new version. The purchases on the old version will go to our backend and in the old version they would be forwarded and acknowledged straight to google play API, but since we’re moving to revenuecat we would instead like to directly forward the purchase token to revenuecat, and not have to bother with the acknowledging.Will RC acknowledge tokens sent via this API or do RC only acknowledge tokens sent directly from google pub/sub to RC?Should I forward these new purchases at all or just wait for RC to get the message from google pub/sub? Thanks
Kochava is a very useful attribution and measurement platform.https://www.kochava.com/Are there any plans on supporting them as an integration?
I use this code to check the subscription status. Purchases.shared.getCustomerInfo { (customerInfo, error) in self.isSubcriptionActive = customerInfo?.entitlements.all["All Access"]?.isActive == true }When I start the app, the status of the subscription is false (it’s normal) but it goes to true by its own when a view is loaded (no subscription process launched)RenenueCat returns no error and in revenuecat no record appears in the RevenueCat sandbox.Between the subscription state not active and active, please find the debug text :DEBUG: ℹ️ API request completed: GET /v1/subscribers/MyAPP_App (304)XXXXXXX [customer] DEBUG: ℹ️ Sending latest CustomerInfo to delegate.XXXXXXX [customer] DEBUG: 😻 CustomerInfo updated from network.XXXXXXXXX [eligibility] DEBUG: ℹ️ Detected active subscriptions changed. Clearing trial or intro eligibility cache.XXXXXXXXX [network] DEBUG: ℹ️ GetCustomerInfoOperation: FinishedXXXXXXXXX] [offline_entitlements] DEBUG: ℹ️ PurchasedProducts
See the link https://developer.apple.com/app-store/promoting-in-app-purchases/Also in app store:App Store Promotion (Optional)To promote this subscription on the App Store, add a 1024 x 1024 pixel promotional image below. It'll appear on your app's product page and when a customer redeems an offer code. Promotional images may also appear in search results or be featured by the editorial team. You can promote up to 20 in-app purchases at a time. Make sure your app supports either PurchaseIntent or paymentQueue(_:shouldAddStorePayment:for:). Learn MoreFound that it is possible with native code.But on react-native sdk i don’t know is it possible if not want to feature request. Thanks.from a different library solution does revenuecat have this ?https://github.com/iaphub/react-native-iaphub#onbuyrequest---event-triggered-when-a-purchase-intent-is-made-from-outside-the-app-like-a-promoted-in-app-purchaseedit:i found that flutter sdk andreact-native handles this problem via addShouldPurchaseP
I have Apple/Google Notifications linked to RevCat. Every time a user’s subscription is renewed, paused, cancelled, etc, I would like to send/sync that info to the same userId in the RealTimeDatabase, eg. db schema// anyone under the users ref isn't anonymoususers -userID_123 // whenever this user’s subscription is renewed/cancelled I need this node to receive the update with the accompanying subscription data I looked at Firebase Integration Docs and it only mentions Cloud FireStore. I went to the Firebase console > Extensions > RevenueCat and it only says that it supports FireStore. I don't use FireStore for my backend, I only use RTDB. 1- How can I sync these subscription updates to the RealTimeDatabase?2- Do you have any links on how to do it with specific subscription data, for example, I only need the renewal and cancellation dates, I don't need all of the other info. I’ve googled around and can't find anything.
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.