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 Django app that allows visitors to interact with your site as a guest user without requiring registration.

django-guest-user A Django app that allows visitors to interact with your site as a guest user without requiring registration. Largely inspired by dja

Julian Wachholz 21 Dec 17, 2022
Django project starter on steroids: quickly create a Django app AND generate source code for data models + REST/GraphQL APIs (the generated code is auto-linted and has 100% test coverage).

Create Django App 💛 We're a Django project starter on steroids! One-line command to create a Django app with all the dependencies auto-installed AND

imagine.ai 68 Oct 19, 2022
Easily share data across your company via SQL queries. From Grove Collab.

SQL Explorer SQL Explorer aims to make the flow of data between people fast, simple, and confusion-free. It is a Django-based application that you can

Grove Collaborative 2.1k Dec 30, 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
Wrapping Raml around Django rest-api's

Ramlwrap is a toolkit for Django which allows a combination of rapid server prototyping as well as enforcement of API definition from the RAML api. R

Jmons 8 Dec 27, 2021
A test microblog project created using Django 4.0

django-microblog This is a test microblog project created using Django 4.0. But don't worry this is a fully working project. There is no super-amazing

Ali Kasimoglu 8 Jan 14, 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
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 social media made with Django and Python and Bulma. 🎉

Vitary A simple social media made with Django Installation 🛠️ Get the source code 💻 git clone https://github.com/foxy4096/Vitary.git Go the the dir

Aditya Priyadarshi 15 Aug 30, 2022
Cached file system for online resources in Python

Minato Cache & file system for online resources in Python Features Minato enables you to: Download & cache online recsources minato supports the follo

Yasuhiro Yamaguchi 10 Jan 04, 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
Simple XML-RPC and JSON-RPC server for modern Django

django-modern-rpc Build an XML-RPC and/or JSON-RPC server as part of your Django project. Major Django and Python versions are supported Main features

Antoine Lorence 82 Dec 04, 2022
Django Girls Tutorial Workshop

Django Girls Tutorial Workshop A log of activities during the workshop. this is an H2 git remote add origin https://github.com/ahuimanu/django_girls_t

Jeffry Babb 1 Oct 27, 2021
Ugly single sign-on for django projects only

django-usso Ugly single sign-on for django projects only. Do you have many django apps with different users? Do you want to use only one of those apps

Erwin Feser 1 Mar 01, 2022
Django-Audiofield is a simple app that allows Audio files upload, management and conversion to different audio format (mp3, wav & ogg), which also makes it easy to play audio files into your Django application.

Django-Audiofield Description: Django Audio Management Tools Maintainer: Areski Contributors: list of contributors Django-Audiofield is a simple app t

Areski Belaid 167 Nov 10, 2022
this is a simple backend for instagram with python and django

simple_instagram_backend this is a simple backend for instagram with python and django it has simple realations and api in 4 diffrent apps: 1-users: a

2 Oct 20, 2021
Automatically reload your browser in development.

django-browser-reload Automatically reload your browser in development. Requirements Python 3.6 to 3.10 supported. Django 2.2 to 4.0 supported. Are yo

Adam Johnson 254 Jan 04, 2023
Indonesia's negative news detection using gaussian naive bayes with Django+Scikir Learn

Introduction Indonesia's negative news detection using gaussian naive bayes build with Django and Scikit Learn. There is also any features, are: Input

Harifzi Ham 1 Dec 30, 2021
Alt1-compatible widget host for RuneScape 3

RuneKit Alt1-compatible toolbox for RuneScape 3, for Linux and macOS. Compatibility macOS installation guide Running This project use Poetry as packag

Manatsawin Hanmongkolchai 75 Nov 28, 2022
Django Starter is a simple Skeleton to start with a Django project.

Django Starter Template Description Django Starter is a simple Skeleton to start

Numan Ibn Mazid 1 Jan 10, 2022