Marketplace/InAppPayments: Difference between revisions

added banner
(added banner)
 
(13 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Marketplace_banner}}
This page discusses some improvements to In-app Payments for the Marketplace.
This page discusses some improvements to In-app Payments for the Marketplace.


Line 10: Line 11:
== Proposed solution ==
== Proposed solution ==


* App developer must give their app a domain. Already exists for hosted apps, would be added into the manifest for packaged apps.
* App developers enters in a product and price on the Mozilla Marketplace developer hub and gets a URL for example /mozpay/product/shiny-pony/buy.
* App developers enters in a product and price on the Mozilla Marketplace developer hub and gets a URL for example /mozpay/product/shiny-pony/buy.
* User clicks a Buy button.
* User clicks a Buy button.
* App does a POST to /mozpay/product/shiny-pony/buy
* App does a POST to /mozpay/product/shiny-pony/buy
** Server checks the domain of the request to ensure its coming from the app. How?
** That initiates a transaction on the server.
** That initiates a transaction on the server.
** Server contacts the marketplace to record start of the transaction.
** Server contacts the marketplace to record start of the transaction.
*** Is there an issue here with matching up Marketplace persona accounts?
*** Is there an issue here with matching up Marketplace persona accounts? (no, because we'll be using device receipts)
** Creates the JWT and returns it to the client
** Creates the JWT and returns it to the client
** The client receives the JWT and passes it to mozPay.
** The client receives the JWT and passes it to mozPay.
* App polls the server waiting for a completed purchase...
* App polls the server waiting for a completed purchase...
* When completed a receipt is returned to the client
* When completed a receipt is returned to the client
** Client installs the receipt (bug https://bugzilla.mozilla.org/show_bug.cgi?id=757226)
** Client installs the receipt probably with app.addReceipt() (bug https://bugzilla.mozilla.org/show_bug.cgi?id=757226)
* App verifies the receipt is correct for that app.
* App verifies the receipt is correct for that app.
** App verifies the receipt against the receipt verification.
** App verifies the receipt against the receipt verification.
* App grants access to product purchased.
* App grants access to product purchased.


* User can revisit the marketplace and get a list of completed in-app payments.
* User can revisit the marketplace and get a list of completed in-app payments. [out of scope]
** Users can click a button to get a receipt for an in-app payment.
** Users can click a button to get a receipt for an in-app payment.
*** App should check the receipt is correct for that app.
*** App should check the receipt is correct for that app.
*** App verifies the receipt against the receipt verification.
*** App verifies the receipt against the receipt verification.
== Issues ==
* Refunds and chargebacks will still need a server, although we will report that on a reciept check.
* Lots of products?
* revoking / updating receipt - ie. for subscription products?
* developer testing
* Current in app payment tester http://inapp-pay-test.paas.allizom.org/
* Multiple payment providers?
** eg: create bango account, create in app payment, create timwe account then what happens
* Existing https://github.com/mozilla/receiptverifier


== Bugs ==
== Bugs ==
Tracking bug is {{Bugzilla|944480}}.


To come.
<bugzilla>
{ "blocks": ["944480"] }
</bugzilla>
Confirmed users
745

edits