基于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应用程序轻松集成。
投稿人:我们正在寻找可以在文档中投稿的人
- Civil Machines Technologies Private Limited:为我提供平台和
科研经费。此项目当前仅由
CMT
托管。 - Himanshu Shankar:Himanshu Shankar已经启动了这个项目,并致力于此 项目以收集在各种项目中使用的有用函数和类。
安装
- 通过
pip
下载并安装
pip install drf_paytm
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集成指南
- 准备
json
要在request/
视图上发布的数据:{"oid": "ORDER_ID", "amount": "200", "callback_url": "FRONT_END APP URL"}
callback_url
:支付成功时打开的前端URL。不能有任何查询集,因为?oid=ORDER_ID
是 追加。- 发送到
request/
,并解析响应以按照下面显示的代码准备HTML表单。 - 不要为来自
request/
api的json响应的空字段和null
字段添加<input>
。 - 从json的
paytm_callback_url
设置html中的CALLBACK_URL
。 - 付款完成后,用户将重定向到
response/
视图,该视图将验证付款。 - 如果Django后端验证付款,则用户将重定向到
http://callback_url?oid=ORDER_ID
。 - 访问
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