Skip to main content

Package to handle various payments provider inside your drf project

Project description

DRF payments

Documentation Build Status Tests PyPI GitHub tag (latest SemVer pre-release)

Package to handle various payments provider inside your drf project

This package will allow you to create transactional payments on various payment providers:

  • Stripe
  • Paypal
  • Braintree
  • Authorize.net

Upon creation of your app Payment model this library will handle:

  • Creation of payment on selected provider
    • Direct charge
    • Checkout session
  • Handling webhook event from payment gateway to update Payment status
  • Handle Refund on the payment if payment was processed
  • Write along the way all payment gateway responses in extra_data json field of your Payment model

For example of usage please see example app inside repository.

Installation

  • pip install drf-payments
  • Add to INSTALLED_APPS
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "drf_payments",
    ...
]
  • Add callback url
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path("admin/", admin.site.urls),
    ...
    path("drf-payments/", include("drf_payments.urls")),
]
  • Provide required settings
PAYMENT_MODEL = "stripe_checkout.StripeCheckoutPayment"
PAYMENT_CALLBACK_URL = "http://localhost:8000/drf-payments/callback/"
PAYMENT_SUCCESS_URL = "http://localhost:3000/payments/success/"
PAYMENT_FAILURE_URL = "http://localhost:3000/payments/failure/"

PAYMENT_VARIANTS = {
    "stripe": (
        "drf_payments.stripe.StripeCheckoutProvider",
        {
            "secret_key": os.environ.get("STRIPE_SECRET_KEY"),
            "public_key": os.environ.get("STRIPE_PUBLIC_KEY"),
        },
    ),
    "paypal": (
        "drf_payments.paypal.PaypalProvider",
        {
            "client_id": os.environ.get("PAYPAL_CLIENT_ID"),
            "secret": os.environ.get("PAYPAL_SECRET_KEY"),
            "endpoint": os.environ.get("PAYPAL_URL", "https://api.sandbox.paypal.com"),
        },
    ),
}

Usage

For usage you can check example implementation in repo

  • Inherit drf_payments.models.BasePayment model in your app
from drf_payments.models import BasePayment

class StripeChargePayment(BasePayment):
    ...

    class Meta:
        db_table = "stripe_charge"
  • Use drf_payments.mixins.PaymentViewMixin in view that handles your payment model
from rest_framework.routers import SimpleRouter

from drf_payments.mixins import PaymentViewMixin

app_name = "shop"

router = SimpleRouter()
router.register("payment", PaymentViewMixin, basename="payment")

urlpatterns = [*router.urls]
  • Point your payments events to endpoint from settings PAYMENT_CALLBACK_URL

For more info please check example app inside repository

For even more detail check documentation

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drf_payments-0.0.2.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drf_payments-0.0.2-py3-none-any.whl (16.1 kB view details)

Uploaded Python 3

File details

Details for the file drf_payments-0.0.2.tar.gz.

File metadata

  • Download URL: drf_payments-0.0.2.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1040-azure

File hashes

Hashes for drf_payments-0.0.2.tar.gz
Algorithm Hash digest
SHA256 490a8b20efd7a3958869f3e5c9143e68fc42479e9f7052c2ea8bc2ac3299b7bc
MD5 f537706fbb0b3e61937167dedaf62ead
BLAKE2b-256 4b08f97e71d94a4bf79f4ed4eedd0812cd781c3717f0024a7c3e437d26337d32

See more details on using hashes here.

File details

Details for the file drf_payments-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: drf_payments-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.11.4 Linux/5.15.0-1040-azure

File hashes

Hashes for drf_payments-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f1c4ca8a389ffbbf53fa0ff08ff29bf2e20d9b3ccd68d402d904ab40987e4c2b
MD5 a7000348548b8e291f7d377ad596e063
BLAKE2b-256 08aa084d696d3794f90fc4983ab7249b8f0eecd2894e5ed036478d745e73c984

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page