Skip to main content

django-getpaid

PyPI version Python versions Django versions License Documentation

Multi-broker payment processing framework for Django.

django-getpaid is a flexible, modular payment processing wrapper for Django, built on the framework-agnostic getpaid-core. It allows you to integrate multiple payment gateways into your application using a unified API.

Key Features

  • Unified API: Process payments across different brokers (PayU, Paynow, BitPay, etc.) using the same logic.
  • Pluggable Architecture: Easily add new payment backends or swap existing ones.
  • Semantic Payment Flow: Robust payment status management driven by semantic payment updates and provider metadata.
  • Asynchronous Updates: Built-in support for both push (webhook) and pull (status check) notifications.
  • REST and POST Support: Handles both modern RESTful APIs and traditional POST-form redirects.
  • Swappable Models: Customize your Order and Payment models to fit your business logic (uses swapper).
  • Template Customization: Full control over payment selection and confirmation pages.
  • Type Safety: Built with modern Python types for better IDE support and reliability.

Installation

Install the package using pip:

pip install django-getpaid

Or using uv:

uv add django-getpaid

You should also install at least one payment backend, for example:

pip install python-getpaid-payu python-getpaid-paynow

Quick Start

1. Define your Order model

Subclass AbstractOrder and implement the required methods:

from django.db import models
from django.conf import settings
from getpaid.abstracts import AbstractOrder

class Order(AbstractOrder):
    amount = models.DecimalField(decimal_places=2, max_digits=8)
    currency = models.CharField(max_length=3, default="PLN")
    description = models.CharField(max_length=128)
    buyer = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

    def get_total_amount(self):
        return self.amount

    def get_currency(self):
        return self.currency

    def get_buyer_info(self):
        return {"email": self.buyer.email}

    def get_description(self):
        return self.description

2. Configure Settings

Add getpaid and your chosen backends to INSTALLED_APPS and configure the models:

INSTALLED_APPS = [
    # ...
    "getpaid",
    "getpaid_payu",
    "getpaid_paynow",
    "yourapp",
]

GETPAID_ORDER_MODEL = "yourapp.Order"

# Optional: Customize the Payment model
# GETPAID_PAYMENT_MODEL = "yourapp.CustomPayment"

GETPAID_BACKEND_SETTINGS = {
    "getpaid_payu.processor.PayUProcessor": {
        "pos_id": 12345,
        "second_key": "your-second-key",
        "oauth_id": 12345,
        "oauth_secret": "your-oauth-secret",
        "sandbox": True,
    },
    "getpaid_paynow.processor.PaynowProcessor": {
        "api_key": "your-api-key",
        "signature_key": "your-signature-key",
        "sandbox": True,
    },
}

3. Add URLs

Include getpaid URLs in your project's urls.py:

from django.urls import include, path

urlpatterns = [
    # ...
    path("payments/", include("getpaid.urls")),
]

Payment Flow

  1. Order Creation: Create an instance of your Order model.
  2. Payment Selection: Present a form to the user to select a payment method (using getpaid.forms.PaymentForm).
  3. Redirection: getpaid prepares the transaction and redirects the user to the payment provider's paywall.
  4. Callback: The provider sends a notification (push) or the application checks the status (pull).
  5. State Update: The payment's status is automatically updated (e.g., to PAID or FAILED).

Template Customization

You can customize the payment selection page by overriding the getpaid/payment_form.html template. To customize the automatic redirect page (used for POST-based gateways), override getpaid/payment_post_form.html.

Example Application

The repository contains a comprehensive example application that demonstrates:

  • Integration with multiple backends (Dummy, PayU, Paynow).
  • Custom Order and Payment models.
  • Environment-based configuration.
  • Error handling and success/failure pages.

Check it out at https://github.com/django-getpaid/django-getpaid/tree/master/example/.

Ecosystem

django-getpaid is part of a larger ecosystem:

Migrating from v2

If you are upgrading from django-getpaid v2.x, please refer to our Migration Guide for a detailed list of breaking changes and step-by-step instructions.

License

This project is licensed under the MIT License.

Credits

Created by Krzysztof Dorosz. Redesigned and rewritten by Dominik Kozaczko.


This project is not affiliated with the getpaid Plone project.

Release files for django-getpaid 3.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-getpaid 3.2.0
File Size Uploaded
django_getpaid-3.2.0.tar.gz 156.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-getpaid 3.2.0
File Interpreter ABI Platform
django_getpaid-3.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 200.7 kB

Release files / django_getpaid-3.2.0.tar.gz

Download URL django_getpaid-3.2.0.tar.gz
Size 156.2 kB
Tags Source
SHA-256 checksum
How to use checksums
0ac0288205eda86735ee1aec3f4d65203d15f22cfdc18239488ef3b547394974
BLAKE2b-256 checksum
How to use checksums
a01687e737c15db4a76cadb6ff7afd44e27d38ecf105f7863787e3217305a3b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / django_getpaid-3.2.0-py3-none-any.whl

Download URL django_getpaid-3.2.0-py3-none-any.whl
Size 44.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2dd61181cae60f3201d703e7b1f4b9ec8579bf8741f46e2bf92f947590175541
BLAKE2b-256 checksum
How to use checksums
2fdb42693614c79b62f8e952422d6677f6233451cfc752385378bf756c5fee5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

3.2.0 This release

2 release files

3.1.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.3.0

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.8.0.1

1 release file

1.8.0

2 release files

1.7.6

1 release file

1.7.3

1 release file

1.7.2

2 release files

1.6.0

1 release file

1.5.1

1 release file

1.5.0

1 release file

1.4.0

1 release file

1.3.0

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page