Discussion and help from anything related to RevenueCat.
Recently active
Hello, I’m trying to import the enum PERIOD_UNIT from the package in a Ionic App but it’s always undefined. import Purchases, { PACKAGE_TYPE, PERIOD_UNIT, Period, PurchasesOfferings } from 'cordova-plugin-purchases/www/plugin';Yet, no problem with PACKAGE_TYPE or some other. An idea why ?
For our Stripe integration, we are currently sending the token over to RevenueCat (RC) when we receive the customer.subscription.created event, as instructed in the documentation here.However, as far as we can tell, when this event fires, Stripe hasn't necessarily completed processing the transaction/payment and therefore RC immediately receives a BILLING_ISSUE and CANCELLATION event from Stripe, which is what we are seeing in the "Customer History" for users. From a quick test, if we delay the POST to RC with the token by even a couple of seconds, we successfully receive the subscription and do not receive the issues mentioned above because (presumably) Stripe has finished the processing on its side by that point.Example user: My question is, should we instead be listening for the customer.subscription.updated and POSTing to RC at this time? It seems like customer.subscription.updated fires a couple of seconds after .created once Stripe has done a bit more processing, which I believe
Hey, I'm using RevenueCat’s SDK on my Flutter app. I want to enable purchases in my app for a physical service. The user can order service, but I want to charge only after an employee of my company accepts the order. If my employee rejects the order, then I don't want to charge the user. Otherwise, I can charge the user upon ordering, but then if my employee rejects it, I'll cancel the purchase and give the user his money back.Are any of the options available? I cannot find it in the docs. I want to charge the user using the App Store and Google Play.
I’ve setup my payments with various subscriptions in Play and Apple store. All working fine. I need to however change the description that is displayed in my payall. I am using flutter and get offering fromofferings = await Purchases.getOfferings();I cannot see where, I can update the description of each offering? Is this in revenue cat, or the app store(s).. eitherway I can’t see where to set it?
Hi, We’re trying to set up Stripe for web payments.According to the documentation, we need to send with the RC API a POST request with the following parameters: subscription ID and the app user id. The subscription id is the id we get when creating the subscription with Stripe starting with `sub_` correct?For the app user id, the documentation says:the Purchases SDK needs to be configured with the same App User ID associated with the Stripe subscription.Does that mean we have to pass the customer id from the Stripe transaction or it can be any id?
Title should have been: Close Button Not Visible on AndroidIn my code, I have explicitly set displayCloseButton: true when calling the presentPaywallIfNeeded function. The close button is shown successfully on iOS with the teal color. However, on Android, it is not visible at all. I am using: “expo”: “49.0.17”,"react-native": "0.72.6","react-native-purchases": "7.21.0","react-native-purchases-ui": "7.21.0", See example:
Apologies if this post isn't directly related to RevenueCat. I'm aware that this community is highly interested in matters related to Google Billing, so I'd like to seek your valuable input on the following topic.Ever since the introduction of Google Play Billing Library 5, a concept of a 'base plan' has been included in Subscriptions.A single subscription can have multiple base plans. These base plans can be set up for either monthly or yearly billing.Currently, we have an existing monthly subscription plan.If we want to introduce a yearly subscription plan, here's what we need to consider."Add base plan" in existing subscription plan. Use ProductDetails to perform subscription. However, our legacy code haven't adopted ProductDetails. We are still using legacy SkuDetailsI was wondering, is it OK for us toAdd a completely new subscription plan for the yearly plan. Continue to use legacy SkuDetails to perform subscription.Is there any shortcoming, or pitfall for doing so?Thanks.
Hello? First, I would like to thank you for your hard work. Thanks to Revenue Cat, we are able to make our payment flow more efficient. Thank you.I am working on synchronizing user subscription statuses using Revenue Cat's SDK and Web Hook. While working, I have some questions regarding the following:During the App's Life Cycle, when CustomerInfo changes, what is the relationship between the timing of this change and the timing when the WebHook event sends a request to the backend server? Is there no guarantee that the request for the WebHook event is sent before the CustomerInfo is updated? If there is no relationship between them, how can we manage the user's subscription status with the database? Users can purchase products both <1> during the app's life cycle and <2> outside of the app's life cycle, with the latter case being when they can directly change their subscription products. How does Revenue Cat detect subscription-related actions initiated by users in scenari
I want to have a lifetime free premium offer for me and contributors. Instead of creating my own backend for this, I want to use RevenueCat as well.In AppStoreConnect, the longest subscription I can offer for free is one year, which is not sufficient.Therefor I made a non-consumable in AppStoreConnect and connected it to RevenueCat.I will implement my own logic to manage which promoCode is valid for a free lifetime subscription.I have the following two questions: Can I reliably hide this non-consumable from those who are not meant to see it? In AppStoreConnect there is no way to add logic to who can see it, so does that mean if I simply never show it in my app, nobody can access it? Because I know that for subscriptions, when going to cancel in the apple settings, one can see multiple offers, and I don’t want this non-consumable to show up in any place unless with my dedicated UI for it. Is the following implementation something that would work for what I’m trying to do? Get promo co
On my React-Native app, which is configured with RC, tested and working completely fine on development builds and .apk installations, the purchased subscriptions expire after 5 minutes and do not auto-renew with revenuecat.Also, if you try to purchase the item again google play store throws an error indicating the user is already subscribed. Strangely, the issue only arises in closed testing signed .aab build from the google play console. On .apk’s and dev-builds the subscriptions auto-renew without any issues, and the “active” array remains with the purchased subscription. The issue seems to be on the side of the revenuecat api, which for some reason returns an empty “active” array after the 5 minutes have expired on the production builds. Is this expected behaviour in .aab build/closed testing environments? Apologies if that’s the case, I’ve been looking at the documentations and forum posts, there doesn’t seem to be anything written about this. Below are the screenshots of the app,
Hi, I’m looking into migrating from my in-app purchase code to Rev Cat. I currently only have consumable and non-consumable products. I’m looking to add a subscription and figured I’d give this a try. I’m a bit confused on how to migrate my existing non-consumable items to rev cat.. or do I just use rev cat for the subscription only?I’ve added a few of my non-consumable items to rev cat and they are showing up via the api in my app.. but rev cat doesn’t know they have been purchased. I did try:[RCPurchases.sharedPurchases syncPurchasesWithCompletion:^(RCCustomerInfo *customerInfo , NSError *error) { NSLog(@"Synced! %@ %@",customerInfo, error);}]; And I get an error “The receipt is missing” So my guess is this is only looking for subscriptions? So I’m wondering if I know that someone has purchased a non-consumable via my existing in-app code, can I send a command to rev cat to register that they have purchased it? Should I need to do that or would rev cat be able to commun
Is there some reason why app provided user IDs don’t alias to one another like anonymous IDs do? (I seein the chart on this page: https://www.revenuecat.com/docs/user-ids only anonymous ids will alias, not app provided ids) I want to transfer our existing billing data to RevenueCat, we give each user a user ID e.g. user1234 however this is stored locally, so if the user delete/reinstall the app they will get a new user ID e.g. user5678. In order to migrate all our data and port over our iOS code I need to:Add a hook in our backend code so all new purchases are sent to RevenueCatOnce that is in production then I can:Run a script that loops through all of the records in our DB and inserts them into RC When running step2 if the same user has multiple userIDs associated with them due to delete/re-install this will be fine because I will iterate from oldest to newest, so the newest userid will get all the purchases transferred to them by RC. However … running step2 that calls the /receipt e
Why Google play test time is 5 minutes but Revenuecat test time is 7 minutes?
Hi I’m having issues upgrading to react-native-purchases version v5.1.0. When I build from command line, I get the following error: 2022-10-11 16:17:22.601 xcodebuild[26352:116860] Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionPointIdentifierToBundleIdentifier for extension Xcode.DebuggerFoundation.AppExtensionToBundleIdentifierMap.watchOS of plug-in com.apple.dt.IDEWatchSupportCore Is this expected? Does this version require xcode 14?
Hi there,I am working on testing my implementing of RC into my app but I am having issues with migration.The previous version of my app had a one time in-app purchase, while the new version of my app is going to have subscriptions.The problem occurs when migrating from the old version of app without RC to the new version of the app with RC: If I do a clean install of the new version of my app, everything works. but If I stall the new version over my old as my users would. It throws an error. My suspicion of the issue is that RC has no user id to check, but I expect it to create an anonymous id until the user signs in a later point, but I don’t know for sure because the error is not specific enough. Any advice or suggestion?
Does revenueCat SDk qualify for any exemptions provided in category 5 part 2 of the US export administation regulations? I’m getting asked this in App Store Connect, it also says:You can select Yes for this question if the encryption of your app is:(a) Specially designed for medical end-use(b) Limited to intellectual property and copyright protection(c) Limited to authentication, digital signature, or the decryption of data or files(d) Specially designed and limited for banking use or “money transactions”; or(e) Limited to “fixed” data compression or coding techniques Thank You,Jamie
Crashes on iPhone5 (iOS 12.5.4).It runs fine on iPhone13 Pro MAX, iPhoneXS MAX, iPhoneSE, etc.Is 32-bit CPU unsupported?Start from Xcode.[RCPurchases configureWithAPIKey:@"public_sdk_key"];It crashes on the above line.#1 abort_with_payload_wrapper_internal#2 abort_with_payload#3 dyld::halt(char const*)#4 fastBindLazySymbol(ImageLoader**, unsigned long)#5 dyld_stub_binder#6 type metadata accessor for @MainActor @Sendable ()
Puchase was succssful via react-native-purchases in Adroid, but there is no response in promise “await Purchases.purchasePackage(purchasePackage)”Please kindly guide how to solve this problem. Thx!Screenshot:Code:import Purchases from 'react-native-purchases';const PackageItem = ({ purchasePackage, setIsPurchasing }) => { const { product: { title, description, priceString }, } = purchasePackage; const navigation = useNavigation(); const onSelection = async () => { setIsPurchasing(true); try { console.log( '************* Before await Purchases.purchasePackage(purchasePackage) purchasePackage is :', purchasePackage, ); const { purchaserInfo } = await Purchases.purchasePackage(purchasePackage); console.log( '************* After await Purchases.purchasePackage(purchasePackage), purchaserInfo is :', purchaserInfo, ); if (typeof purchaserInfo.customerInfo.entitlements.active.my_entitlement_identifier !== 'undefined'
Hello. I always get same error. My real device: iPhone 11 Pro, official iOS 16.0. I setup sandbox account and confirmed it. Beta version of Xcode (version 14.0). I did everything that your partner Chris showed in the video (https://www.youtube.com/watch?v=11A0hUjbCb4).
From what I can tell, (here and here), `purchaseProduct` should execute a callback upon completion, but I can’t seem to get it to fire. The transaction goes through and the purchase is made with no issues/errors, but the callback i would expect - those console logs (in the example below) - never go through.I saw this post from a month ago where it was mentioned that there’s an issue with the purchaseProduct method, are these related?Thanks Purchases.purchaseProduct(plan.identifier, ({ productIdentifier, customerInfo }) => { console.log("productIdentifier:", productIdentifier); // does not call console.log("customerInfo:", customerInfo); // does not call }, ({ error, userCancelled }) => { console.log("error:", error); // does not call console.log("userCancelled:", userCancelled) // does not call }, null);
I have seen that there is a DocC generated website for documentation. Is it possible to get the generated content also in the Documentation window of xcode(like when docs are generated inside the project, for the project)? Thanks!
Hello,There have been some similar reports about GetOfferings callback not being called on Fire OS (and some other on Android and iOS, but looks like iOS one has been fixes). I’ve setup everything and was able to get my offering for Android. When I setup the app for Amazon Store the GetOfferings doesn’t call the callback (neither success nor error). I’ve tried the other offerings API that registers a listener, but that one is also not firing events.Here are the logs of the call:DEBUG: ℹ️ Debug logging enabledDEBUG: ℹ️ SDK Version - 5.6.0DEBUG: 👤 Initial App User ID - nullDEBUG: 👤 Identifying App User ID: $RCAnonymousID:602c1ecc192b4d6b9bf2d776a95b0564DEBUG: ℹ️ Deleting old synced subscriber attributes that don't belong to $RCAnonymousID:602c1ecc192b4d6b9bf2d776a95b0564DEBUG: ℹ️ No cached Offerings, fetching from networkDEBUG: ℹ️ App foregroundedDEBUG: ℹ️ CustomerInfo cache is stale, updating from network in foreground.DEBUG: Retrieving customer info with policy: FETCH_CURRENTDEBUG: ℹ
I have two products (weekly, monthly) and two entitlement attached to them. In sandbox, when I purchase the first weekly, the entitlement is right. But when I upgrade to the monthly when weekly entitlement is active, active entitlement seems to be be still the weekly. I expect it to entitled to only monthly. Upon purchase of monthly debug logs show the purchased product as monthly but I can’t get its entitlement as active entitlement.purchaseInfo.entitlements.active seems to have only one entitlement and it’s weekly. The product definitions are in the same subscription group. The sandbox data also shows the latest purchase as weekly and user’s entitlement to monthly. What could be the problem here?I’m checking it like shown below: Purchases.shared.purchase(package:selectedPackage) { transaction, purchaseInfo, error, userCancelled in if let error = error { print(error.localizedDescription) self.purchaseFailed(purchaseInfo, error, userCanc
"await Purchases.restorePurchases();" it gives this error "allowSharingPlayStoreAccount is set to false and restorePurchases has been called. This will 'alias' any app user id's sharing the same receipt. Are you sure you want to do this? More info here". ****(General - Restore behavior: selected Transfer purchases)****Why this method gives this error?
I am trying to implement the IAP in the Amazon Appstore. I am doing the setup just like the docs says: await purchases.Purchases.setDebugLogsEnabled(kDebugMode); purchases.PurchasesConfiguration? configuration; if (Platform.isAndroid) { configuration = purchases.PurchasesConfiguration('goog_key'); if (storeHelper.store == Store.amazonAppStore) { configuration = purchases.AmazonConfiguration('amzn_key'); } } else if (Platform.isIOS) { configuration = purchases.PurchasesConfiguration('appl_key'); } if (configuration != null) { await purchases.Purchases.configure(configuration); await premiumService.load(); } When I call Purchases.getOfferings() the call hangs. The native side does not respond to the Dart call. I am reproducing this issue launching in debug and when download from the Live Testing service. I am using purchases_flutter 4.2.1 I am executing adb shell setprop debug.amazon.sandboxmode debug Tested in a Samsung device w
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.