[Unity] IAP.GetViewerPurchases() returns Platform error
Hello, I am facing a weird issue with my IAP in my testing account where every time, I try to fetch user purchases: IAP.GetViewerPurchases().OnComplete(msg => { if (msg.IsError) { Debug.Log($"Error: {msg.GetError().Message}"); //lands here every time return; } //other code } and this is error message: OVRPlatform [Purchase] Purchase::deserialize: response object field "grant_time" was not a uint64. Value is: -120 and my log message: Error: Server response is not valid JSON. This started happening after my test subscription expired and I deleted the subscription from my dashboard. -- UPDATE -- Same issue with `IAP.GetViewerPurchasesDurableCache()` -- UPDATE 2 -- Looks like this problem is occurring with `IAP.LaunchCheckoutFlow` as well. In my opinion, this is likely a test account only issue but there is no way to confirm.Solved31Views0likes1CommentUnderstanding Server APIs for Subscription
Hello, I am testing 2 level subscription tier (both monthly) in draft mode and I am having trouble understanding certain behavior from server APIs responses during my testing with a test user account. 1. Subscription doesn't renew automatically GET https://graph.oculus.com/application/subscriptions Whenever I edit subscription end period from developer dashboard, the subscription remains in active state even after past the renewal date time, `period_start_time` and `period_end_time` has no change at all and `is_active` is also set to true. So my question is this expected that for test user the renewal is not automatic and I must "renew" manually from the dashboard? 2. Mismatch between APIs GET https://graph.oculus.com/application/subscriptions GET https://graph.oculus.com/$APP_ID/viewer_purchases The expiration time is 5 days in the future for /viewer_purchases as compared to /subscriptions which returns correct expiration time. There is another problem with /subscriptions api returns start and end period in datetime format instead of unix timestamp as in viewer_purchases endpoint. I also found that /viewer_purchases is less dependable as it continues to return the item even when subscription has been deleted from dashboard so /subscriptions appears to be more correct in this case. 3. Cancellation has no impact subscription status even after expiry GET https://graph.oculus.com/application/subscriptions Even after the expiration date has passed, the subscription returns `is_active` as true. so neither the subscription renews (when not cancelled) nor expires (when cancelled) from the dashboard. { "owner": { "id": "xxxxxxxxx" }, "sku": "example_pro_tier", "is_active": true, "period_start_time": "2025-09-20T08:20:52+0000", "period_end_time": "2025-10-20T08:20:52+0000", "next_renewal_time": "2025-10-20T08:20:52+0000", "cancellation_time": "2025-10-20T08:16:54+0000", "id": "xxxxxxxx" } } The only thing that works is if I manually "expire" from dashboard then the `is_active` is set to false 4. No Grace Period Data In the docs, its clearly written that subscription remains active for 3 more days if user renewal fails, however in test, there is no data related to grace period (for example: period_end_time and next_renewal_time should extended by the grace period). However, there is no way to test renew failure state -> enters into grace period state from dashboard. 5. Subscription ID remains unchanged GET https://graph.oculus.com/application/subscriptions Now this could be a feature that the Subscription ID remains same in case of upgrade, downgrade, renewals, cancellation, expiration, resubscription but this makes it harder to identify when user has actually renewed their subscription. For example, in my backend, I want to reward user some virtual items on each successful renewals, but if I depend on just SKU and expire timestamp then I would think user has renewed even in case user went into grace period and the expire timestamp has been extended (unless I am mistaken and expire timestamp doesn't extend in case of grace period). Now here is what I believe happens in production mode BUT I need to validate that my logic is not flawed at any point: 1. User subscribes to a low tier SKU (is_active is true) 2. User subscription renews: i. Success - period_end_time is extended to next date in future. ii. Failure - user enter grace period and ONLY next_renewal_time is extened while is_active still remain true a. Renewal success after grace period ends - period_end_time is extended and is_active still remain true b. Renewal fails again after grace period ends OR if user cancels subscription while in grace period - then is_active is set to false 3. User decides to upgrade to higher tier SKU (sku, period_end_time is updated and is_active is set to true) 4. User decides to downgrade to lower tier SKU (no changes until renewal at which point lower tier will be activated (sku, period_end_time will be updated and is_active will remain set to true)) 5. User cancels the subscription while in subscription (cancellation_time will be available but no action needed as user can continue to use remaining period left into their subscription cycle) 6. Subscription expires post expiration date after being cancelled (is_active is set to false) 7. User returns again (is_active is true and period_end_time is updated) Let me know if I missed something here and if I can use this logic to basically depend on sku, is_active and period_end_time changes to notify my backend to reward user indicating there was a successful purchase, renewal or upgrades.18Views0likes0CommentsExploring How XR and Mixed Reality Can Transform Outdoor Advertising Experiences
Hey everyone, I’ve been exploring how XR and spatial computing could reshape real-world advertising — especially in motion-based or outdoor environments like cabs, metros, and public spaces. Imagine if physical cab branding or billboards weren’t just static visuals, but dynamic mixed-reality layers that interact with a user’s AR view through the Meta Quest SDKs or Immersive Web APIs. A few things I’m curious to hear your thoughts on: - Could Scene API or Mixed Reality Utility Kit (MRUK) enable brands to place contextual 3D content over real-world moving assets? - How might developers integrate Spatial Anchors for mobile or headset-based ad experiences that sync with vehicles or public objects? - From a monetization perspective, how could immersive ad delivery balance creativity and user experience in XR environments? At Cashurdrive, we’ve been experimenting with ways to make OOH and transit media more interactive through tech — and I’d love to hear how other developers are thinking about connecting real-world assets with digital layers. Would love your technical insights or prototype thoughts if anyone has tried something similar using Unity, Unreal, or WebXR. – Kalpana Rathore Marketing Consultant | Cashurdrive28Views0likes0Comments