Metadata-Version: 2.0
Name: mc2p-python
Version: 0.1.1
Summary: MyChoice2Pay Python Bindings
Home-page: https://github.com/mc2p/mc2p-python
Author: MyChoice2Pay
Author-email: support@mychoice2pay.com
License: BSD
Download-URL: https://github.com/mc2p/mc2p-python/archive/v0.1.1.tar.gz
Keywords: mychoice2pay,payments
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: requests
Provides-Extra: test
Requires-Dist: mock; extra == 'test'
Requires-Dist: coverage; extra == 'test'

# MyChoice2Pay Python


# Overview

MyChoice2Pay Python provides integration access to the MyChoice2Pay API.

[![Build Status](https://travis-ci.org/mc2p/mc2p-python.svg?branch=master)](https://travis-ci.org/mc2p/mc2p-python)
[![Coverage Status](https://coveralls.io/repos/github/mc2p/mc2p-python/badge.svg?branch=master)](https://coveralls.io/github/mc2p/mc2p-python?branch=master)
[![Code Health](https://landscape.io/github/mc2p/mc2p-python/master/landscape.svg?style=flat)](https://landscape.io/github/mc2p/mc2p-python/master)

# Installation

You can install using `pip`:

    pip install --upgrade mc2p-python

or `easy_install`

    easy_install --upgrade mc2p-python

or to install from source, run:

    python setup.py install

# Quick Start Example

    from mc2p import MC2P

    mc2p = MC2PClient('KEY', 'SECRET_KEY')

    # Create transaction
    transaction = mc2p.Transaction({
        "currency": "EUR",
        "products": [{
            "amount": 1,
            "product_id": "PRODUCT-ID"
        }]
    })
    # or with product details
    transaction = mc2p.Transaction({
        "currency": "EUR",
        "products": [{
            "amount": 1,
            "product": {
                "name": "Product",
                "price": 5
            }
        }]
    })
    transaction.save()
    transaction.pay_url # Send user to this url to pay
    transaction.iframe_url # Use this url to show an iframe in your site

    # Get plans
    plans_paginator = mc2p.plan.list()
    plans_paginator.count
    plans_paginator.results # Application's plans
    plans_paginator.get_next_list()

    # Get product, change and save
    product = mc2p.Product.get("PRODUCT-ID")
    product.price = 10
    product.save()

    # Create and delete tax
    tax = mc2p.Tax({
        "name": "Tax",
        "percent": 5
    })
    tax.save()
    tax.delete()

    # Check if transaction was paid
    transaction = mc2p.Transaction.get("TRANSACTION-ID")
    transaction.status == 'D' # Paid

    # Create subscription
    subscription = mc2p.Subscription({
        "currency": "EUR",
        "plan_id": "PLAN-ID",
        "note": "Note example"
    })
    # or with plan details
    subscription = mc2p.Subscription({
        "currency": "EUR",
        "plan": {
            "name": "Plan",
            "price": 5,
            "duration": 1,
            "unit": "M",
            "recurring": True
        },
        "note": "Note example"
    })
    subscription.save()
    subscription.pay_url # Send user to this url to pay
    subscription.iframe_url # Use this url to show an iframe in your site

    # Receive a notification
    notification_data = mc2p.NotificationData(JSON_DICT_RECEIVED_FROM_MYCHOICE2PAY)
    notification_data.status == 'D' # Paid
    notification_data.transaction # Transaction Paid
    notification_data.sale # Sale generated

# Exceptions

    from mc2p.errors import InvalidRequestError

    # Incorrect data
    shipping = mc2p.Shipping({
        "name": "Normal shipping",
        "price": "text" # Price must be number
    })
    try:
        shipping.save()
    except InvalidRequestError as e:
        e._message # Status code of error
        e.json_body # Info from server
        e.resource # Resource used to make the server request
        e.resource_id # Resource id requested    


