RevenueCat / RevenueCat/react-native-purchases
Transaction Identifiers do not match in Sandbox for iOS
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 1.2k
- Forks
- 117
- Avg merge
- 14h 40m
- Merged PRs (30d)
- 40
Description
- I have updated Purchases SDK to the latest version
- I have read the Contribution Guidelines
- I have searched the Community
- I have read docs.revenuecat.com
- I have searched for existing Github issues
Describe the bug
For iOS Sandbox transactions, the "transaction_id" field in the webhook is something like "StoreKitTest_Transaction_7d5df4466d669078a079d2c0d58f65d9_3" while in-app the result of purchaseProduct will have transactionIdentifier equal to just "3". I'm expecting these two things to match up for some fulfillment logic.
- Environment
- Platform: iOS
- SDK version: 8.2.1
- OS version: iOS 18.0 (also tried in 16.4)
- Xcode/Android Studio version:
- React Native version: 0.73.6
- SDK installation (CocoaPods + version or manual):
- How widespread is the issue. Percentage of devices affected.
- Debug logs that reproduce the issue
- Steps to reproduce, with a description of expected vs. actual behavior
- Call purchaseProduct for a consumable product in iOS simulator
- Examine result.transaction.transactionIdentifier
- Expected: this value is unique and matches the txn id in the webhook request
- Actual: this value is not unique and does not match the txn id in the webhook request
- Other information (e.g. stacktraces, related issues, suggestions how to fix, links for us to have context, eg. stackoverflow, etc.)
Additional context
N/A
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No file or test is named. Start by reproducing the iOS simulator flow with purchaseProduct for a consumable, then compare transaction.transactionIdentifier with the webhook transaction_id. Done means the identifier behavior is consistent and unique across both results, or the supported limitation is clearly documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, react-native, typescript
- Domain
- api, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100