Hello RC community,
I need help understand how Apple vs Google handle signed purchase data. I ran into something that I can't figure out and may be getting wrong.
The query:
With Apple's StoreKit 2, when you grab `transaction.jwsRepresentation`, you get `signedDate` field that's generated fresh every time you request it(I assume). So if someone intercepts a JWS token, it goes stale in minutes. Good for security.
But for Google Play Billing, the signature is created once when the purchase happens. `purchaseTime` is static, there's no equivalent to `signedDate`. The same signature comes back every single time you query it(I assume).
What I'm wondering:
1. Am I understanding this correctly? Google really doesn't have a freshness mechanism?
2. How does RC deal with this for things like:
- Detecting stolen/leaked purchase tokens
- Account transfers
- Replay attacks
3. Is this just a known limitation everyone accepts, or is there some workaround I'm missing?
Stuff I've already looked at:
- `obfuscatedAccountId` — set at purchase time, doesn't help prove current ownership
- Server-side token validation — tells you the purchase is real, not who's sending it
- Play Integrity API — proves the device/app is legit, not the purchase ownership
