itunes-iap v2
~~~~~~~~~~~~~

Python 2 & 3 compatible! Even with `asyncio` support!

.. image:: https://travis-ci.org/youknowone/itunes-iap.svg?branch=master
    :target: https://travis-ci.org/youknowone/itunes-iap
.. image:: https://coveralls.io/repos/github/youknowone/itunes-iap/badge.svg?branch=master
    :target: https://coveralls.io/github/youknowone/itunes-iap?branch=master

- Source code: `<https://github.com/youknowone/itunes-iap>`_
- Documentation: `<http://itunes-iap.readthedocs.io/>`_
- Distribution: `<https://pypi.python.org/pypi/itunes-iap/>`_


Quickstart
----------

Create request to create a request to itunes verifying api.

.. sourcecode:: python

   >>> import itunesiap
   >>> try:
   >>>     response = itunesiap.verify(raw_data)  # base64-encoded data
   >>> except itunesiap.exc.InvalidReceipt as e:
   >>>     print('invalid receipt')
   >>> print response.receipt.last_in_app.product_id  # other values are also available as property!

The common attributes are:
    `product_id`, `original_transaction_id` and `quantity`.

See the full document in:
    - `itunesiap.verify`: The verifying function.
    - `itunesiap.receipt.Receipt`: The receipt object.


asyncio
-------

.. sourcecode:: python

   >>> import itunesiap
   >>> response = await itunesiap.aioverify(raw_data)  # verify -> aioverify

The other parts are the same.

See the full document in:
    - `itunesiap.aioverify`: The verifying function.


Installation
------------

PyPI is the recommended way.

.. sourcecode:: shell

    $ pip install itunes-iap

To browse versions and tarballs, visit:
    `<https://pypi.python.org/pypi/itunes-iap/>`_


Apple in-review mode
--------------------

In review mode, your actual users who use older versions want to verify in
production server but the reviewers in Apple office want to verify in sandbox
server.

Note: The default env is `production` mode which doesn't allow any sandbox
verifications.

You can change the verifying mode by specifying `env`.

.. sourcecode:: python

    >>> # review mode
    >>> itunesiap.verify(raw_data, env=itunesiap.env.review)


Note for v1 users
-----------------

There was breaking changes between v1 and v2 APIs.

- Specify version `0.6.6` for latest v1 API when you don't need new APIs.
- Or use `import itunesiap.legacy as itunesiap` instead of `import itunesiap`. (`from itunesiap import xxx` to `from itunesiap.legacy import xxx`)


Contributors
------------

See https://github.com/youknowone/itunes-iap/graphs/contributors
