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 Minimalistic Modern Django Boilerplate

A Minimalistic Modern Django Boilerplate This boilerplate is mainly for educational purposes. It is meant to be cloned as a starter code for future tu

Jonathan Adly 21 Nov 02, 2022
Django-static-site - A simple content site framework that harnesses the power of Django without the hassle

coltrane A simple content site framework that harnesses the power of Django with

Adam Hill 57 Dec 06, 2022
Phoenix LiveView but for Django

Reactor, a LiveView library for Django Reactor enables you to do something similar to Phoenix framework LiveView using Django Channels. What's in the

Eddy Ernesto del Valle Pino 526 Jan 02, 2023
A Django app to accept payments from various payment processors via Pluggable backends.

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

Agiliq 997 Dec 24, 2022
This is a repository for a web application developed with Django, built with Crowdbotics

assignment_32558 This is a repository for a web application developed with Django, built with Crowdbotics Table of Contents Project Structure Features

Crowdbotics 1 Dec 29, 2021
This is a personal django website for forum posts

Django Web Forum This is a personal django website for forum posts It includes login, registration and forum posts with date time. Tech / Framework us

5 May 12, 2022
This is django-import-export module that exports data into many formats

django-import-export This is django-import-export module which exports data into many formats, you can implement this in your admin panel. - Dehydrat

Shivam Rohilla 3 Jun 03, 2021
A simple page with paypal payment and confiramtion in django

django-paypal a simple page with paypal payment and confiramtion in django Youtube Video : Paypal Smart Button : https://developer.paypal.com/demo/che

Mahmoud Ahmed 5 Feb 19, 2022
A simple demonstration of how a django-based website can be set up for local development with microk8s

Django with MicroK8s Start Building Your Project This project provides a Django web app running as a single node Kubernetes cluster in microk8s. It is

Noah Jacobson 19 Oct 22, 2022
Bringing together django, django rest framework, and htmx

This is Just an Idea There is no code, this README just represents an idea for a minimal library that, as of now, does not exist. django-htmx-rest A l

Jack DeVries 5 Nov 24, 2022
Integarting Celery with Django to asynchronous tasks 📃

Integrating 🔗 Celery with Django via Redis server ,To-Do asynchronously 👀task without stopping the main-flow 📃 of Django-project . It increase your speed 🚀 and user experience 🤵 of website

Rushi Patel 4 Jul 15, 2022
Py-instant-search-redis - Source code example for how to build an instant search with redis in python

py-instant-search-redis Source code example for how to build an instant search (

Giap Le 4 Feb 17, 2022
This is a sample Django Form.

Sample FORM Installation guide Clone repository git clone https://github.com/Ritabratadas343/SampleForm.git cd to repository. Create a virtualenv by f

Ritabrata Das 1 Nov 05, 2021
An API was build with Django to store and retrieve information about various musical instruments.

The project is meant to be a starting point, an experimentation or a basic example of a way to develop an API with Django. It is an exercise on using Django and various python technologies and design

Kostas Ziovas 2 Dec 25, 2021
A Django web application that allows you to be in the loop about everything happening in your neighborhood.

A Django web application that allows you to be in the loop about everything happening in your neighborhood. From contact information of different handyman to meeting announcements or even alerts.

Kennedy Ngugi Mwaura 3 Dec 11, 2022
Boilerplate Django Blog for production deployments!

CFE Django Blog THIS IS COMING SOON This is boilerplate code that you can use to learn how to bring Django into production. TLDR; This is definitely c

Coding For Entrepreneurs 26 Dec 09, 2022
Full-featured django project start tool.

django-start-tool Introduction django-start-tool is a full-featured replacement for django-admin startproject which provides cli for creating the same

Georgy Gnezdilov 0 Aug 30, 2022
Django And React Notes App

Django & React Notes App Cloning the repository -- Clone the repository using the command below : git clone https://github.com/divanov11/Django-React

Dennis Ivy 136 Dec 27, 2022
Wagtail - Vue - Django : The initial environment of full-stack local dev web app with wagtail and vue

Wagtail - Vue - Django : The initial environment of full-stack local dev web app with wagtail and vue. A demo to show how to use .vue files inside django app.

Quang PHAM 2 Oct 20, 2022
An URL Shortener with Basic Features.

Simple Url Shortener What is that? Yet another url shortener built with Django framework. Preview HOW TO RUN? 1. Virtual Environment First create a vi

Ethem Turgut 6 Jan 25, 2022