基于django-rest框架的paytm集成

drf-paytm的Python项目详细描述


paytm django rest框架

django rest框架中paytm集成的包

PayTM | Django REST Framework是一个django打包的应用程序,它提供了基于django rest框架的必要的views。 它使paytm支付网关与基于restful api的服务器的web/mobile应用程序轻松集成。

投稿人:我们正在寻找可以在文档中投稿的人

安装
  • 通过pip
  • 下载并安装
pip install drf_paytm


通过easy_install下载并安装

easy_install drf_paytm
  • 如果需要,在INSTALLED_APPS中添加drfaddons(尽管这不是必需的!)
INSTALLED_APPS = [
    ...
    'drf_paytm',
    ...
]
  • 还可以在INSTALLED_APPS
  • 中添加其他依赖项
INSTALLED_APPS = [
    ...
    'drfaddons',
    ...
]
  • urls.py
  • 中包含drf_paytm的url
urlpatterns = [
    ...
    path('api/paytm/', include('drf_paytm.urls')),
    ...
]

# or

urlpatterns = [
    ...
    url(r'^api/paytm/', include('drf_paytm.urls')),
    ...
]
  • 运行migrate命令:
python manage.py migrate

前端API集成指南

  1. 准备json要在request/视图上发布的数据:{"oid": "ORDER_ID", "amount": "200", "callback_url": "FRONT_END APP URL"}
  2. callback_url:支付成功时打开的前端URL。不能有任何查询集,因为?oid=ORDER_ID是 追加。
  3. 发送到request/,并解析响应以按照下面显示的代码准备HTML表单。
  4. 不要为来自request/api的json响应的空字段和null字段添加<input>
  5. 从json的paytm_callback_url设置html中的CALLBACK_URL
  6. 付款完成后,用户将重定向到response/视图,该视图将验证付款。
  7. 如果Django后端验证付款,则用户将重定向到http://callback_url?oid=ORDER_ID
  8. 访问order/ORDER_ID/api以获得is_completed状态。如果是false,请检查last_payment_status

注意:如果出现严重故障,将显示服务器的json响应。

前端应用程序生成的HTML代码示例(来自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>

型号

应用程序有三种型号:

  • PayTMConfiguration:您需要在此模型中定义paytm配置。只有一个对象可以 is_active设置为True,将与paytm api一起使用。
  • TransactionRequest:这将包含使用paytm创建的所有paytm事务请求。
  • TransactionResponse:这将包含针对事务从paytm api接收的所有响应。

视图

应用程序有以下视图:

  • ListAddTransactionRequestView:应在此视图上发出所有付款请求。需要登录用户。 它将为用户提供所需的数据,包括与paytm api一起使用的checksum hash
  • AddTransactionResponseView:来自paytm的响应发布在这个视图上。此视图的URL应为 CALLBACK_URL。然后此视图将用户重定向到前端应用程序,并使用OID作为queryset参数。
  • PayNowTransaction:此视图用于测试没有前端客户端的情况。它将打开PayTM支付页面。

网址

  • request/:通过此url发出的所有付款请求。
  • response/:paytm的所有响应都发布在这个url上。
  • order/OID/:检索特定的付款请求数据。
  • now/:要立即测试api,请打开此url。

快速启动指南

  • 完成Installation Steps(上述)
  • 通过PayTM Configuration中的Django Admin创建配置。
  • 提供后端服务器的base_url
  • is_active设置为True
  • 注意:首先使用沙盒模式凭据
  • 通过访问/api/paytm/now/端点来测试api
  • 使用PayTM Testing Credential
Mobile: 7777777777
OTP: 489871
Password: Paytm12345

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将getAttribute()scriptlet重写为JSP/HTML中的JSTL?   java接口,用于在KeyClope中执行电子邮件操作   java我试图将今天的日期添加到我的对象,但构造函数有问题   关于生成示例图表示(RDF或VEV元组)的java建议   httpclient在Java中使用空格编码URL的工作方式不正确   java NDimensional点类   java在编写查找ArrayList中最大整数索引的方法时遇到问题   java生成对象并放入arraylist,无重复项   在Java中使用泛型   在Java中使用“h=Math.min(h,h)”有什么逻辑原因吗?   安卓 Java for loop总是返回true   覆盖率java工具   java试图发送int时出现“空对象引用”错误