Package: drf-paytm
PayTM | Django REST FrameworkA package for PayTM integration in Django REST FrameworkPayTM | Django REST Frameworkis a Django packaged app that provides necessaryviewsbased in Django REST Framework.
It enables easy integration of PayTM Payment Gateway with Web/Mobile Application with a RESTful API based server.Contributors:WE'RE LOOKING FOR SOMEONE WHO CAN CONTRIBUTE IN DOCSCivil Machines Technologies Private Limited: For providing me platform and
funds for research work. This project is hosted currently withCMTonly.Himanshu Shankar: Himanshu Shankar has initiated this project and worked on this
project to collect useful functions and classes that are being used in various projects.InstallationDownload and Install viapippip install drf_paytmorDownload and Install viaeasy_installeasy_install drf_paytmAdd, if wanted,drfaddonsinINSTALLED_APPS(This is although not required!)INSTALLED_APPS = [
    ...
    'drf_paytm',
    ...
]Also add other dependencies inINSTALLED_APPSINSTALLED_APPS = [
    ...
    'drfaddons',
    ...
]Include urls ofdrf_paytminurls.pyurlpatterns = [
    ...
    path('api/paytm/', include('drf_paytm.urls')),
    ...
]

# or

urlpatterns = [
    ...
    url(r'^api/paytm/', include('drf_paytm.urls')),
    ...
]Run migrate command:python manage.py migrateFrontend API Integration GuidelinePreparejsondata to post onrequest/view:{"oid": "ORDER_ID", "amount": "200", "callback_url": "FRONT_END APP URL"}callback_url: FrontEnd URL to open when payment is successful. Must not have any queryset as?oid=ORDER_IDis
appended.Post torequest/and parse response to prepare a HTML form as per code shown below.Don't add<input>for empty andnullfields from json response ofrequest/API.SetCALLBACK_URLin HTML frompaytm_callback_urlof JSON.Once the payment is done, user is redirected toresponse/view which will verify payment.If payment is verified by Django Backend, user is redirected tohttp://callback_url?oid=ORDER_ID.Accessorder/ORDER_ID/API to getis_completedstatus. If it'sfalse, checklast_payment_status.Note: In case of critical failure, server's JSON response is shown.Sample HTML Code to be generated by FrontEnd App(from PayTM)<html>
    <head>
        <title>Merchant Check Out Page</title>
    </head>
    <body>
        <center><h1>Please do not refresh this page...</h1></center>
        <form method="post" action="https://securegw-stage.paytm.in/theia/processTransaction" name="f1">
            <table border="1">
                <tbody>
                    <input type="hidden" name="MID" value="rxazcv89315285244163">
                    <input type="hidden" name="WEBSITE" value="WEBSTAGING">
                    <input type="hidden" name="ORDER_ID" value="order1">
                    <input type="hidden" name="CUST_ID" value="cust123">
                    <input type="hidden" name="MOBILE_NO" value="7777777777">
                    <input type="hidden" name="EMAIL" value="username@emailprovider.com">
                    <input type="hidden" name="INDUSTRY_TYPE_ID" value="Retail">
                    <input type="hidden" name="CHANNEL_ID" value="WEB">
                    <input type="hidden" name="TXN_AMOUNT" value="100.12">
                    <input type="hidden" name="CALLBACK_URL" value="https://Merchant_Response_URL>">
                    <input type="hidden" name="CHECKSUMHASH" value="ZWdMJOr1yGiFh1nns2U8sDC9VzgUDHVnQpG
                    pVnHyrrPb6bthwro1Z8AREUKdUR/K46x3XvFs6Xv7EnoSOLZT29qbZJKXXvyEuEWQIJGkw=">
                </tbody>
            </table>
        <script type="text/javascript">
            document.f1.submit();
        </script>
        </form>
    </body>
</html>MODELSThe application has three models:PayTMConfiguration: You need to define your PayTM configurations in this model. Only one object can haveis_activeset toTruewhich will be used with PayTM API.TransactionRequest: This will contain all the PayTM Transaction Request that one will create with PayTM.TransactionResponse: This will contain all the responses received from PayTM API against transaction.VIEWSThe application has following views:ListAddTransactionRequestView: All payment request should be made on this view. Requires a logged in user.
It'll provide user with required data, includingchecksum hashthat will be used with PayTM API.AddTransactionResponseView: Response from PayTM is posted on this view. URL for this view should go asCALLBACK_URL. This view then redirects user to FrontEnd app withOIDas queryset parameter.PayNowTransaction: This view is for testing w/o a frontend client. It will open PayTM payment page.URLSrequest/: All payment request to be made via this URL.response/: All response from PayTM is posted on this URL.order/OID/: Retrieve specific payment request data.now/: For immediate testing of API, open this url.Quickstart GuideCompleteInstallation Steps(mentioned above)Create a configuration viaDjango AdmininPayTM Configuration.Providebase_urlof your Backend Server.Setis_activetoTrueNote: Use sandbox mode credential at firstTest API by accessing/api/paytm/now/endpointUsePayTM Testing Credential:Mobile: 7777777777
OTP: 489871
Password: Paytm12345