A Django app to accept payments from various payment processors via Pluggable backends.

Related tags

Djangomerchant
Overview

Django-Merchant

TravisCI

Django-Merchant is a django application that enables you to use multiple payment processors from a single API.

Gateways

Following gateways are supported:

  • Authorize.net
  • Paypal
  • Eway
  • Braintree Payments (Server to Server)
  • Stripe
  • Paylane
  • WePay
  • Beanstream
  • Chargebee
  • Global Iris

Off-Site Processing

  • Paypal
  • RBS WorldPay
  • Amazon FPS
  • Braintree Payments (Transparent Redirect)
  • Stripe.js
  • eWAY
  • Authorize.net Direct Post Method
  • Global Iris RealMPI

Other

  • Bitcoin

Documentation

Documentation is automatically built and published online at:

http://readthedocs.org/docs/django-merchant/en/latest/

Support

There is a mailing list where discussion regarding the development and usage of merchant happens:

http://groups.google.com/group/django-merchant/

Comments
  • Misc Google Checkout fixes

    Misc Google Checkout fixes

    Hi,

    This pull request fixes the following issues:

    • Template tags can be loaded individually, rather than needing to load the tags for all integrations:

      {% load google_checkout from google_checkout_tags %}

    This means you do not need to setup the PayPal config if you are only using Google Checkout (as billing_tags will raise an exception if PayPal settings are not found in settings.py).

    • Documentation fixes for Google Checkout integration (two of the examples were incorrect).

    This is a great library, thank you! :)

    opened by mikery 9
  • multiple items for paypal checkout

    multiple items for paypal checkout

    Is there anyway I can add in multiple items in add_fields?

    pay_pal.add_fields({ "business": "[email protected]", "item_name": "Test Item", "invoice": "UID", "notify_url": "http://example.com/paypal-ipn-handler/", "return_url": "http://example.com/paypal/", "cancel_return": "http://example.com/paypal/unsuccessful/", "amount": 100})

    I want to be able to show the price breakdown based on the items an user wants to purchase on the paypal screen.

    opened by jinxee 7
  • Add Rapid API documentation link for offsite eWAY

    Add Rapid API documentation link for offsite eWAY

    For some fields it's not clear what the supported values are, or even what they mean (e.g. transaction_status). I've added a link to the actual API docs.

    opened by bradleyayers 6
  • Recurring and Direct Payment API Integration for Eway.

    Recurring and Direct Payment API Integration for Eway.

    Hi Agiliq,

    The pull request includes, implementation of following API for Eway Gateway.

    Recurring Payment API: http://www.eway.com.au/developers/api/recurring Direct Payment API : http://www.eway.com.au/developers/api/direct-payments

    lalit

    opened by lalitchandnani 5
  • Preliminar Paylane support

    Preliminar Paylane support

    Hi, I updated merchant with some support for the Paylane gateway (operates in Europe). It's not complete, but it's a good start and the implementation needed for SaaS companies (one-time billing and recurring) is done. Would love to see this being merged into the official branch as it should allow other to take the Paylane gateway implementation to 100%.

    opened by cpinto 5
  • Add Global Iris RealAuth gateway and RealMPI integration

    Add Global Iris RealAuth gateway and RealMPI integration

    This is a fairly large patch, but it is fully tested, and was implemented test driven from the beginning. (88% and 95% code coverage for the two main modules).

    It also includes docs, including a (stripped down) version of the code you need to bind it all together (which I developed hand-in-hand with the billing code.

    In order to implement this, I added a few completely backwards compatible conveniences to other parts of the code base:

    • CreditCard now accepts cardholder_name as an alternative to first_name and last_name. (I've never seen a credit card form that accepts first/last name, actually). Tested and documented.
    • billing.forms.common.CreditCardFormBase - a base class that has some conveniences for creating credit card forms. Only used by billing.forms.global_iris_forms.CreditCardForm currently. Tested and documented with docstrings. The Global Iris docs also have an example of it being used.
    • billing.tests.utils.BetterXMLCompareMixin - provides "assertXMLEqual" which is like Django's, but much more helpful at locating the differences between some chunks of XML.
    opened by spookylukey 4
  • Boto version for Amazon FPS?

    Boto version for Amazon FPS?

    It seems Amazon FPS is broken for me. The generated integration link is blank and the test breaks:

    ./manage.py test billing.AmazonFPSTestCase
    ----------------------------------------------------------------------
    Traceback (most recent call last):
    File "/Users/hakan/Sites/merchant_test/example/billing/tests/amazon_fps_tests.py", line 24, in testLinkGen
    self.assertEquals(pregen_link, link.strip())
    AssertionError: '<a href="https://authorize.payments-sandbox.amazon.com/cobranded-ui/actions/start?callerKey=AKIAJ2AXTZNZRXZTJWDA&callerReference=100&paymentReason=Digital%20Download&pipelineName=SingleUse&returnURL=http%3A%2F%2Flocalhost%2Ffps%2Ffps-return-url%2F&signature=oSnkew7oCBPVk0IVZAjO87Ogsp4EO7jRlELaFwtqWzY%3D&signatureMethod=HmacSHA256&signatureVersion=2&transactionAmount=30"><img src="http://g-ecx.images-amazon.com/images/G/01/cba/b/p3.gif" alt="Amazon Payments" /></a>' != u'<a href=""><img src="http://g-ecx.images-amazon.com/images/G/01/cba/b/p3.gif" alt="Amazon Payments" /></a>
    

    Further research shows that the issue is in the link_url method of AmazonFPSIntegration here: https://github.com/agiliq/merchant/blob/master/billing/integrations/amazon_fps_integration.py#L58

    A call is being make to the make_url method of boto.fps.connection.FPSConnection, which has been renamed to cbui_url in the latest version of boto (2.5.2) (see here: https://github.com/boto/boto/blob/develop/boto/fps/connection.py#L198 and here: https://github.com/boto/boto/commit/d4e1d221f142b79a529130888c588f6e83c58bf3#L2L174)

    What version of boto should we be using to use django-merchant? It would be helpful to include version information alongside the requirements in the documentation.

    opened by hakanb 4
  • Python 3 imports in __init__.py

    Python 3 imports in __init__.py

    I get

    ImportError: No module named 'gateway'

    When I import billing in Python 3.3. The solution is to replace biling/init.py with

    from .gateway import Gateway, get_gateway, GatewayNotConfigured from .integration import Integration, get_integration, IntegrationNotConfigured from .utils.credit_card import CreditCard

    Everything seems ok. To get Amazon/Paypal to work I also needed to replace init.py inside billing/models to have the right import syntax in Python 3.3

    opened by sujitnair 3
  • Fix stripe test

    Fix stripe test

    The two test cases, testRecurring1, and testStoreWithoutBillingAddress, are not working. This is a minor fix to the two tests. In addition to the fix, since I use PyCharm IDE and I believe many others do as well, I suppose it wouldn't hurt to ignore the aux files folder in .gitignore.

    opened by tyc85 2
  • Updating raw_post_data to body

    Updating raw_post_data to body

    Amazon FPS doesn't work because of

    https://code.djangoproject.com/ticket/17323

    Can we replace request.raw_post_data to request.body? Not sure how to best handle reverse compatibility.

    opened by sujitnair 2
  • Django 1.7 support

    Django 1.7 support

    With Django==1.7.2 the following Warnings show up when running ./manage.py validate:

    System check identified some issues:
    
    WARNINGS:
    billing.PinCharge.success: (1_6.W002) BooleanField does not have a default value.
        HINT: Django 1.6 changed the default value of BooleanField from False to None. See https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield for more information.
    billing.PinRefund.success: (1_6.W002) BooleanField does not have a default value.
        HINT: Django 1.6 changed the default value of BooleanField from False to None. See https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield for more information.
    
    System check identified 2 issues (0 silenced).
    
    opened by littlepea 2
  • Bump suds from 0.4 to 1.0.0 in /example

    Bump suds from 0.4 to 1.0.0 in /example

    Bumps suds from 0.4 to 1.0.0.

    Changelog

    Sourced from suds's changelog.

    version 1.0.0, 1.0.0-beta.1, 1.0.0-beta.2 (2021-09-13)

    • Drop support for python 2.x

    version 0.8.5 (2021-05-14)

    • R4201 Any PASSWORD MUST specify a Type attribute
    • Compress or decompress message when Content-Encoding is present in headers
    • Do not force byte-compilation optimization at level 1

    version 0.8.4 (2019-12-21)

    • Add per invocation timeout
    • Ensure request headers set in options are used to fetch definitions

    version 0.8.3 (2019-06-24)

    • Fix pypi description format

    version 0.8.2 (2019-06-23)

    • Add option to disable the sorting of namespaces.
    • Add option to allow unknown message parts.

    version 0.8.1 (2019-02-06)

    • Fix bug introduced in 0.8.0, initialize optional arrays with empty lists (@​guifran001)

    version 0.8.0 (2019-01-31)

    version 0.7.3 (2019-01-04)

    version 0.7.2 (2018-10-25)

    version 0.7.1 (2018-10-15)

    version 0.7.0 (2018-09-29)

    • Based on revision 712 (1e48fd79a1fc323006826439e469ba7b3d2b5a68)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump lxml from 3.4.1 to 4.9.1 in /example

    Bump lxml from 3.4.1 to 4.9.1 in /example

    Bumps lxml from 3.4.1 to 4.9.1.

    Changelog

    Sourced from lxml's changelog.

    4.9.1 (2022-07-01)

    Bugs fixed

    • A crash was resolved when using iterwalk() (or canonicalize()) after parsing certain incorrect input. Note that iterwalk() can crash on valid input parsed with the same parser after failing to parse the incorrect input.

    4.9.0 (2022-06-01)

    Bugs fixed

    • GH#341: The mixin inheritance order in lxml.html was corrected. Patch by xmo-odoo.

    Other changes

    • Built with Cython 0.29.30 to adapt to changes in Python 3.11 and 3.12.

    • Wheels include zlib 1.2.12, libxml2 2.9.14 and libxslt 1.1.35 (libxml2 2.9.12+ and libxslt 1.1.34 on Windows).

    • GH#343: Windows-AArch64 build support in Visual Studio. Patch by Steve Dower.

    4.8.0 (2022-02-17)

    Features added

    • GH#337: Path-like objects are now supported throughout the API instead of just strings. Patch by Henning Janssen.

    • The ElementMaker now supports QName values as tags, which always override the default namespace of the factory.

    Bugs fixed

    • GH#338: In lxml.objectify, the XSI float annotation "nan" and "inf" were spelled in lower case, whereas XML Schema datatypes define them as "NaN" and "INF" respectively.

    ... (truncated)

    Commits
    • d01872c Prevent parse failure in new test from leaking into later test runs.
    • d65e632 Prepare release of lxml 4.9.1.
    • 86368e9 Fix a crash when incorrect parser input occurs together with usages of iterwa...
    • 50c2764 Delete unused Travis CI config and reference in docs (GH-345)
    • 8f0bf2d Try to speed up the musllinux AArch64 build by splitting the different CPytho...
    • b9f7074 Remove debug print from test.
    • b224e0f Try to install 'xz' in wheel builds, if available, since it's now needed to e...
    • 897ebfa Update macOS deployment target version from 10.14 to 10.15 since 10.14 starts...
    • 853c9e9 Prepare release of 4.9.0.
    • d3f77e6 Add a test for https://bugs.launchpad.net/lxml/+bug/1965070 leaving out the a...
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump django from 1.8 to 2.2.24 in /example

    Bump django from 1.8 to 2.2.24 in /example

    Bumps django from 1.8 to 2.2.24.

    Commits
    • 2da029d [2.2.x] Bumped version for 2.2.24 release.
    • f27c38a [2.2.x] Fixed CVE-2021-33571 -- Prevented leading zeros in IPv4 addresses.
    • 053cc95 [2.2.x] Fixed CVE-2021-33203 -- Fixed potential path-traversal via admindocs'...
    • 6229d87 [2.2.x] Confirmed release date for Django 2.2.24.
    • f163ad5 [2.2.x] Added stub release notes and date for Django 2.2.24.
    • bed1755 [2.2.x] Changed IRC references to Libera.Chat.
    • 63f0d7a [2.2.x] Refs #32718 -- Fixed file_storage.test_generate_filename and model_fi...
    • 5fe4970 [2.2.x] Post-release version bump.
    • 61f814f [2.2.x] Bumped version for 2.2.23 release.
    • b8ecb06 [2.2.x] Fixed #32718 -- Relaxed file name validation in FileField.
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Latest Django versions imcompatibility

    Latest Django versions imcompatibility

    I noticed that this library has been deprecated until Django 1.9 Is there a new version of Django Merchant instead?

    I'm doing a migration of an app from 1.6 to 1.11 and the app i'm woriking on is using this library.

    Regards.

    opened by stevensdotb 0
Releases(v0.2)
  • v0.2(Dec 2, 2013)

    General:

    • Unit tests are skipped unless the corresponding gateways are configured
    • Bugfix - Use settings.AUTH_USER_MODEL instead of get_user_model
    • Demo - fill up initial data for all gateways

    Beanstream gateway:

    • Adding recurring payment support for Beanstream gateway

    Eway gateway:

    • Improved tests for purchase, failure

    and other small bugfixes, docs.

    Source code(tar.gz)
    Source code(zip)
  • v0.1(Oct 14, 2013)

  • 0.1(Oct 14, 2013)

  • 0.09a(Jul 5, 2013)

    Changelog:

    • Added travis CI - https://travis-ci.org/agiliq/merchant
    • Added multiple items support in paypal integration
    • Added bootstrap theme to demo - http://merchant.agiliq.com/
    • Added recurring and direct payment API in eWay gateway.
    • Added digital content and subscriptions support to Google Checkout integration
    • Added ogone payments integration
    • Removed Samurai integration
    • Unified all integration templatetags to a single tag - render_integration

    Backward incompatible changes:

    • Samurai integration has been removed
    • If you're using the templatetag for integrations, please update your templates to use the new unified render_integration templatetag.
    Source code(tar.gz)
    Source code(zip)
A helper for organizing Django project settings by relying on well established programming patterns.

django-configurations django-configurations eases Django project configuration by relying on the composability of Python classes. It extends the notio

Jazzband 953 Dec 29, 2022
Django/Jinja template indenter

DjHTML A pure-Python Django/Jinja template indenter without dependencies. DjHTML is a fully automatic template indenter that works with mixed HTML/CSS

Return to the Source 378 Jan 01, 2023
A set of high-level abstractions for Django forms

django-formtools Django's "formtools" is a set of high-level abstractions for Django forms. Currently for form previews and multi-step forms. This cod

Jazzband 621 Dec 30, 2022
Automated image processing for Django. Currently v4.0

ImageKit is a Django app for processing images. Need a thumbnail? A black-and-white version of a user-uploaded image? ImageKit will make them for you.

Matthew Dapena-Tretter 2.1k Jan 04, 2023
Plug and play continuous integration with django and jenkins

django-jenkins Plug and play continuous integration with Django and Jenkins Installation From PyPI: $ pip install django-jenkins Or by downloading th

Mikhail Podgurskiy 941 Oct 22, 2022
Django Audit is a simple Django app that tracks and logs requests to your application.

django-audit Django Audit is a simple Django app that tracks and logs requests to your application. Quick Start Install django-audit pip install dj-au

Oluwafemi Tairu 6 Dec 01, 2022
Fully reponsive Chat Application built with django, javascript, materialUi, bootstrap4, html and css.

Chat app (Full Stack Frameworks with Django Project) Fully reponsive Chat Application built with django, javascript, materialUi, bootstrap4, html and

1 Jan 19, 2022
Basic implementation of Razorpay payment gateway 💳 with Django

Razorpay Payment Integration in Django 💥 In this project Razorpay payment gateway 💳 is integrated with Django by breaking down the whole process int

ScaleReal 12 Dec 12, 2022
Use webpack to generate your static bundles without django's staticfiles or opaque wrappers.

django-webpack-loader Use webpack to generate your static bundles without django's staticfiles or opaque wrappers. Django webpack loader consumes the

2.4k Dec 24, 2022
📊📈 Serves up Pandas dataframes via the Django REST Framework for use in client-side (i.e. d3.js) visualizations and offline analysis (e.g. Excel)

Django REST Pandas Django REST Framework + pandas = A Model-driven Visualization API Django REST Pandas (DRP) provides a simple way to generate and se

wq framework 1.2k Jan 01, 2023
A pluggable Django application for integrating PayPal Payments Standard or Payments Pro

Django PayPal Django PayPal is a pluggable application that integrates with PayPal Payments Standard and Payments Pro. See https://django-paypal.readt

Luke Plant 672 Dec 22, 2022
An opinionated Django CMS setup bundled as an Aldryn Addon

Aldryn CMS |PyPI Version| An opinionated django CMS setup bundled as an Aldryn Addon. This package will auto configure django CMS including some extra

Vladimir Bezrukov 1 Nov 12, 2021
wagtail_tenants is a Django/Wagtail app to provide multitenancy to your wagtail project.

wagtail-tenants wagtail_tenants is a Django/Wagtail app to provide multitenancy to your wagtail project. You are able to run a main Wagtail Site and f

<bbr> 11 Nov 20, 2022
A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries A Django application that provides country choices for use with forms, flag icons static files, and a country field for models. Insta

Chris Beaven 1.2k Jan 07, 2023
A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries A Django application that provides country choices for use with forms, flag icons static files, and a country field for models. Insta

Chris Beaven 1.2k Dec 31, 2022
Utilities to make function-based views cleaner, more efficient, and better tasting.

django-fbv Utilities to make Django function-based views cleaner, more efficient, and better tasting. 💥 📖 Complete documentation: https://django-fbv

Adam Hill 49 Dec 30, 2022
Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes

Bleach Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes. Bleach can also linkify text safely, appl

Mozilla 2.5k Dec 29, 2022
A UUIDField for Django

django-uuidfield Provides a UUIDField for your Django models. Installation Install it with pip (or easy_install): pip install django-uuidfield Usage

David Cramer 265 Nov 30, 2022
Django-shared-app-isolated-databases-example - Django - Shared App & Isolated Databases

Django - Shared App & Isolated Databases An app that demonstrates the implementa

Ajai Danial 5 Jun 27, 2022
Django-pwned - A collection of django password validators

Django Pwned A collection of django password validators. Compatibility Python: 3

Quera 22 Jun 27, 2022