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
- Works with Django ~=1.9.1, 1.8
- Works with Python 3.5, 3.4, 2.7
- Works with Bootstrap 3
- Built-in migrations
- Dead-Easy installation
- Leverages 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 your stripe keys:
STRIPE_PUBLIC_KEY = os.environ.get("STRIPE_PUBLIC_KEY", "<your publishable key>")
STRIPE_SECRET_KEY = os.environ.get("STRIPE_SECRET_KEY", "<your secret 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 migrate 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.3.4/css/bootstrap.min.css">
<!-- Optional theme -->
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css">
<!-- Latest JQuery (IE9+) -->
<script src="//code.jquery.com/jquery-2.1.4.min.js"></script>
<!-- Latest compiled and minified JavaScript -->
<script src="//netdna.bootstrapcdn.com/bootstrap/3.3.4/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 %}
Assuming the tests are run against PostgreSQL:
createdb djstripe pip install -r requirements_test.txt python runtests.py
This project follows best practices as espoused in Two Scoops of Django: Best Practices for Django 1.8.
- 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.