Skip to content

Latest commit

 

History

History
172 lines (115 loc) · 4.78 KB

README.rst

File metadata and controls

172 lines (115 loc) · 4.78 KB

dj-stripe

https://badge.fury.io/py/dj-stripe.png https://travis-ci.org/pydanny/dj-stripe.png?branch=master https://pypip.in/d/dj-stripe/badge.png

Django + Stripe Made Easy

Documentation

The full documentation is at http://dj-stripe.rtfd.org.

Features

  • Subscription management
  • Designed for easy implementation of post-registration subscription forms
  • Single-unit purchases (forthcoming)
  • Works with Django 1.6, 1.5, 1.4
  • Works with Python 3.3, 2.7, 2.6
  • Works with Bootstrap 3
  • Built-in South migrations
  • Dead-Easy installation
  • Leverages in the best of the 3rd party Django package ecosystem
  • djstripe namespace so you can have more than one payments related app
  • Documented (Making good progress)
  • Tested (Making good progress)

Constraints

  1. For stripe.com only
  2. Only use or support well-maintained third-party libraries
  3. For modern Python and Django

Quickstart

Install dj-stripe:

pip install dj-stripe

Add djstripe to your INSTALLED_APPS:

INSTALLED_APPS +=(
    "djstripe",
)

Add the context processor to your TEMPLATE_CONTEXT_PROCESSORS:

TEMPLATE_CONTEXT_PROCESSORS +=(
    'djstripe.context_processors.djstripe_settings',
)

Add your stripe keys:

STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY", "<your publishable test key>")
STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "<your secret test key>")

Add some payment plans:

DJSTRIPE_PLANS = {
    "monthly": {
        "stripe_plan_id": "pro-monthly",
        "name": "Web App Pro ($24.99/month)",
        "description": "The monthly subscription plan to WebApp",
        "price": 2499,  # $24.99
        "currency": "usd",
        "interval": "month"
    },
    "yearly": {
        "stripe_plan_id": "pro-yearly",
        "name": "Web App Pro ($199/year)",
        "description": "The annual subscription plan to WebApp",
        "price": 19900,  # $199.00
        "currency": "usd",
        "interval": "year"
    }
}

Add to the urls.py:

url(r'^payments/', include('djstripe.urls', namespace="djstripe")),

Run the commands:

python manage.py syncdb

python manage.py migrate  # if you are using South

python manage.py djstripe_init_customers

python manage.py djstripe_init_plans

If you haven't already, add JQuery and the Bootstrap 3.0.0 JS and CSS to your base template:

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">

<!-- Optional theme -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-theme.min.css">

<!-- Latest JQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>

<!-- Latest compiled and minified JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>

Also, if you don't have it already, add a javascript block to your base.html file:

{% block javascript %}{% endblock %}

Start up the webserver:

Running the Tests

Assuming the tests are run against PostgreSQL:

createdb djstripe
pip install -r requirements_test.txt
coverage run --source djstripe runtests.py
coverage report -m

Follows Best Practices

This project follows best practices as espoused in Two Scoops of Django: Best Practices for Django 1.6.

Similar Projects