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 for managing robots.txt files following the robots exclusion protocol

Django Robots This is a basic Django application to manage robots.txt files following the robots exclusion protocol, complementing the Django Sitemap

Jazzband 406 Dec 26, 2022
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+bootstrap5 实现的 个人博客

项目状态: 正在开发中【目前已基本可用】 项目地址: https://github.com/find456789/django_blog django_blog django+bootstrap5 实现的 个人博客 特点 文章的历史版本管理(随时回退) rss、atom markdown 评论功能

名字 3 Nov 16, 2021
This is a template tag project for django to calculate in templates , enjoy it

Calculator-Template-Django this is a template tag project for django to calculate in templates , enjoy it Get Started : 1 - Download Source Code 2 - M

1 Feb 01, 2022
Store events and publish to Kafka

Create an event from Django ORM object model, store the event into the database and also publish it into Kafka cluster.

Diag 6 Nov 30, 2022
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
Opinionated boilerplate for starting a Django project together with React front-end library and TailwindCSS CSS framework.

Opinionated boilerplate for starting a Django project together with React front-end library and TailwindCSS CSS framework.

João Vítor Carli 10 Jan 08, 2023
Django With VueJS Blog App

django-blog-vue-app frontend Project setup yarn install Compiles and hot-reload

Flavien HUGS 2 Feb 04, 2022
Dockerizing Django with Postgres, Gunicorn, Nginx and Certbot. A fully Django starter project.

Dockerizing Django with Postgres, Gunicorn, Nginx and Certbot 🚀 Features A Django stater project with fully basic requirements for a production-ready

8 Jun 27, 2022
This "I P L Team Project" is developed by Prasanta Kumar Mohanty using Python with Django web framework, HTML & CSS.

I-P-L-Team-Project This "I P L Team Project" is developed by Prasanta Kumar Mohanty using Python with Django web framework, HTML & CSS. Screenshots HO

1 Dec 15, 2021
Source files for a free pyRevit toolbar.

pyRoovit (WIP) What is this? PyRoovit is/will be a toolbar for the use with pyRevit built by Gavin Crump (aka Aussie BIM Guru). Having used and taught

Gavin Crump 11 Nov 10, 2022
It's the assignment 1 from the Python 2 course, that requires a ToDoApp with authentication using Django

It's the assignment 1 from the Python 2 course, that requires a ToDoApp with authentication using Django

0 Jan 20, 2022
Redia Cache implementation in django.

django-redis Recipe APP Simple Recipe app which shows different kinds off recipe to the user. Why Cache ? Accessing data from cache is much faster tha

Avinash Alanjkar 1 Sep 21, 2022
A drop-in replacement for django's ImageField that provides a flexible, intuitive and easily-extensible interface for quickly creating new images from the one assigned to the field.

django-versatileimagefield A drop-in replacement for django's ImageField that provides a flexible, intuitive and easily-extensible interface for creat

Jonathan Ellenberger 490 Dec 13, 2022
:couple: Multi-user accounts for Django projects

django-organizations Summary Groups and multi-user account management Author Ben Lopatin (http://benlopatin.com / https://wellfire.co) Status Separate

Ben Lopatin 1.1k Jan 01, 2023
A visual indicator of what environment/system you're using in django

A visual indicator of what environment/system you're using in django

Mark Walker 4 Nov 26, 2022
Get inside your stronghold and make all your Django views default login_required

Stronghold Get inside your stronghold and make all your Django views default login_required Stronghold is a very small and easy to use django app that

Mike Grouchy 384 Nov 23, 2022
Mobile Detect is a lightweight Python package for detecting mobile devices (including tablets).

Django Mobile Detector Mobile Detect is a lightweight Python package for detecting mobile devices (including tablets). It uses the User-Agent string c

Botir 6 Aug 31, 2022
Management commands to help backup and restore your project database and media files

Django Database Backup This Django application provides management commands to help backup and restore your project database and media files with vari

687 Jan 04, 2023
CRUD with MySQL, Django and Sass.

CRUD with MySQL, Django and Sass. To have the same data in db: insert into crud_employee (first_name, last_name, email, phone, location, university) v

Luis Quiñones Requelme 1 Nov 19, 2021