Get help with your SDK implementation.
Recently active
Most all of my subscription after trial activation go into Payment pending and are stuck there while my subscriptions stay active, over time they auto cancel for billing error.I am having the same issue but despite of checking for acknowledgement on the next app startup, the payment is still pending.RevenueCat(s), can I somehow manually call the Google billing api to send the ack back to the Google billing system? Does RevenueCat offer a call that I can make via the API or SDK? I saw this but it is not answering my question
Hi All,Trying to publish an app and got the following:Unsafe EncryptionYour app contains unsafe cryptographic encryption patterns. Please see this Google Help Center article for details. p0.e0.c Unfortunately got nothing else, no email, so just have to guess what code its refering to. Best guess is the key used to configure revenuecat for in-app purchase.configuration = PurchaseConfiguration('goog_********************************');They suggest using Jetpack (https://support.google.com/faqs/answer/9450925)I am however struggling to implement this in flutter. Does anyone have any example code/articles etc that could help?I suspect this will impact all apps that use a key within the app like revenuecat.Thanks
Hey guys! I would like to share a problem to get some help.I have an app with Expo and I'm trying to integrate RevenueCat with the react-native-purchases lib. I'm not experiencing any problems with iOS, but when trying to get the products that have already been imported into the RevenueCat console and are active on the Google Play Console, I'm getting the error message: "The device or user is not allowed to make the purchase. "PS: I'm getting this error in production and I'm trying to get the products with "getProducts" as in the documentation.Thanks in advance for any help!
Question on the use of originalApplicationVersion to determine if I should grandfather certain users into a free subscription.The docs say:The first date this entitlement was purchased. May be the same as the latest purchase date.Now, what if the app was previously purchased on the Apple App Store (iOS), not using RevenueCat and entitlements? I’ve only added RevenueCat in the most recent version, which has not yet gone live on the App Store. Will originalApplicationVersion still be populated with the correct build number when the user first purchased the app even if it was originally purchased without RevenueCat? (Also, that build number is in fact the build number, and not the version number, as in version 3.0 build 1234, correct?)
I follow the documents https://www.revenuecat.com/docs/reactnative#option-1-react-native-packageto install the package react-native-purchases.When I run the project on Xcode I got the errors: Has anyone experienced that problem?
My Flutter app crashed when get offerings. I use purchases_flutter: ^4.11.1Error:My Code;
Hi.I’m using iOS SDK.How often does CustomerInfo update from network (vs cache)? Can I influence the update frequency? Can I force a network update?Many thanks,
I’m upgrading an existing paid app to a yearly subscription model, and have followed this guide: https://www.revenuecat.com/blog/converting-a-paid-ios-app-to-subscriptionsand got everything set up within my app, tested it using a sandbox, and made sure that the entitlements are working ok when I subscribe.One thing I’m unsure about is that I want existing users (those with v1 of the app) to get a year’s free subscription, and then after that, have them go onto a reoccuring subscription.In RevenueCat, I’ve set up a package that has full access with a 14 day free trial (called “full”). I’m calling this code:func syncReceipts (completion: ((Purchases.PurchaserInfo?) -> Void)? = nil) { CompatibilityAccessManager.shared.syncReceiptIfNeededAndRegister( entitlements: [.init(entitlement: RevenueCat.Entitlements.full.rawValue, compatibleVersions:["1.0","1.0.1","1.0.2","1.1"])], completion: completion ) }func checkAccess(result: @escaping ((_ isActive: B
I have similar question like this one herehttps://github.com/RevenueCat/purchases-android/issues/82When using slow test card on Android in-app purchases all I get is purchase error with message='The payment is pending.'. Is there a way to get notified when transaction has been completed? If not, what options do we have, we can iterate through purchaserInfo.nonSubscriptionTransactions to get all in-app purchase?
Hello, i came across a weird behavior using the offer code with url redirecting to app storeEnvironment: TestflightI was charged for the offer, and when it clicked to open my app, nothing happened and revenue cat did not track the purchaseI already call sync purchases when the user returns back to the appI was wondering if there is a time where the offer code redemption is not active yet and i call sync purchases in that time, or that maybe testflight does not track purchases, but i got charged, which is weird
I have a mobile app ready to go using RevenueCat, I want to hook up a web equivalent of checkout. I can see a guide on how to connect stripe, but purchasing isn’t the only thing RevenueCat is concerned with, what about getting user entitlements? I can do something like: const res = await fetch( `https://api.revenuecat.com/v1/subscribers/${user.id}`, { headers: { 'Authorization': `Bearer ${'appl_x'}`, 'Content-Type': `application/json`, 'X-Platform': 'ios', 'accept': 'application/json', }, },) .then((res) => res.json()) .then((res) => { const entitlements: Record<string, PurchasesEntitlementInfo> = {} if (res?.subscriber?.entitlements) { Object.keys(res.subscriber.entitlements).map((v: string) => { const value = res.subscriber.entitlements[v] const activeSubscription = res.subscriber.subscriptions?.[value.product_identifier] entitlements[v] = { expirationDate: value.expires_date,
I’m trying to download the IAP Key file, but it opens in a new browser tab. If I copy the key to a file and upload, it’s rejected for having the wrong file name. I need to know (1) What should the name of the file be, or (2) How to download the file instead of opening in the browser.
If I call ‘restorePurchasesWith’ and there are no purchases to restore, I see an error out of the google billing wrapper: “Error acknowledging purchase. Will retry next queryPurchases. DebugMessage: Item is not owned by the user.. ErrorCode: ITEM_NOT_OWNED.” But this error does not bubble out of the wrapper up to the error handler provided to the ‘restorePurchasesWith’ call. How can I tell if restore fails in this manner.
Hi, we’ve been able to get IAP working on Google and Apple, but are stuck on Amazon:We have Amazon App Tester set up with the .JSON file for our IAP products coming up as per the Amazon documentation. Making a purchase however, does nothing. I’m monitoring the trackers and RevenueCat is called as with the other two platforms. There’s is just no purchase pop-up.Debug Logcat gives me this:AbstractCommandTask: On Exception!!!!: com.amazon.a.a.o.b.a.a: DATA_AUTH_KEY_LOAD_FAILURE: CERT_NOT_FOUND: nullSimpleTaskPipeline: KIWI_COMMAND: Task finished executing: com.amazon.a.a.f.b@808d4c4Unable to start service Intent { cmp=com.amazon.mShop.android.shopping/com.amazon.mls.config.internal.sushi.uploader.BackupUploaderService } U=10: not foundError executing JobStatus{24cb9cd #u10a478/426136249 com.amazon.mShop.android.shopping/com.amazon.mls.config.internal.sushi.uploader.BackupUploaderService u=10 s=1010478 TIME=-18h7m43s58ms:-16h59m54s716ms NET PERIODIC READY}From what (very little) I could fi
Hi,I have been sandbox testing for a while with the same sandbox user. Though when I used another sandbox user I ran into the error “There was an unknown backend error. The subscriber has reached the max number of Apple receipts allowed (7636). Then I cleared all sandbox users purchase history in App Store Connect, but ran into the same error when trying to subscribe with the new user. Though I could make a subscription using the original sandbox tester. My next move was to delete the original sandbox user in App Store Connect, but I still ran in to the same error (7636) when using a new sandbox tester. But the new sandbox users had a subscription, as I could see in App Store on the test device. After reinstalling the app and restoring the new sandbox users subscription the app worked as intended.So my questions are:Is the error originating from RevenueCats backend or App Store?Can you clear the sandbox purchase history in RevenueCat?I realise it is highly unlikely to run into thi
I’m trying to delete a user as part of a UI test flow and I’m using this API - https://www.revenuecat.com/reference/delete-subscriberAfter entering my V1 api secret token and the user I want to delete’s ID, I get the following bas script curl --request DELETE \ --url https://api.revenuecat.com/v1/subscribers/my-user-id \ --header 'accept: application/json' \ --header 'authorization: Bearer sk_token' This however returns just {"code":7227,"message":"Content-Type not application/json"} My token is for V1 of the API and the user id is right, I’m not passing in any JSON. Why am I getting this error?
We are hitting the same issues many others on this forum are seeing with multiple App Store rejections trying to get our new app approved. We are on submission #8. Everything works fine for us in Sandbox (and XCode) testing across multiple devices over multiple weeks. We get successful purchases that show up in the RevenueCat sandbox.The App Reviewer is getting the same error message on the multiple devices they are trying: Our code is Swift with min iOS 16 support. We are using v4.15.0 of the RevenueCat API (purchases-ios imported using Swift Package Manager)This error occurs after we call: Purchases.shared.purchase(package: package) In the above screenshot, the RevenueCat error is “Unknown error” with Code 0.The only useful part of the error message is “The receipt is missing”, which is coming from the localizedDescription of the underlyingError if let underlying = err.userInfo[NSUnderlyingErrorKey] as? Error{ errorToShow += underlying.localizedDescription} So far, we have be
Where can I find the RevenueCat SDK documentation in Objective-C? I’m not using Swift directly (though I link to several Swift libs) and I’m having a difficult time integrating without Objective-C docs.
Hello, we’ve recently implemented ios subscription offer codes, to give user a free trial for a certain amount of time. While testing the testflight version (ready to submit), and trying out those production offer codes, the user is redirected to the app store (https://www.revenuecat.com/docs/ios-subscription-offers) and purchases the subscription successfully...but when returning to the app it seams like RC does not catch that purchase and therefor user has no premium content access (I suppose RC does not receive the users track receipt and therefore can not send webhook for this event). We were being advised from your support to sync the user (call syncPurchases method before the user leaves the app and after the purchase (on foreground)), but I’ve came across the docs saying that we should not call sync purchases progammaticaly () so can you please expain how to use it the proper way inside our React Native app. thanks
Please assist as I am a bit lost:I am trying to wrap my head around upgrading and downgrading users, however I am not dure how to actuallky do this. I am aware the documents say: that you need to pass the UpgradeInfo object to either purchaseProduct or purchasePackageWhere do I get this UpgradeInfo ? I am using flutter.Applogies for the noob question.
We get a number of errors related to “Purchase already in progress for this product.” → is this an issue or does this just let us know that a user has tried to trigger a purchase twice?
We used to configure revenue cat like thisPurchases.configure({apiKey: XXX})And we changed it to thisPurchases.configure({apiKey: XXX, appUserID: ourAppUserId})I am not sure of what happend after this:Do all our users now have an alias, in this case greate. Or was a new user created for each user and we need to call syncPurchases In this case can we remerge them ? As we know that both users have the same deviceId
Hi Our app is using Revenue Cat’s Cordova Android Plugin (latest version) and even though everything works fine when deploying on the development mobile devices and also the purchases succeed (and pretty much any SDK/API interaction), when trying to publish the bundle we are getting the deprecation error (with link to https://developer.android.com/google/play/billing/deprecation-faq).Now, the com.google.android.play.billingclient.version is missing indeed from the AndroidManifest.xml and if I tried adding it manually and specifying 5.0.0 (just trial and error) it failed (merge error - so it seems to be trying to merge something!) and I finally ended up adding this line:<meta-data android:name="com.google.android.play.billingclient.version" android:value="4.1.0" />And it works! Google accepted our bundle, but I’d really like to get this fixed properly.Any suggestions?
I have a Flutter app running that uses the RevenueCat SDK. I install the app on my iPhone and make a purchase which utilizes the devices assigned Apple ID to track purchases.Thus works.Then, I assign a fresh unused AppStore sandbox userID in Settings/AppStore/SandboxAccount. When I run the app thru VSCode development tools, the Purchases.configure call accesses the RevenueCat cache for the device Apple ID. It does not recognize that the assignment of a Sandbox ID and running through the development tool invokes a different Apple ID and the cache is invalid. I am trying to use the fact that there is no RevenueCat customer entitlements for my app to recognize a new user, but the return of old invalid cached customer info for a different customer is making tis impossible. I tried using invalidateCache with this code, but it does not ignore the cache……. static Future<void> configure( ) async { if (Platform.isAndroid) { configuration = PurchasesConfiguration("public_google_
This piece of Swift codePurchases.shared.getCustomerInfo { [weak self] info, error in guard let info = info, error == nil else { return } if info.entitlements["monthly_access"]?.isActive == true {Is always returning isActive == true, even though the entitlement has expired.Since I have the original app user ID, I checked with the v1 API and this is what I get:{'request_date': '2023-04-19T09:03:03Z', 'request_date_ms': 1681894983925, 'subscriber': {'entitlements': {'monthly_access': {'expires_date': '2023-04-18T11:14:37Z', 'grace_period_expires_date': None, 'product_identifier': 'subscription_basic', 'purchase_date': '2023-03-18T11:14:37Z'}}, …As you can see the monthly_access exists but its expiration date is older than the current date so I would not expect this to return isActive trueThis is a big issue because it allows people to access the app even though they are not paying (I would say very essential feature of the SDK is to prevent people from accessing features they are n
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.