No project description provided
Project description
DRF payments
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 yourPayment
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
Release history Release notifications | RSS feed
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.1.tar.gz
(13.6 kB
view hashes)
Built Distribution
Close
Hashes for drf_payments-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 09b23f4f28ec62e09f9b3c490a632dd9e0c3988e11ff190f2466bddb627935fe |
|
MD5 | 526f2ef440a9d624c0dd97253a3c0c85 |
|
BLAKE2b-256 | 9cffeacd44628fb6e637a94963e6a3020c3e43b484b5b0090faf765f99ca92c0 |