-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
App needs to be restarted to identify user #777
Comments
👀 We've just linked this issue to our internal tracker and notified the team. Thank you for reporting, we're checking this out! |
Thanks for the report. Is this happening on both platforms? Purchases.setLogLevel(Purchases.LOG_LEVEL.VERBOSE); |
@NachoSoto Done, but where should the logs show? In my terminal, I am only seeing my own console.logs. This is happening in both Android and iOS. |
They'll be on the Xcode terminal (or |
I have the logs: 2023-11-13 21:33:02.512 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Debug logging enabled
2023-11-13 21:33:02.513 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ SDK Version - 6.5.2
2023-11-13 21:33:02.513 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Package name - com.moodpixel
2023-11-13 21:33:02.513 15027-15149 [Purchases] - DEBUG com.moodpixel D 👤 Initial App User ID - null
2023-11-13 21:33:02.514 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Purchases configured with response verification: DISABLED
2023-11-13 21:33:02.515 15027-15149 [Purchases] - DEBUG com.moodpixel D 👤 Setting new anonymous App User ID - %s
2023-11-13 21:33:02.516 15027-15149 [Purchases] - DEBUG com.moodpixel D 👤 Identifying App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:02.517 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Deleting old synced subscriber attributes that don't belong to $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:02.519 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ App foregrounded
2023-11-13 21:33:02.519 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ CustomerInfo cache is stale, updating from network in foreground.
2023-11-13 21:33:02.519 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Listener set
2023-11-13 21:33:02.520 15027-15027 [Purchases] - DEBUG com.moodpixel D Retrieving customer info with policy: FETCH_CURRENT
2023-11-13 21:33:02.520 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Updating pending purchase queue
2023-11-13 21:33:02.521 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Offerings cache is stale, updating from network in foreground
2023-11-13 21:33:02.522 15027-15027 [Purchases] - DEBUG com.moodpixel D 😻 Offerings updated from network.
2023-11-13 21:33:02.523 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Updating pending purchase queue
2023-11-13 21:33:02.524 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ No subscriber attributes to synchronize.
2023-11-13 21:33:02.524 15027-15027 [Purchases] - DEBUG com.moodpixel D Product entitlement mappings are stale. Updating.
2023-11-13 21:33:02.532 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Starting connection for com.android.billingclient.api.BillingClientImpl@d67b3e3
2023-11-13 21:33:02.547 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Starting connection for com.android.billingclient.api.BillingClientImpl@d67b3e3
2023-11-13 21:33:02.559 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Billing Service Setup finished for com.android.billingclient.api.BillingClientImpl@d67b3e3
2023-11-13 21:33:02.559 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Updating pending purchase queue
2023-11-13 21:33:02.560 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Querying purchases
2023-11-13 21:33:02.577 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Purchase of type SUBS with hash lVLcJ2jzOh5EWIf1QRnIKIGtvyU=
2023-11-13 21:33:02.577 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Cleaning previously sent tokens
2023-11-13 21:33:02.577 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Tokens already posted: []
2023-11-13 21:33:02.578 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Saving tokens []
2023-11-13 21:33:02.578 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Tokens already posted: []
2023-11-13 21:33:02.579 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Requesting products from the store with identifiers: moodflow.plus.1month
2023-11-13 21:33:02.600 15027-15186 [Purchases] - DEBUG com.moodpixel D ℹ️ Products request finished for moodflow.plus.1month
2023-11-13 21:33:02.601 15027-15186 [Purchases] - DEBUG com.moodpixel D 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@b3b15d1]}
2023-11-13 21:33:02.603 15027-15186 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.1month - ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@b3b15d1]}
2023-11-13 21:33:02.612 15027-15186 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:03.231 15027-15173 [Purchases] - DEBUG com.moodpixel D API request started: GET /subscribers/%24RCAnonymousID%3A2a8e7301c8584e519a547706dfcdd2c8/offerings
2023-11-13 21:33:03.234 15027-15173 [Purchases] - DEBUG com.moodpixel D API request completed with status: GET /subscribers/%24RCAnonymousID%3A2a8e7301c8584e519a547706dfcdd2c8/offerings 200
2023-11-13 21:33:03.240 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Requesting products from the store with identifiers: moodflow.plus.1month, moodflow.plus.3months, moodflow.plus.6months
2023-11-13 21:33:03.249 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Querying purchases
2023-11-13 21:33:03.249 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ Querying purchases
2023-11-13 21:33:03.268 15027-15197 [Purchases] - DEBUG com.moodpixel D ℹ️ Products request finished for moodflow.plus.1month, moodflow.plus.3months, moodflow.plus.6months
2023-11-13 21:33:03.269 15027-15197 [Purchases] - DEBUG com.moodpixel D 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@652d5ef]}, ProductDetails{jsonString='{"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.3months', productType='subs', title='Moodflow Plus 3-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@44e18fc]}, ProductDetails{jsonString='{"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPh
2023-11-13 21:33:03.269 15027-15197 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.1month - ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@652d5ef]}
2023-11-13 21:33:03.270 15027-15197 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.3months - ProductDetails{jsonString='{"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.3months', productType='subs', title='Moodflow Plus 3-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@44e18fc]}
2023-11-13 21:33:03.270 15027-15197 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.6months - ProductDetails{jsonString='{"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPhases":[{"priceAmountMicros":17990000,"priceCurrencyCode":"EUR","formattedPrice":"€17.99","billingPeriod":"P6M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPhases":[{"priceAmountMicros":17990000,"priceCurrencyCode":"EUR","formattedPrice":"€17.99","billingPeriod":"P6M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.6months', productType='subs', title='Moodflow Plus 6-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@fc59b85]}
2023-11-13 21:33:03.280 15027-15198 [Purchases] - DEBUG com.moodpixel D ℹ️ Purchase of type SUBS with hash lVLcJ2jzOh5EWIf1QRnIKIGtvyU=
2023-11-13 21:33:03.280 15027-15198 [Purchases] - DEBUG com.moodpixel D ℹ️ Cleaning previously sent tokens
2023-11-13 21:33:03.280 15027-15198 [Purchases] - DEBUG com.moodpixel D ℹ️ Tokens already posted: []
2023-11-13 21:33:03.281 15027-15198 [Purchases] - DEBUG com.moodpixel D ℹ️ Saving tokens []
2023-11-13 21:33:03.281 15027-15198 [Purchases] - DEBUG com.moodpixel D ℹ️ Tokens already posted: []
2023-11-13 21:33:03.281 15027-15198 [Purchases] - DEBUG com.moodpixel D ℹ️ Requesting products from the store with identifiers: moodflow.plus.1month
2023-11-13 21:33:03.284 15027-15200 [Purchases] - DEBUG com.moodpixel D ℹ️ Purchase of type SUBS with hash lVLcJ2jzOh5EWIf1QRnIKIGtvyU=
2023-11-13 21:33:03.284 15027-15200 [Purchases] - DEBUG com.moodpixel D ℹ️ Cleaning previously sent tokens
2023-11-13 21:33:03.285 15027-15200 [Purchases] - DEBUG com.moodpixel D ℹ️ Tokens already posted: []
2023-11-13 21:33:03.285 15027-15200 [Purchases] - DEBUG com.moodpixel D ℹ️ Saving tokens []
2023-11-13 21:33:03.285 15027-15200 [Purchases] - DEBUG com.moodpixel D ℹ️ Tokens already posted: []
2023-11-13 21:33:03.285 15027-15200 [Purchases] - DEBUG com.moodpixel D ℹ️ Requesting products from the store with identifiers: moodflow.plus.1month
2023-11-13 21:33:03.300 15027-15183 [Purchases] - DEBUG com.moodpixel D ℹ️ Products request finished for moodflow.plus.1month
2023-11-13 21:33:03.301 15027-15183 [Purchases] - DEBUG com.moodpixel D 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@a63edda]}
2023-11-13 21:33:03.301 15027-15183 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.1month - ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@a63edda]}
2023-11-13 21:33:03.302 15027-15183 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:03.303 15027-15183 [Purchases] - DEBUG com.moodpixel D Same call already in progress, adding to callbacks map with key: [ojlgpkbobljljfekkpemabio.AO-J1Owr_MHE5ciFFZ0WhLh7L200-z7U_G_PhRlt34j45q7VhAt_F33JRovmt3GKYcBYk6BoXeTMk_11-LJHPlwLS5Un1zJJUQ, $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8, true, false, {}, ReceiptInfo(productIDs='moodflow.plus.1month', offeringIdentifier=null, storeProduct=null, subscriptionOptionId=null, pricingPhases=null, price=null, currency=null, duration=null)]
2023-11-13 21:33:03.306 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Products request finished for moodflow.plus.1month
2023-11-13 21:33:03.306 15027-15185 [Purchases] - DEBUG com.moodpixel D 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@fa0e20b]}
2023-11-13 21:33:03.306 15027-15185 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.1month - ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@fa0e20b]}
2023-11-13 21:33:03.307 15027-15185 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:03.308 15027-15185 [Purchases] - DEBUG com.moodpixel D Same call already in progress, adding to callbacks map with key: [ojlgpkbobljljfekkpemabio.AO-J1Owr_MHE5ciFFZ0WhLh7L200-z7U_G_PhRlt34j45q7VhAt_F33JRovmt3GKYcBYk6BoXeTMk_11-LJHPlwLS5Un1zJJUQ, $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8, true, false, {}, ReceiptInfo(productIDs='moodflow.plus.1month', offeringIdentifier=null, storeProduct=null, subscriptionOptionId=null, pricingPhases=null, price=null, currency=null, duration=null)]
2023-11-13 21:33:03.508 15027-15173 [Purchases] - WARN com.moodpixel W ⚠️ Unable to start a network connection due to a network configuration issue: https://api.revenuecat.com/v1/receipts
2023-11-13 21:33:03.509 15027-15173 [Purchases] - DEBUG com.moodpixel D API request started: POST /receipts
2023-11-13 21:33:03.510 15027-15173 [Purchases] - DEBUG com.moodpixel D API request completed with status: POST /receipts 521
2023-11-13 21:33:03.514 15027-15173 [Purchases] - ERROR com.moodpixel E 🤖‼️ PurchasesError(code=InvalidCredentialsError, underlyingErrorMessage=Invalid Play Store credentials., message='There was a credentials issue. Check the underlying error for more details.')
2023-11-13 21:33:03.516 15027-15173 [Purchases] - ERROR com.moodpixel E Error computing offline CustomerInfo. Will return original error. Creation error: PurchasesError(code=CustomerInfoError, underlyingErrorMessage=Product entitlement mapping is required for offline entitlements. Skipping offline customer info calculation., message='There was a problem related to the customer info.')
2023-11-13 21:33:03.520 15027-15173 [Purchases] - ERROR com.moodpixel E 🤖‼️ PurchasesError(code=InvalidCredentialsError, underlyingErrorMessage=Invalid Play Store credentials., message='There was a credentials issue. Check the underlying error for more details.')
2023-11-13 21:33:03.521 15027-15173 [Purchases] - ERROR com.moodpixel E Error computing offline CustomerInfo. Will return original error. Creation error: PurchasesError(code=CustomerInfoError, underlyingErrorMessage=Product entitlement mapping is required for offline entitlements. Skipping offline customer info calculation., message='There was a problem related to the customer info.')
2023-11-13 21:33:03.521 15027-15173 [Purchases] - ERROR com.moodpixel E 🤖‼️ PurchasesError(code=InvalidCredentialsError, underlyingErrorMessage=Invalid Play Store credentials., message='There was a credentials issue. Check the underlying error for more details.')
2023-11-13 21:33:03.521 15027-15173 [Purchases] - ERROR com.moodpixel E Error computing offline CustomerInfo. Will return original error. Creation error: PurchasesError(code=CustomerInfoError, underlyingErrorMessage=Product entitlement mapping is required for offline entitlements. Skipping offline customer info calculation., message='There was a problem related to the customer info.')
2023-11-13 21:33:03.722 15027-15173 [Purchases] - DEBUG com.moodpixel D API request started: GET /subscribers/%24RCAnonymousID%3A2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:03.725 15027-15173 [Purchases] - DEBUG com.moodpixel D API request completed with status: GET /subscribers/%24RCAnonymousID%3A2a8e7301c8584e519a547706dfcdd2c8 201
2023-11-13 21:33:03.741 15027-15173 [Purchases] - DEBUG com.moodpixel D 😻 CustomerInfo updated from network.
2023-11-13 21:33:03.742 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Sending latest CustomerInfo to listener.
2023-11-13 21:33:04.355 15027-15148 ReactNativeJS com.moodpixel I '✨ ------- Purchases.addCustomerInfoUpdateListener - purchases status ------- ✨\n{\n "isPlus": false,\n "updatedCustomerInfo": {\n "nonSubscriptionTransactions": [],\n "originalPurchaseDate": null,\n "allPurchaseDatesMillis": {},\n "managementURL": null,\n "allPurchaseDates": {},\n "originalAppUserId": "$RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8",\n "allExpirationDates": {},\n "firstSeen": "2023-11-13T20:33:02.000Z",\n "originalPurchaseDateMillis": null,\n "allExpirationDatesMillis": {},\n "requestDateMillis": 1699907582868,\n "latestExpirationDate": null,\n "firstSeenMillis": 1699907582000,\n "allPurchasedProductIdentifiers": [],\n "requestDate": "2023-11-13T20:33:02.868Z",\n "latestExpirationDateMillis": null,\n "originalApplicationVersion": null,\n "activeSubscriptions": [],\n "entitlements": {\n "active": {},\n "all": {}\n }\n }\n}', '\n', ' '
2023-11-13 21:33:04.355 15027-15148 ReactNativeJS com.moodpixel I '✨ ------- Purchases.addCustomerInfoUpdateListener - You are a FREE user! ------- ✨\n', '\n', ' '
2023-11-13 21:33:09.010 15027-15173 [Purchases] - DEBUG com.moodpixel D API request started: GET /product_entitlement_mapping
2023-11-13 21:33:09.011 15027-15173 [Purchases] - DEBUG com.moodpixel D API request completed with status: GET /product_entitlement_mapping 200
2023-11-13 21:33:09.014 15027-15173 [Purchases] - DEBUG com.moodpixel D Successfully updated product entitlement mappings.
2023-11-13 21:33:27.035 15027-15149 [Purchases] - DEBUG com.moodpixel D 👤 Logging in from $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8 -> vVK29G9nexY1x2XxVcszozM29K62
2023-11-13 21:33:27.036 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ No subscriber attributes to synchronize.
2023-11-13 21:33:27.042 15027-15149 [Purchases] - DEBUG com.moodpixel D 👤 Logging in from $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8 -> vVK29G9nexY1x2XxVcszozM29K62
2023-11-13 21:33:27.042 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ No subscriber attributes to synchronize.
2023-11-13 21:33:27.042 15027-15149 [Purchases] - DEBUG com.moodpixel D Same call already in progress, adding to callbacks map with key: [$RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8, vVK29G9nexY1x2XxVcszozM29K62]
2023-11-13 21:33:27.169 15027-15173 [Purchases] - DEBUG com.moodpixel D API request started: POST /subscribers/identify
2023-11-13 21:33:27.171 15027-15173 [Purchases] - DEBUG com.moodpixel D API request completed with status: POST /subscribers/identify 200
2023-11-13 21:33:27.177 15027-15173 [Purchases] - DEBUG com.moodpixel D 👤 Logged in successfully as vVK29G9nexY1x2XxVcszozM29K62. Created: false
2023-11-13 21:33:27.177 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:27.178 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Deleting subscriber attributes for $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8 from cache
2023-11-13 21:33:27.180 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:27.182 15027-15173 [Purchases] - DEBUG com.moodpixel D 👤 Logged in successfully as vVK29G9nexY1x2XxVcszozM29K62. Created: false
2023-11-13 21:33:27.182 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:27.183 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Deleting subscriber attributes for $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8 from cache
2023-11-13 21:33:27.183 15027-15027 [Purchases] - DEBUG com.moodpixel D ℹ️ CustomerInfo updated, sending to listener.
2023-11-13 21:33:27.185 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Found 0 unsynced attributes for App User ID: $RCAnonymousID:2a8e7301c8584e519a547706dfcdd2c8
2023-11-13 21:33:27.187 15027-15148 ReactNativeJS com.moodpixel I '✨ ------- Purchases.addCustomerInfoUpdateListener - purchases status ------- ✨\n{\n "isPlus": false,\n "updatedCustomerInfo": {\n "nonSubscriptionTransactions": [],\n "originalPurchaseDate": null,\n "allPurchaseDatesMillis": {},\n "managementURL": null,\n "allPurchaseDates": {},\n "originalAppUserId": "$RCAnonymousID:c6c2514232f9429ab656a49c66100e1d",\n "allExpirationDates": {},\n "firstSeen": "2023-11-13T18:28:47.000Z",\n "originalPurchaseDateMillis": null,\n "allExpirationDatesMillis": {},\n "requestDateMillis": 1699907606343,\n "latestExpirationDate": null,\n "firstSeenMillis": 1699900127000,\n "allPurchasedProductIdentifiers": [],\n "requestDate": "2023-11-13T20:33:26.343Z",\n "latestExpirationDateMillis": null,\n "originalApplicationVersion": null,\n "activeSubscriptions": [],\n "entitlements": {\n "active": {},\n "all": {}\n }\n }\n}', '\n', ' '
2023-11-13 21:33:27.188 15027-15148 ReactNativeJS com.moodpixel I '✨ ------- Purchases.addCustomerInfoUpdateListener - You are a FREE user! ------- ✨\n', '\n', ' '
2023-11-13 21:33:27.197 15027-15173 [Purchases] - DEBUG com.moodpixel D Same call already in progress, adding to callbacks map with key: /subscribers/vVK29G9nexY1x2XxVcszozM29K62/offerings
2023-11-13 21:33:27.353 15027-15173 [Purchases] - DEBUG com.moodpixel D API request started: GET /subscribers/vVK29G9nexY1x2XxVcszozM29K62/offerings
2023-11-13 21:33:27.353 15027-15173 [Purchases] - DEBUG com.moodpixel D API request completed with status: GET /subscribers/vVK29G9nexY1x2XxVcszozM29K62/offerings 200
2023-11-13 21:33:27.357 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Requesting products from the store with identifiers: moodflow.plus.1month, moodflow.plus.3months, moodflow.plus.6months
2023-11-13 21:33:27.358 15027-15173 [Purchases] - DEBUG com.moodpixel D ℹ️ Requesting products from the store with identifiers: moodflow.plus.1month, moodflow.plus.3months, moodflow.plus.6months
2023-11-13 21:33:27.397 15027-15186 [Purchases] - DEBUG com.moodpixel D ℹ️ Products request finished for moodflow.plus.1month, moodflow.plus.3months, moodflow.plus.6months
2023-11-13 21:33:27.403 15027-15199 [Purchases] - DEBUG com.moodpixel D ℹ️ Products request finished for moodflow.plus.1month, moodflow.plus.3months, moodflow.plus.6months
2023-11-13 21:33:27.403 15027-15199 [Purchases] - DEBUG com.moodpixel D 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@c4514af]}, ProductDetails{jsonString='{"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.3months', productType='subs', title='Moodflow Plus 3-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@41150bc]}, ProductDetails{jsonString='{"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPh
2023-11-13 21:33:27.404 15027-15199 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.1month - ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@c4514af]}
2023-11-13 21:33:27.404 15027-15199 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.3months - ProductDetails{jsonString='{"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.3months', productType='subs', title='Moodflow Plus 3-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@41150bc]}
2023-11-13 21:33:27.404 15027-15199 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.6months - ProductDetails{jsonString='{"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPhases":[{"priceAmountMicros":17990000,"priceCurrencyCode":"EUR","formattedPrice":"€17.99","billingPeriod":"P6M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPhases":[{"priceAmountMicros":17990000,"priceCurrencyCode":"EUR","formattedPrice":"€17.99","billingPeriod":"P6M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.6months', productType='subs', title='Moodflow Plus 6-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@f60d845]}
2023-11-13 21:33:27.405 15027-15186 [Purchases] - DEBUG com.moodpixel D 💰 Retrieved productDetailsList: ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@79f0b90]}, ProductDetails{jsonString='{"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.3months', productType='subs', title='Moodflow Plus 3-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@59dfc89]}, ProductDetails{jsonString='{"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhhAz4dJ9+1xh+t1uNnXgHVPyLiXnGpEIMJbjv1y2BJP3XVUdTfvqThJ80m62BUJxij7ahNBvgMXaeJygzG0oRZw6PRSAM3sS07bGQ==","basePlanId":"p6m","pricingPh
2023-11-13 21:33:27.406 15027-15186 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.1month - ProductDetails{jsonString='{"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.1month","type":"subs","title":"Moodflow Plus 1-Month (Moodflow: Mood Tracker)","name":"Moodflow Plus 1-Month","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw","subscriptionOfferDetails":[{"offerIdToken":"AUj\/YhgAX5lwuf1JPrc6oEj\/fRJX107vFfPDxMvTANirj13cjIegLIxeW8lWfijPGJ678YVKvQ6YbaPyEtJ4uIwX4t9bDrl4CerzH+r3aw==","basePlanId":"p1m","pricingPhases":[{"priceAmountMicros":3990000,"priceCurrencyCode":"EUR","formattedPrice":"€3.99","billingPeriod":"P1M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.1month', productType='subs', title='Moodflow Plus 1-Month (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4KGJrva5HPTcb5pOzRpfGB5rculzUx87GloslpckrwaVcu_ugXu2CihmKgjt2Uw', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@79f0b90]}
2023-11-13 21:33:27.407 15027-15186 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.3months - ProductDetails{jsonString='{"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.3months","type":"subs","title":"Moodflow Plus 3-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 3-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-","subscriptionOfferDetails":[{"offerIdToken":"AUj\/Yhh31n7JrHDeUzlUXJDshNpfv3YXpH1EmDqRtnv0bBkP5VaOr\/jrc4l3DaCdQ88ZlKvC3ndYIlXBIQ1BwQlU6x7x1jWcqtzaQREbZg==","basePlanId":"p3m","pricingPhases":[{"priceAmountMicros":10990000,"priceCurrencyCode":"EUR","formattedPrice":"€10.99","billingPeriod":"P3M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.3months', productType='subs', title='Moodflow Plus 3-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L-X4bd3Nf-QF_povwXU3Y-DStg1oqeSq34KdjpkYYK4HdUfBGyjk07vq1yv8v-', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@59dfc89]}
2023-11-13 21:33:27.408 15027-15186 [Purchases] - DEBUG com.moodpixel D 💰 moodflow.plus.6months - ProductDetails{jsonString='{"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"","basePlanId":"p6m","pricingPhases":[{"priceAmountMicros":17990000,"priceCurrencyCode":"EUR","formattedPrice":"€17.99","billingPeriod":"P6M","recurrenceMode":1}],"offerTags":[]}]}', parsedJson={"productId":"moodflow.plus.6months","type":"subs","title":"Moodflow Plus 6-Months (Moodflow: Mood Tracker)","name":"Moodflow Plus 6-Months","description":"Get access to Routines, up to 4 Cloud-backed images per entry, Atlas and \nmore!","localizedIn":["en-US"],"skuDetailsToken":"AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD","subscriptionOfferDetails":[{"offerIdToken":"","basePlanId":"p6m","pricingPhases":[{"priceAmountMicros":17990000,"priceCurrencyCode":"EUR","formattedPrice":"€17.99","billingPeriod":"P6M","recurrenceMode":1}],"offerTags":[]}]}, productId='moodflow.plus.6months', productType='subs', title='Moodflow Plus 6-Months (Moodflow: Mood Tracker)', productDetailsToken='AEuhp4L8sXFC9syA1WawVyd8jAgG799M25nl8VKX4CWc4UB5YKT-7G-YLotJcuQsceFD', subscriptionOfferDetails=[com.android.billingclient.api.ProductDetails$SubscriptionOfferDetails@22c748e]}
2023-11-13 21:33:27.425 15027-15149 [Purchases] - DEBUG com.moodpixel D Retrieving customer info with policy: CACHED_OR_FETCHED
2023-11-13 21:33:27.426 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Vending CustomerInfo from cache.
2023-11-13 21:33:27.426 15027-15149 [Purchases] - DEBUG com.moodpixel D ℹ️ Checking if cache is stale AppInBackground false |
The second time this log appears: If I then kill my app and restart it, then user has the plus access because the listener ( |
Thanks a lot! I see that's using a relatively old version. Going through our release notes I see for example one fix that happened on the very next release that could be affecting this. Could you try to see if you can reproduce this issue with the latest version of |
Ok will do |
@NachoSoto seems like doing yarn add react-native-purchases@latest installs version 4.6.3 which is odd. Which version should I be getting? |
@NachoSoto I ended up installing 7.2.0 but there is def something funky going on with @latest. |
@wmonecke thanks for letting us know! We just fixed that reference: $ npm dist-tag ls react-native-purchases
latest: 7.3.0 |
Sadly still happening @NachoSoto on 7.3.0 |
Ok thanks for verifying! We'll look into it. In the mean time, we'd love it if you could also provide verbose logs from iOS 🙏🏻 |
Will do so tomorrow morning. This is my sign-in method just in case you guys see anything weird with it: export const signInWithEmail = (email: string, password: string) => {
return async (dispatch: Dispatch) => {
dispatch({ type: START_REQUEST });
const { currentUser } = auth();
if (currentUser) {
Toast('You are already logged in.');
return dispatch({ type: REQUEST_FAILED });
}
try {
const credential = await auth().signInWithEmailAndPassword(
email,
password,
);
const user = await Purchases.logIn(credential.user.uid); // this user has no active entitlements, however he should have
return dispatch({ type: REQUEST_SUCCESSFUL });
} catch (error) {
console.log('Error when signInWithEmailAndPassword: ', error);
return dispatch({ type: REQUEST_FAILED });
}
};
}; |
@NachoSoto it seems that calling
AGAIN (I already called this in my App.js) right after
does the trick somehow? (i.e. replace login for a second configure) |
@NachoSoto Any updates regarding this? I really need to get this fixed soon, still losing subs. |
Hi @wmonecke, trying to understand the issue a bit better.
So the issue you're experiencing is that the customer info listener is sending outdated data. You expect to receive the value received from A few additional questions:
As for calling We're still looking into it. Will let you know as soon as possible. |
Hey Toni! Thanks for reaching out.
This is exactly what I expect. After logging the user in to RevenueCat I expect the returned value to be a user that tells me if he is subscribed or not. This is correct right? Today I have removed the multiple export const validateSubscription = () => {
return async (dispatch: Dispatch) => {
const checkSubscriptionStatus = async () => {
prettyLog('checkSubscriptionStatus');
try {
const customerInfo = await Purchases.getCustomerInfo();
const isSubscriptionActive =
typeof customerInfo.entitlements.active.plus !==
'undefined';
prettyLog('checkSubscriptionStatus - user', {
user: customerInfo,
isSubscriptionActive,
});
if (isSubscriptionActive) {
return dispatch({ type: SUBSCRIPTION_VALIDATED });
}
} catch (error) {
console.log('Error in checkSubscriptionStatus: ', error);
}
};
checkSubscriptionStatus();
auth().onAuthStateChanged(async (currentUser) => {
prettyLog('auth().onAuthStateChanged', {
currentUser,
});
if (!currentUser) {
return;
}
// If I add this second configure call here it behaves as expected
// Purchases.configure({
// apiKey: 'BjAwluMVWZBmYUayqbdYfYLKcufVfiCz',
// appUserID: currentUser.uid,
// });
const customer = await Purchases.logIn(currentUser.uid);
await Purchases.setEmail(currentUser.email);
prettyLog('auth().onAuthStateChanged - customer from login', {
customer,
});
checkSubscriptionStatus();
});
Purchases.addCustomerInfoUpdateListener(
async (updatedCustomerInfo) => {
prettyLog(
'Purchases.addCustomerInfoUpdateListener - purchases status',
{
isPlus:
typeof updatedCustomerInfo.entitlements.active?.plus !==
'undefined',
updatedCustomerInfo,
},
);
if (
typeof updatedCustomerInfo.entitlements.active?.plus !==
'undefined'
) {
prettyLog(
"Purchases.addCustomerInfoUpdateListener - You're a PLUS user!",
);
return dispatch({ type: SUBSCRIPTION_VALIDATED });
}
prettyLog(
'Purchases.addCustomerInfoUpdateListener - You are a FREE user!',
);
dispatch({ type: SUBSCRIPTION_EXPIRED });
},
);
};
};
I was on this version before the bugs started happening: "react-native-purchases": "^5.13.3",
This is correct.
This is the same code as in prod at the moment.
These are the logs for when I dont call 1st) Firebase -> auth().onAuthStateChanged LOG ✨ ------- auth().onAuthStateChanged ------- ✨
{
"currentUser": {
"multiFactor": {
"enrolledFactors": []
},
"metadata": {
"lastSignInTime": 1700045360970,
"creationTime": 1699900209442
},
"photoURL": null,
"phoneNumber": null,
"tenantId": null,
"displayName": null,
"emailVerified": true,
"isAnonymous": false,
"uid": "vVK29G9nexY1x2XxVcszozM29K62",
"email": "[email protected]",
"providerData": [
{
"email": "[email protected]",
"providerId": "google.com",
"photoURL": "https://lh3.googleusercontent.com/a/ACg8ocKPNjbxGTATU-37I3h5gkSWaPrs0W1ulKaNv30BItEylK0=s96-c",
"phoneNumber": null,
"displayName": "Walter Monecke",
"uid": "101933804402094068765"
},
{
"email": "[email protected]",
"providerId": "password",
"photoURL": null,
"phoneNumber": null,
"displayName": null,
"uid": "[email protected]"
}
],
"providerId": "firebase"
}
}
2nd) As I call and await LOG ✨ ------- Purchases.addCustomerInfoUpdateListener - purchases status ------- ✨
{
"isPlus": false,
"updatedCustomerInfo": {
"nonSubscriptionTransactions": [],
"originalPurchaseDate": null,
"allPurchaseDatesMillis": {},
"managementURL": null,
"allPurchaseDates": {},
"originalAppUserId": "$RCAnonymousID:c6c2514232f9429ab656a49c66100e1d",
"allExpirationDates": {},
"firstSeen": "2023-11-13T18:28:47.000Z",
"originalPurchaseDateMillis": null,
"allExpirationDatesMillis": {},
"requestDateMillis": 1700045361505,
"latestExpirationDate": null,
"firstSeenMillis": 1699900127000,
"allPurchasedProductIdentifiers": [],
"requestDate": "2023-11-15T10:49:21.505Z",
"latestExpirationDateMillis": null,
"originalApplicationVersion": null,
"activeSubscriptions": [],
"entitlements": {
"active": {},
"all": {}
}
}
} 3rd) At this point the awaited LOG ✨ ------- auth().onAuthStateChanged - customer from Purchases.login ------- ✨
{
"customer": {
"created": false,
"customerInfo": {
"nonSubscriptionTransactions": [],
"originalPurchaseDate": null,
"allPurchaseDatesMillis": {},
"managementURL": null,
"allPurchaseDates": {},
"originalAppUserId": "$RCAnonymousID:c6c2514232f9429ab656a49c66100e1d",
"allExpirationDates": {},
"firstSeen": "2023-11-13T18:28:47.000Z",
"originalPurchaseDateMillis": null,
"allExpirationDatesMillis": {},
"requestDateMillis": 1700045361505,
"latestExpirationDate": null,
"firstSeenMillis": 1699900127000,
"allPurchasedProductIdentifiers": [],
"requestDate": "2023-11-15T10:49:21.505Z",
"latestExpirationDateMillis": null,
"originalApplicationVersion": null,
"activeSubscriptions": [],
"entitlements": {
"active": {},
"all": {}
}
}
}
} 4th) Finally LOG ✨ ------- checkSubscriptionStatus - user ------- ✨
{
"user": {
"nonSubscriptionTransactions": [],
"originalPurchaseDate": null,
"allPurchaseDatesMillis": {},
"managementURL": null,
"allPurchaseDates": {},
"originalAppUserId": "$RCAnonymousID:c6c2514232f9429ab656a49c66100e1d",
"allExpirationDates": {},
"firstSeen": "2023-11-13T18:28:47.000Z",
"originalPurchaseDateMillis": null,
"allExpirationDatesMillis": {},
"requestDateMillis": 1700045361505,
"latestExpirationDate": null,
"firstSeenMillis": 1699900127000,
"allPurchasedProductIdentifiers": [],
"requestDate": "2023-11-15T10:49:21.505Z",
"latestExpirationDateMillis": null,
"originalApplicationVersion": null,
"activeSubscriptions": [],
"entitlements": {
"active": {},
"all": {}
}
},
"isSubscriptionActive": false
}
I actually think this is only happening on android. This issue is also quite hard for me to reproduce. One last thing: These are the 2 IDs that my user (me) has
I have an active subscription in production but it is not showing in the RevenueCat dashboard (live-subscription was bought over 2 days ago). |
Thank you @wmonecke for investigating this matter. For several months, we have been grappling with issues related to "lost in translation" Android purchasers. Either their subscriptions are not visible in Revenue Cat, or the subscriptions we do see are linked to an anonymous user whom we cannot associate with a properly logged-in user. After reading this thread, I believe we might be facing a similar problem. I was almost on the verge of giving up on this issue, so your efforts in delving into it are greatly appreciated. |
@hatem-72 No problem! I will probably be releasing a new version with what is working "for me" at the moment (i.e. calling configure a second time since it doesn't really hurt calling it a second time I guess). If you guys need more info or would like to jump on a call to debug further I am open for it. |
Up to this point, I've been trying to manage the issue by forwarding every single Anonymous RevenueCat ID caught on the client side to our backend, and then attempting to reconcile it with one of our users on the server side. This approach hasn't always been successful and felt more like a temporary fix, as I believe it's not really our server's responsibility to handle this. |
Seems that this is still happening after refactoring the above code to the following: export const validateSubscription = () => {
return async (dispatch: Dispatch) => {
const checkSubscriptionStatus = async () => {
try {
const customerInfo = await Purchases.getCustomerInfo();
const isSubscriptionActive =
typeof customerInfo.entitlements.active.plus !==
'undefined';
if (!isSubscriptionActive) {
return dispatch({ type: SUBSCRIPTION_EXPIRED });
}
return dispatch({ type: SUBSCRIPTION_VALIDATED });
} catch (error) {
console.log('Error in checkSubscriptionStatus: ', error);
}
};
auth().onAuthStateChanged(async (currentUser) => {
Purchases.configure({
apiKey: RevenueCatApiKey,
appUserID: currentUser?.uid,
});
checkSubscriptionStatus();
});
};
}; Basically removed This does work for me right now but I do have many older users (users that purchased before I upgraded the SDK) that are complaining they are getting charged without being able to access the premium features. Could we by any chance have some sort of call / email exchange to further see what could be happening? At this point I wouldnt know what else to do. |
Tried to schedule a call but didn't happen. If you prefer, please contact [email protected] referencing this issue and we can try to make it happen again. |
Same issue. Feels critical to me. Is it a recognized issue and what is its status? My best guess is that if there is |
Hi @RohovDmytro, we currently haven't been able to repro this issue. Please, let us know if you have repro steps. Also a code sample with this happening to you would be helpful. Additionally, can you let us know exactly what you're experiencing to make sure it's the same issue? |
Describe the bug
I have lost about 500 paying subscribers because revenuecat is failing to identify my paying users. This started happening after upgrading the library.
For a subscribed user to access their premium features after log in they will need to kill and restart the app.
This is my validateSub function - what am I doing wrong?
I am calling Purchases.configure outside my App.js (very early)
Sometimes the user within the
addCustomerInfoUpdateListener
will return a non-subbed user while the user inside theonAuthStateChanged
IS subscribed. This is really confusing an non-intuitive.I dont know what else to try and dont want to ship another version and lose whats left.
Please help.
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered: