/dj-stripe

Django + Stripe Made Easy

Primary LanguagePythonBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

dj-stripe

This Project is Unmaintained

Since anything involving payments requires a careful eye for detail, rather than spend 5-10 minutes a week glancing at pull requests and issues, until further notice this project is unmaintained. Use it at your own risk.

As I work on several critical, high profile projects for the Python and Django communities (including Cookiecutter and Django Packages), all my admittedly limited open source time goes to those efforts.

If you wish to change the status of this project by sponsoring it, please feel free to contact me at pydanny@gmail.com. Please note that since one of my agreements getting hired by my employer is that I end my consulting work, I am only interested in sponsorship of the project, not formal consulting work.

Badges

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