django对spgateway的支持
django-spgatewa的Python项目详细描述
像往常一样写下django和你的商店,让django-spgateway用spgateway处理你的交易
要求
- Python3.7
- Django 2.1
- 密码2.6.1
- 我们只在以下环境中进行测试
安装
使用pip或pipenv安装:
pip install django-spgageway
或者,您可以安装下载或克隆此repo并调用pip install -e .。
添加到您的settings.py:
'spgateway',
在settings.py:
中添加设置SPGATEWAY_PROFILE={'YOUR_MerchantID':{'MerchantID':'YOUR_MerchantID','HashKey':'YOUR_HashKey','HashIV':'YOUR_HashIV',},}SPGATEWAY_MERCHANTID='YOUR_MerchantID'SPGATEWAY_ORDERMODEL='yourapp.Order'
将urlpattern添加到urls.py:
path('spgateway/',include('spgateway.urls')),用于django 2
url(r'^spgateway/',include('spgateway.urls')),用于django 1
导入from spgateway.models import SpgatewayOrderMixin,并使用订单模型从中继承。
像往常一样运行python manage.py makemigrations和python manage.py migrate。
通过在视图中调用generate_credit_form,从订单中获取表单:
credit_form = order_object.generate_credit_form(request)
并在模板中使用:
<form action="{{credit_form.action}}" method="POST"> {{credit_form.as_p}} <input type="submit"> </form>
在SessionMiddleware之前添加SpgatewaySameSiteCookieMiddleware,以避免从支付网关返回时出现相同的cookie:
MIDDLEWARE=['django.middleware.security.SecurityMiddleware','spgateway.middleware.SpgatewaySameSiteCookieMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',...]
示例模型
fromspgateway.modelsimportSpgatewayOrderMixinclassOrder(SpgatewayOrderMixin,models.Model):total=models.IntegerField(default=0,verbose_name='Total Price')user=models.ForeignKey(User,verbose_name='Order by user')is_paid=models.BooleanField(default=False)# Add this parameter to let django-spgateway know which field is amount of priceSpgatewayAmtFieldName='total'# Add this parameter to let django-spgateway set item descriptionSpgatewayItemDesc='Items descriptions'# Add this method to let django-spgateway retrieve emaildefget_SpgatewayEmail(self,**kwargs):returnself.user.email# Add this method let django-spgateway call when notify from Spgateway server# Change your order with this methoddefspgateway_notify(self,request,trade_info):status=trade_info['Status']status_msg=trade_info['Message']ifstatus=='SUCCESS':self.is_paid=Trueself.save()else:# TODO: Handle error# Add this method let django-spgateway call when client return from Spgateway server# Never trust data from client. Display messages onlydefspgateway_return(self,request,trade_info):status=trade_info['Status']status_msg=trade_info['Message']ifstatus=='SUCCESS':# TODO: Display success message to userelse:# TODO: Display error message to user# django-spgateway will call this method to redirect user after user return from Spgateway serverdefget_absolute_url(self):returnreverse('ORDER_DETAIL_VIEW_NAME_HERE')
许可证
你可以在麻省理工学院使用这个。有关详细信息,请参见LICENSE文件。