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)
User Authentication In Django/Ajax/Jquery

User Authentication In Django/Ajax/Jquery Demo: Authentication System Using Django/Ajax/Jquery Demo: Authentication System Using Django Overview The D

Suman Raj Khanal 10 Mar 26, 2022
The little ASGI framework that shines. 🌟

✨ The little ASGI framework that shines. ✨ Documentation: https://www.starlette.io/ Community: https://discuss.encode.io/c/starlette Starlette Starlet

Encode 7.7k Dec 31, 2022
Dynamic, database-driven Django forms

Django Dataforms django-dataforms is a wrapper for the Django forms API that lets you dynamically define forms in a database, rather than hard-coding

35 Dec 16, 2022
Django model mixins and utilities.

django-model-utils Django model mixins and utilities. django-model-utils supports Django 2.2+. This app is available on PyPI. Getting Help Documentati

Jazzband 2.4k Jan 04, 2023
A simple porfolio with Django, Bootstrap and Sqlite3

Django Portofolio Example this is a basic portfolio in dark mode Installation git clone https://github.com/FaztWeb/django-portfolio-simple.git cd djan

Fazt Web 16 Sep 26, 2022
It takes time to start a Django Project and make it almost production-ready.

It takes time to start a Django Project and make it almost production-ready. A developer needs to spend a lot of time installing required libraries, setup a database, setup cache as well as hiding se

Khan Asfi Reza 1 Jan 01, 2022
Django CacheMiddleware has a multi-threading issue with pylibmc

django-pylibmc-bug Django CacheMiddleware has a multi-threading issue with pylibmc. CacheMiddleware shares a thread-unsafe cache object with many thre

Iuri de Silvio 1 Oct 19, 2022
A Django Demo Project of Students Management System

Django_StudentMS A Django Demo Project of Students Management System. From NWPU Seddon for DB Class Pre. Seddon simplify the code in 2021/10/17. Hope

2 Dec 08, 2021
Full control of form rendering in the templates.

django-floppyforms Full control of form rendering in the templates. Authors: Gregor Müllegger and many many contributors Original creator: Bruno Renié

Jazzband 811 Dec 01, 2022
Yet another Django audit log app, hopefully the simplest one.

django-easy-audit Yet another Django audit log app, hopefully the easiest one. This app allows you to keep track of every action taken by your users.

Natán 510 Jan 02, 2023
django social media app with real time features

django-social-media django social media app with these features: signup, login and old registered users are saved by cookies posts, comments, replies,

8 Apr 30, 2022
Sampling profiler for Python programs

py-spy: Sampling profiler for Python programs py-spy is a sampling profiler for Python programs. It lets you visualize what your Python program is spe

Ben Frederickson 9.5k Jan 01, 2023
Getdp-project - A Django-built web app that generates a personalized banner of events to come

getdp-project https://get-my-dp.herokuapp.com/ A Django-built web app that gener

CODE 4 Aug 01, 2022
Quick example of a todo list application using Django and HTMX

django-htmx-todo-list Quick example of a todo list application using Django and HTMX Background Modified & expanded from https://github.com/jaredlockh

Jack Linke 54 Dec 10, 2022
Django-fast-export - Utilities for quickly streaming CSV responses to the client

django-fast-export Utilities for quickly streaming CSV responses to the client T

Matthias Kestenholz 4 Aug 24, 2022
Django server-side adapter for Inertia.js

django-inertia Django server-side new adapter for Inertia.js. Getting Started Install the package pip install django-inertia Configure your project A

Samuel Girardin 14 Sep 16, 2022
Django admin CKEditor integration.

Django CKEditor NOTICE: django-ckeditor 5 has backward incompatible code moves against 4.5.1. File upload support has been moved to ckeditor_uploader.

2.2k Jan 02, 2023
Use heroicons in your Django and Jinja templates.

heroicons Use heroicons in your Django and Jinja templates. Requirements Python 3.6 to 3.9 supported. Django 2.2 to 3.2 supported. Are your tests slow

Adam Johnson 52 Dec 14, 2022
Rosetta is a Django application that eases the translation process of your Django projects

Rosetta Rosetta is a Django application that facilitates the translation process of your Django projects. Because it doesn't export any models, Rosett

Marco Bonetti 909 Dec 26, 2022
Django-discord-bot - Framework for creating Discord bots using Django

django-discord-bot Framework for creating Discord bots using Django Uses ASGI fo

Jamie Bliss 1 Mar 04, 2022