tora/iap-fixes (not live yet).| # | Part | Comes from |
|---|---|---|
| A | Balance and Spark history | HOOP server |
| B | Spark amount on each pack (500, 6500 …) | HOOP server the pack table |
| C | Bonus badge (+18%) | HOOP server |
| D | "Most popular" | HOOP server |
| E | Price button (RM 4.90) | Apple / Google set by Jeff in the store console. A pack with no store price is not shown at all. |
| F | Restore | Apple / Google hands back unfinished purchases |
| G | Status banners (adding / awaiting payment / couldn't add …) | App from the server's answer |
| H | Small print, Terms, Privacy | App |
| Fact | Lives in | Must match |
|---|---|---|
Pack ID (e.g. …green.500) | server table App Store Google Play | Exactly the same string in all three. An ID can never be renamed or reused. |
| Price | stores only | Our server never sends or stores a price to show. Both stores should charge the same (Leong 09-28). |
| Sparks given | server table only | The store listing's name / description ("500 Sparks") must say the same number. The phone can't claim a different amount. |
| Bonus %, "Most popular" | server table | The bonus badge is checked by a test: it can only under-promise, never over-promise. |
| Payment | stores only | HOOP never sees card details. |
…spark.600, with its price and a listing that says "600 Sparks".Why: the store listing and what we deliver always match; Apple / Google review the listing.
Base amounts stay equal to the store listing, so it is safe with store rules. Needs a design OK before I build it.