Zippy

This is the Mozilla reference implementation of a payment processor that would hook into a payment provider for navigator.mozPay() such as WebPay.

It shows the API, endpoints, and authorization formats a payment processor should implement in order to integrate with the Firefox Marketplace via WebPay (and Solitude behind the scenes). Hooking into WebPay as a payment processor is much simpler than implementing a full-on payment provider to spec.

These docs are also available as a PDF: https://media.readthedocs.org/pdf/zippypayments/latest/zippypayments.pdf

Rather than being a specification to read, Zippy is a working project. It’s important to note that underneath Zippy does not actually do anything other than record some transaction information to allow APIs to work. Specifically it does not:

  • try and actually charge carrier billing
  • try and charge a credit card
  • process any money at all

That is all faked out. It’s up to the individual payment processor to implement that.

Do I have to use node?

No. You should not take our reference implementation of Zippy and use it. This is not production code.

The point of this is not to provide any code that you should run. Instead it is to demonstrate and document a common API for payment processors.

So how should I use Zippy?

Play with it, look at the API. Use it as a sample. Then use whatever software tools, frameworks and methodologies you use in development and build your own version of Zippy. If you build something that has:

  • the same API end points
  • uses OAuth for authentication
  • takes the same inputs in the same formats (e.g.: REST over HTTP)
  • responds with the same outputs (e.g.: REST over HTTP)
  • copes with errors in the same way

Then you will have a zippy compatible implmentation and all Mozilla has to do is change the configuration of the Firefox Marketplace and we’ll plug into your implementation of the API.

How do I use the templates?

The templates are written in to work with the Mozilla Zippy implementation. That likely won’t work for other people, you likely have a different HTML templating library. We haven’t found a good solution for this yet. But Zippy gives you the HTML, the CSS, the JS and the localisations. That’s a pretty good start.

How do I make this better?

This is an open source project, we welcome any and all feedback. We certainly haven’t implemented all the APIs that could possibly exist. We don’t know all the answers. We’d love to work with anyone using Zippy and make this better.

Mailing list: https://lists.mozilla.org/listinfo/dev-marketplace

It is licensed under the Mozilla Public License v2.0 and contributions are more than welcome.

Source: https://github.com/mozilla/zippy/

Bugs: https://bugzilla.mozilla.org/show_bug.cgi?id=905736

How it plugs into the Firefox Marketplace?

Are you interested in how everything works? Read about the End To End Payment Flow.

Here’s how Zippy fits into the Firefox Marketplace infrastructure.

_images/architecture.png

Using Zippy

Everything you need to know about data formats, protocols, authentication and the like. See the using zippy documentation.

Sellers

In Zippy, sellers are the developers who are wanting to place something for sale on the app market. They will need to create an account with the payment provider:

  • Setting up a developer account so that a developer can recieve payment.
  • Registering one or more products with the payment provider.
  • Any further configuration that the product needs.
  • Confirming that data is all set up correctly.

See the developer documentation.

Payment

  • The actual payment part of the flow.
  • Starting the payment flow.
  • Pages that should be shown and hosted by the payment provider.
  • The result after the payment has been completed.

See the payment documentation.

Reporting

  • Reporting of transactions back to developers.

See the reporting documentation documentation.

Miscellaneous

  • Refunds and chargebacks, see refunds
  • Token checking and other security, see security
  • Status, see status

Indices and tables