A simple modular approach for Paytm's checkout and custom checkout
Use pip to install from PyPI:
pip install django-paytm-checkout
Configure your django project by adding the following in your settings:
PAYTM_MERCHANT_ID = 'YOUR_PAYTM_MERCHANT_ID'
PAYTM_MERCHANT_KEY = 'YOUR_PAYTM_MERCHANT_KEY'
PAYTM_INDUSTRY = 'YOUR_INDUSTRY_TYPE'
PAYTM_WEBSITE = 'YOUR_PAYTM_WEBSITE'
Setting the environment:
PAYTM_DEBUG = True
# default: True (for staging)
# False (for production)
These are optional settings, change if it not the same as default:
PAYTM_CHANNEL_WEBSITE = '' # default: WEB
PAYTM_CHANNEL_MOBILE_APP = '' # default: WAP
PAYTM_STAGING_DOMAIN = '' # default: securegw-stage.paytm.in
PAYTM_PRODUCTION_DOMAIN = '' # default: securegw.paytm.in
Add the following into your urls.py
from django.urls import path, include
urlpatterns = [
path('paytm/', include('paytm.urls', namespace='paytm')),
]
You can override all the Generic custom views
ex: Customising and using the initiate view
from django.conf import settings as django_settings
from django.shortcuts import render, Http404
from paytm.checkout.views import GenericInitiatePaymentView
from paytm.models import Item
class InitiatePaymentView(GenericInitiatePaymentView):
"""Wrapper for testing"""
include_payment_charge = False
channel = 'WEB'
def get_amount(self):
item_id = self.request.POST['item']
item = Item.objects.get(pk=item_id)
return item.price
def get(self, request):
if not django_settings.DEBUG:
raise Http404
self.request = request
return render(request, 'paytm/checkout/index.html', {
'items': Item.objects.all()
})