Django + Stripe Made Easy
The full documentation is at http://dj-stripe.rtfd.org.
- 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)
- For stripe.com only
- Only use or support well-maintained third-party libraries
- For modern Python and Django
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:
Assuming the tests are run against PostgreSQL:
createdb djstripe pip install -r requirements_test.txt coverage run --source djstripe runtests.py coverage report -m
This project follows best practices as espoused in Two Scoops of Django: Best Practices for Django 1.6.
- https://github.com/eldarion/django-stripe-payments - The project that dj-stripe forked. It's an awesome project and worth checking out.
- https://github.com/agiliq/merchant - A single charge payment processing system that also includes many other Gateways. Really nice but doesn't out-of-the-box handle the use case of subscription payments.
- https://github.com/GoodCloud/django-zebra - One of the first stripe payment systems for Django.