Closed Bug 750397 Opened 13 years ago Closed 12 years ago

Price tiers in in-app calls

Categories

(addons.mozilla.org Graveyard :: Public Pages, defect, P2)

defect

Tracking

(Not tracked)

VERIFIED FIXED
2012-06-28

People

(Reporter: fligtar, Assigned: kumar)

References

Details

While the original in-app payments spec called for prices and currencies, we need to ensure that we only charge valid price tiers.

Right now if you put in a price that's not a price tier we seem to get an ISE.

There are a couple things we could do. One is require the exact price tier price, e.g. 0.99 USD. In that case, would we require currency to be USD? We should respond with an error in this case that references the docs.

Another option would be to round up to the nearest price tier, so if I put 1.50 USD it would actually become 1.99 USD up to the highest price tier we allow. But currency gets in the way there too unless we require USD. If there's a way to respond with a notice, the transaction response could include a notice that we rounded up the price due to an invalid price tier.

I'm okay with either method, but I think we need to require USD or things will get really complicated.
This seems really odd. We should verify with PayPal what the 500 error means exactly. Why would they force us into tiers? Could it be that the price is just too low for chained payments maybe?

If we did enforce tiers, it would get complicated between currencies.
This is unrelated to PayPal. For the same reason we use price tiers for paid downloads, we should use price tiers for in-app payments. If we let developers charge any price, we get into real-time currency conversion. So we need to make sure in-app payments coincide with our price tiers.

If we were managing in-app inventory ourselves like Apple, this would just mean selecting the price tier from a dropdown when creating an in-app item. But because developers can send JSON with whatever they want, it does unfortunately mean we either have to require an exact tier or round to one.
Ohh, I thought you meant the ISE was on PayPal but you meant on our site. Well, I think it will make things complicated but if we have to do it then another idea is to use abstract tiers like TIER_1, TIER_2, or some descriptive text. We would document all available tiers alongside the JS format and not accept dollar values. This way we could control the currency conversions for each tier and when fluctuations happen (or markets change) we could adjust the tier prices without the developers having to change their code.
is there a way to avoid forcing payments into tiers? I can think of some good reasons not to dictate tiers: let similar games compete on price, let apps charge exact prices when charging usage fees (e.g. reselling Amazon S3)
Blocks: 698116
I don't know of any better ways to avoid realtime currency conversion and the complexities of international payments. It has worked well for other app stores and I think the benefits outweigh the inconvenience. Apps that feel they have to use exact pricing can use points systems instead, e.g. you buy 500 points for $5 and spend them in whatever quantities you want.
aha, the idea of purchasing points addresses the concerns I had.

alright, let's do tiers! I can get started on this by putting configurable tiers in the DB but very soon I'd like to see a breakdown of what the actual tiers should be.
Assignee: nobody → kumar.mcmillan
Target Milestone: --- → 2012-05-24
Why wouldn't we use the tiers that already exist (the `prices` table)?  That would keep things simpler.
(In reply to Wil Clouser [:clouserw] from comment #7)
> Why wouldn't we use the tiers that already exist (the `prices` table)?  That
> would keep things simpler.

works for me.
Target Milestone: 2012-05-24 → 2012-05-31
Target Milestone: 2012-05-31 → 2012-06-07
Target Milestone: 2012-06-07 → 2012-06-14
Target Milestone: 2012-06-14 → 2012-06-21
Fixed: https://github.com/mozilla/zamboni/commit/055c3f569dd58b34def5155486cb7a93da15af0f

in-app payment can no longer be made with dollar/currency amounts. You have to use a tier ID. Krupa I've also updated the in-app payment tester. I also updated the MDN docs.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: 2012-06-21 → 2012-06-28
I filed bug 768627 and bug 769442

overall, specifying a valid price tier allows with user to purchase an app.
Status: RESOLVED → VERIFIED
Product: addons.mozilla.org → addons.mozilla.org Graveyard
You need to log in before you can comment on or make changes to this bug.