Package: dj-stripe-kando
Django + Stripe Made EasyBadgesDocumentationThe full documentation is athttp://dj-stripe.rtfd.org.FeaturesSubscription managementDesigned for easy implementation of post-registration subscription formsSingle-unit purchasesWorks with Django ~=1.9.1, 1.8Works with Python 3.5, 3.4, 2.7Works with Bootstrap 3Built-in migrationsDead-Easy installationLeverages the best of the 3rd party Django package ecosystemdjstripenamespace so you can have more than one payments related appDocumentedTestedCurrent API version (2012-11-07), in progress of being updatedConstraintsFor stripe.com onlyOnly use or support well-maintained third-party librariesFor modern Python and DjangoQuickstartInstall dj-stripe:pipinstalldj-stripeAdddjstripeto yourINSTALLED_APPS:INSTALLED_APPS=(..."django.contrib.sites"..."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_plansIf you haven’t already, add JQuery and the Bootstrap 3.0.0+ JS and CSS to your base template:<!-- Latest compiled and minified CSS --><linkrel="stylesheet"href="//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"><!-- Optional theme --><linkrel="stylesheet"href="//netdna.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css"><!-- Latest JQuery (IE9+) --><scriptsrc="//code.jquery.com/jquery-2.1.4.min.js"></script><!-- Latest compiled and minified JavaScript --><scriptsrc="//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 %}Running the TestsAssuming the tests are run against PostgreSQL:createdb djstripe
pip install -r requirements_test.txt
python runtests.pyFollows Best PracticesThis project follows best practices as espoused inTwo Scoops of Django: Best Practices for Django 1.8.Similar Projectshttps://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.History1.0.0 (2016-??-??)Charge receipts now takeDJSTRIPE_SEND_INVOICE_RECEIPT_EMAILSinto account (Thanks @r0fls)Clarified/modified installation documentation (Thanks @pydanny)Corrected and revised ANONYMOUS_USER_ERROR_MSG (Thanks @pydanny)Added fnmatching toSubscriptionPaymentMiddleware(Thanks @pydanny)SubscriptionPaymentMiddleware.process_request()functionality broken up into multiple methods, making local customizations easier (Thanks @pydanny)Fully qualified events are now supported by event handlers as strings e.g. ‘customer.subscription.deleted’ (Thanks @lskillen) #316runtests now accepts positional arguments for declaring which tests to run (Thanks @lskillen) #317It is now possible to reprocess events in both code and the admin interface (Thanks @lskillen) #318The confirm page now checks that a valid card exists. (Thanks @scream4ik) #325Added support for viewing upcoming invoices (Thanks @lskillen) #320Event handler improvements and bugfixes (Thanks @lskillen) #321API list() method bugfixes (Thanks @lskillen) #322Added support for a custom webhook event handler (Thanks @lskillen) #323Django REST Framework contrib package improvements (Thanks @aleccool213) #334Addedtax_percentto CreateSubscriptionSerializer (Thanks @aleccool213) #349Fixed incorrectly assignedapplication_feein Charge calls (Thanks @kronok) #382Fixed bug caused by API change (Thanks @jessamynsmith) #353Added inline documentation to pretty much everything and enforced docsytle via flake8 (Thanks @aleccool213)Fixed outdated method call in template (Thanks @kandoio) #391Customer is correctly purged when subscriber is deleted, regardless of how the deletion happened (Thanks @lskillen) #396Test webhooks are now properly captured and logged. No more bounced requests to Stripe! (Thanks @jameshiew) #408CancelSubscriptionView redirect is now more flexible (Thanks @jleclanche) #4180.8.0 (2015-12-30)better plan ordering documentation (Thanks @cjrh)added a confirmation page when choosing a subscription (Thanks @chrissmejia, @areski)setup.py reverse dependency fix (#258/#268) (Thanks @ticosax)Dropped official support for Django 1.7 (no code changes were made)Python 3.5 support, Django 1.9.1 supportMigration improvements (Thanks @michi88)Fixed “Invoice matching query does not exist” bug (#263) (Thanks @mthornhill)Fixed duplicate content in account view (Thanks @areski)0.7.0 (2015-09-22)dj-stripe now responds to the invoice.created event (Thanks @wahuneke)dj-stripe now cancels subscriptions and purges customers during sync if they were deleted from the stripe dashboard (Thanks @unformatt)dj-stripe now checks for an active stripe subscription in theupdate_plan_quantitycall (Thanks @ctrengove)Event processing is now handled by “event handlers” - functions outside of models that respond to various event types and subtypes. Documentation on how to tie into the event handler system coming soon. (Thanks @wahuneke)Experimental Python 3.5 supportSupport for Django 1.6 and lower is now officially gone.Much, much more!0.6.0 (2015-07-12)Support for Django 1.6 and lower is now deprecated.Improved test harness now tests coverage and pep8SubscribeFormView and ChangePlanView no longer populate self.error with form errorsInvoiceItems.plan can now be null (as it is with individual charges), resolving #140 (Thanks @awechsler and @MichelleGlauser for help troubleshooting)Email templates are now packaged during distribution.sync_plans now takes an optional api_key100% test coverageStripe ID is now returned as part of each model’s str method (Thanks @areski)Customer model now stores card expiration month and year (Thanks @jpadilla)Ability to extend subscriptions (Thanks @TigerDX)Support for plan heirarchies (Thanks @chrissmejia)Rest API endpoints for Subscriptions [contrib] (Thanks @philippeluickx)Admin interface search by email funtionality is removed (#221) (Thanks @jpadilla)0.5.0 (2015-05-25)Began deprecation of support for Django 1.6 and lower.Added formal support for Django 1.8.Removed the StripeSubscriptionSignupFormRemoveddjstripe.safe_settings. Settings are now all located indjstripe.settingsDJSTRIPE_TRIAL_PERIOD_FOR_SUBSCRIBER_CALLBACKcan no longer be a module stringThe sync_subscriber argument has been renamed from subscriber_model to subscriberMoved available currencies to the DJSTRIPE_CURRENCIES setting (Thanks @martinhill)Allow passing of extra parameters to stripe Charge API (Thanks @mthornhill)Support for all available arguments when syncing plans (Thanks @jamesbrobb)charge.refund() now returns the refunded charge object (Thanks @mthornhill)Charge model now has captured field and a capture method (Thanks @mthornhill)Subscription deleted webhook bugfixSouth migrations are now up to date (Thanks @Tyrdall)0.4.0 (2015-04-05)Formal Python 3.3+/Django 1.7 Support (including migrations)Removed Python 2.6 from Travis CI build. (Thanks @audreyr)Dropped Django 1.4 support. (Thanks @audreyr)Deprecated thedjstripe.forms.StripeSubscriptionSignupForm. Making this form work easily with bothdj-stripeanddjango-allauthrequired too much abstraction. It will be removed in the 0.5.0 release.Add the ability to add invoice items for a customer (Thanks @kavdev)Add the ability to use a custom customer model (Thanks @kavdev)Added setting to disable Invoice receipt emails (Thanks Chris Halpert)Enable proration when customer upgrades plan, and pass proration policy and cancellation at period end for upgrades in settings. (Thanks Yasmine Charif)Removed the redundant context processor. (Thanks @kavdev)Fixed create a token call in change_card.html (Thanks @dollydagr)Fixcharge.dispute.closedtypo. (Thanks @ipmb)Fix contributing docs formatting. (Thanks @audreyr)Fix subscription cancelled_at_period_end field sync on plan upgrade (Thanks @nigma)Remove “account” bug in Middleware (Thanks @sromero84)Fix correct plan selection on subscription in subscribe_form template. (Thanks Yasmine Charif)Fix subscription status in account, _subscription_status, and cancel_subscription templates. (Thanks Yasmine Charif)Now usinguser.get_username()instead ofuser.username, to support custom User models. (Thanks @shvechikov)Update remaining DOM Ids for Bootstrap 3. (Thanks Yasmine Charif)Update publish command in setup.py. (Thanks @pydanny)Explicitly specify tox’s virtual environment names. (Thanks @audreyr)Manually call django.setup() to populate apps registry. (Thanks @audreyr)0.3.5 (2014-05-01)Fixeddjstripe_init_customersmanagement command so it works with custom user models.0.3.4 (2014-05-01)Clarify documentation for redirects on app_name.If settings.DEBUG is True, then django-debug-toolbar is exempt from redirect to subscription form.Use collections.OrderedDict to ensure that plans are listed in order of price.Addordereddictlibrary to support Python 2.6 users.Switch from__unicode__to__str__methods on models to better support Python 3.Addpython_2_unicode_compatibledecorator to Models.Check for PY3 so theunicode(self.user)in models.Customer doesn’t blow up in Python 3.0.3.3 (2014-04-24)Increased the extendability of the views by removing as many hard-coded URLs as possible and replacing them withsuccess_urland other attributes/methods.Added single unit purchasing to the cookbook0.3.2 (2014-01-16)Made Yasmine Charif a core committerTake into account trial days in a subscription plan (Thanks Yasmine Charif)Correct invoice period end value (Thanks Yasmine Charif)Make plan cancellation and plan change consistently not prorating (Thanks Yasmine Charif)Fix circular import when ACCOUNT_SIGNUP_FORM_CLASS is defined (Thanks Dustin Farris)Add send e-mail receipt action in charges admin panel (Thanks Buddy Lindsay)Addcreatedfield to all ModelAdmins to help with internal auditing (Thanks Kulbir Singh)0.3.1 (2013-11-14)Cancellation fix (Thanks Yasmine Charif)Add setup.cfg for wheel generation (Thanks Charlie Denton)0.3.0 (2013-11-12)Fully tested against Django 1.6, 1.5, and 1.4Fix boolean default issue in models (from now on they are all default toFalse).Replace duplicated code withdjstripe.utils.user_has_active_subscription.0.2.9 (2013-09-06)Cancellation added to views.Support for kwargs on charge and invoice fetching.def charge() now supports send_receipt flag, default to True.Fixed templates to work with Bootstrap 3.0.0 column design.0.2.8 (2013-09-02)Improved usage documentation.Corrected order of fields in StripeSubscriptionSignupForm.Corrected transaction history template layout.Updated models to take into account when settings.USE_TZ is disabled.0.2.7 (2013-08-24)Add handy rest_framework permission class.Fixing attribution for django-stripe-payments.Add new status to Invoice model.0.2.6 (2013-08-20)Changed name of division tag to djdiv.Addedsafe_setting.pymodule to handle edge cases when working with custom user models.Added cookbook page in the documentation.0.2.5 (2013-08-18)Fixed bug in initial checkoutYou can’t purchase the same plan that you currently have.0.2.4 (2013-08-18)Recursive package finding.0.2.3 (2013-08-16)Fix packaging so all submodules are loaded0.2.2 (2013-08-15)Added Registration + Subscription form0.2.1 (2013-08-12)Fixed a bug on CurrentSubscription testsImproved usage documentationAdded to migration from other tools documentation0.2.0 (2013-08-12)Cancellation of plans now works.Upgrades and downgrades of plans now work.Changing of cards now works.Added breadcrumbs to improve navigation.Improved installation instructions.Consolidation of test instructions.Minor improvement to django-stripe-payments documentationAdded coverage.py to test process.Added south migrations.Fixed the subscription_payment_required function-based view decorator.Removed unnecessary django-crispy-forms0.1.7 (2013-08-08)Middleware excepts all of the djstripe namespaced URLs. This way people can pay.0.1.6 (2013-08-08)Fixed a couple template pathsFixed the manifest so we include html, images.0.1.5 (2013-08-08)Fixed the manifest so we include html, css, js, images.0.1.4 (2013-08-08)Change PaymentRequiredMixin to SubscriptionPaymentRequiredMixinAdd subscription_payment_required function-based view decoratorAdded SubscriptionPaymentRedirectMiddlewareMuch nicer accounts view displayMuch improved subscription form displayPayment plans can have decimalsPayment plans can have custom images0.1.3 (2013-08-7)Added account viewAdded Customer.get_or_create methodAdded djstripe_sync_customers management commandsync file for all code that keeps things in sync with stripeUse client-side JavaScript to get history data asynchronouslyMore user friendly action views0.1.2 (2013-08-6)Admin workingBetter publish statementFix dependencies0.1.1 (2013-08-6)Ported internals from django-stripe-paymentsBegan writing the viewsTravis-CIAll tests passing on Python 2.7 and 3.3All tests passing on Django 1.4 and 1.5Began model cleanupBetter formProvide better response from management commands0.1.0 (2013-08-5)First release on PyPI.