基于django-rest框架的instamojo集成
drf-instamojo的Python项目详细描述
Instamojo | Django REST框架
django rest框架中instamojo集成的包
Instamojo | Django REST Framework
是一个django打包的应用程序,它提供了基于django rest的必要的views
框架。它使Instamojo支付网关与Web/Mobile应用程序以及RESTful API的轻松集成成为可能
基于服务器。
投稿人:我们正在寻找可以在文档中投稿的人
- Civil Machines Technologies Private Limited:为我提供平台和
科研经费。此项目当前仅由
CMT
托管。 - Himanshu Shankar:Himanshu Shankar已经启动了这个项目,并致力于此 项目以收集在各种项目中使用的有用函数和类。
安装
- 通过
pip
下载并安装
pip install drf_instamojo
pip
pip install drf_instamojo
或
通过easy_install
下载并安装
easy_install drf_instamojo
- 如果需要,在
INSTALLED_APPS
中添加drfaddons
(尽管这不是必需的!)
INSTALLED_APPS = [
...
'drf_instamojo',
...
]
- 还可以在
INSTALLED_APPS
中添加其他依赖项
INSTALLED_APPS = [
...
'drfaddons',
...
]
- 在
urls.py
中包含drf_instamojo
的URL
urlpatterns = [
...
path('api/instamojo/', include('drf_instamojo.urls')),
...
]
# or
urlpatterns = [
...
url(r'^api/instamojo/', include('drf_instamojo.urls')),
...
]
- 运行migrate命令:
python manage.py migrate
型号
应用程序有三种型号:
InstamojoConfiguration
:您需要在此模型中定义instamojo配置。只有一个对象可以is_active
设置为True
,将与Instamojo API一起使用PaymentRequest
:这将包含使用instamojo创建的所有instamojo付款请求。Payment
:这将包含从instamojo api收到的所有付款响应。
视图
应用程序有以下视图:
ListAddPaymentRequestView
:应在此视图上发出所有付款请求。需要登录用户。 它将为用户提供所需的数据,包括用于付款的longurl
。ListAddPaymentView
:所有响应数据都应发布在此视图上不需要登录用户
网址
request/
:通过此url发出的所有付款请求。payment/
:要发布在此url上的所有付款报告。
快速启动指南
- 完成
Installation Steps
(上述) - 通过
Django Admin
在Instamojo Configuration
中创建配置
- 将
is_active
设置为True
- 注意:首先使用沙盒模式凭据
如何与应用程序集成
- 使用
serializers
与自定义应用程序集成。
创建付款请求
示例
- 创建视图:
PaymentView
- 使用
PaymentRequestSerializer
创建付款请求。 - 检查
serializers.py
中的示例代码:
# Initialize serializer with proper data
prs = PaymentRequestSerializer(data={'amount': 120.00, 'purpose': 'Test', 'send_sms': False,
'redirect_url': 'http://127.0.0.1/api/test/'})
# Check if data is valid
prs.is_valid(raise_exception=True)
instance = prs.save(created_by=user)
- 将
instance
另存为app中的外键,指向发出付款请求的账单。 - 退回
longurl
给客户付款
序列化程序的.save()中的“按要求创建”有问题
- 如果应用程序不需要用户登录,请使用以下逻辑:
- 在“付款”视图中,从用户获取以下数据:
- 客户名称
- 客户手机号
mobile: 9987987345
- 客户的电子邮件
email: test@abc.com
使用下面的代码创建一个逻辑来获取现有的或创建新的用户:
from django.contrib.auth import get_user_model
user_model = get_user_model()
try:
user = user_model.objects.get(email=email)
except user_model.DoesNotExist:
try:
user = user_model.objects.get(mobile=mobile)
except user_model.DoesNotExist:
# Now you're dead sure that user does not exists.
user = user_model.objects.create(name=name, mobile=mobile, email=email, password="RANDOM_PASSWORD")
- 否则,只需在序列化程序上调用
.save()
时使用user = request.user
作为用户。 - 奖金指针:签出Django REST Framework - User
付款完成
- 使用
payment_done
信号 - 使用app中的
__init__.py, handlers.py
创建signals
python目录
- 在
handlers.py
中,创建用于处理payment_done
信号的函数
from django.dispatch import receiver
from drf_instamojo.models import PaymentRequest
from drf_instamojo.signals import payment_done
@receiver(signal=payment_done, sender=PaymentRequest)
def payment_done_handler(instance: PaymentRequest, sender, *args, **kwargs):
...
# Payment completed
# bill.paid()
# item.dispatch()
...
PaymentView
PaymentRequestSerializer
创建付款请求。serializers.py
中的示例代码:# Initialize serializer with proper data
prs = PaymentRequestSerializer(data={'amount': 120.00, 'purpose': 'Test', 'send_sms': False,
'redirect_url': 'http://127.0.0.1/api/test/'})
# Check if data is valid
prs.is_valid(raise_exception=True)
instance = prs.save(created_by=user)
instance
另存为app中的外键,指向发出付款请求的账单。longurl
给客户付款- 如果应用程序不需要用户登录,请使用以下逻辑:
- 在“付款”视图中,从用户获取以下数据:
- 客户名称
- 客户手机号
mobile: 9987987345
- 客户的电子邮件
email: test@abc.com
使用下面的代码创建一个逻辑来获取现有的或创建新的用户: - 在“付款”视图中,从用户获取以下数据:
from django.contrib.auth import get_user_model
user_model = get_user_model()
try:
user = user_model.objects.get(email=email)
except user_model.DoesNotExist:
try:
user = user_model.objects.get(mobile=mobile)
except user_model.DoesNotExist:
# Now you're dead sure that user does not exists.
user = user_model.objects.create(name=name, mobile=mobile, email=email, password="RANDOM_PASSWORD")
- 否则,只需在序列化程序上调用
.save()
时使用user = request.user
作为用户。 - 奖金指针:签出Django REST Framework - User
付款完成
- 使用
payment_done
信号 - 使用app中的
__init__.py, handlers.py
创建signals
python目录
- 在
handlers.py
中,创建用于处理payment_done
信号的函数
from django.dispatch import receiver
from drf_instamojo.models import PaymentRequest
from drf_instamojo.signals import payment_done
@receiver(signal=payment_done, sender=PaymentRequest)
def payment_done_handler(instance: PaymentRequest, sender, *args, **kwargs):
...
# Payment completed
# bill.paid()
# item.dispatch()
...
payment_done
信号__init__.py, handlers.py
创建signals
python目录
handlers.py
中,创建用于处理payment_done
信号的函数from django.dispatch import receiver
from drf_instamojo.models import PaymentRequest
from drf_instamojo.signals import payment_done
@receiver(signal=payment_done, sender=PaymentRequest)
def payment_done_handler(instance: PaymentRequest, sender, *args, **kwargs):
...
# Payment completed
# bill.paid()
# item.dispatch()
...