Metadata-Version: 2.1
Name: pyinapp
Version: 0.1.5
Summary: InApp purchase validation API wrappers
Home-page: https://github.com/keeprocking/pyinapp
Author: Ivan Mukhin
Author-email: muhin.ivan@gmail.com
License: MIT
Keywords: inapp store purchase googleplay appstore market
Platform: UNKNOWN
Requires-Dist: requests
Requires-Dist: rsa

pyinapp
=======
|travis| |pypi|

.. |travis| image:: https://travis-ci.org/keeprocking/pyinapp.svg?branch=master
    :target: https://travis-ci.org/keeprocking/pyinapp
.. |pypi| image:: https://badge.fury.io/py/pyinapp.svg
    :target: https://badge.fury.io/py/pyinapp

In-app purchase validation has never been so friendly and convenient!

Installation
============
::

    pip install pyinapp

Usage
=====

Currently pyinapp supports Google Play and App Store receipts validation.

Google Play:
------------
.. code:: python

    from pyinapp import GooglePlayValidator, InAppValidationError


    bundle_id = 'com.yourcompany.yourapp'
    api_key = 'API key from the developer console'
    validator = GooglePlayValidator(bundle_id, api_key)

    try:
        purchases = validator.validate('receipt', 'signature')
        process_purchases(purchases)
    except InAppValidationError:
        """ handle validation error """

App Store:
----------
.. code:: python

    from pyinapp import AppStoreValidator, InAppValidationError


    bundle_id = 'com.yourcompany.yourapp'
    validator = AppStoreValidator(bundle_id)

    try:
        purchases = validator.validate('receipt')
        process_purchases(purchases)
    except InAppValidationError:
        """ handle validation error """

**Important!**
If your version is under 0.1.3, you need to check the type of purchases. For the sake of convenience you can process purchases this way:

.. code:: python

    def process_purchases(purchases):
        process(*purchases) if isinstance(purchases, list) else process(purchases)


    def process(*purchases):
        for p in purchases:
            """ for instance, save p to db and add a player some coins for it """


This approach allows to process both Google Play and App Store purchases the same way.

Purchase
========

Purchase is a universal wrapper for Google Play and App Store receipts. It contains the following fields:

- **transaction_id**: id of the purchase (**transaction_id** for App Store and **orderId** for Google Play);
- **product_id**: what product has been purchased (**product_id** for App Store and **productId** for Google Play);
- **quantity**: how many products have been purchased (**quantity** for App Store and always **1** for Google Play - there's no such field in Google Play receipt);
- **purchased_at**: when the product has been purchased, UNIX timestamp (**purchase_date** for App Store and **purchaseTime** for Google Play).
- **response**: (App Store only) the response (in JSON format) from the App Store.

Contributing
============

To run tests, you'll need tox_. After installing, simply run it:

.. code:: python

    tox

.. _tox: https://pypi.python.org/pypi/tox

