django对spgateway的支持

django-spgatewa的Python项目详细描述


像往常一样写下django和你的商店,让django-spgateway用spgateway处理你的交易

要求

  • Python3.7
  • Django 2.1
  • 密码2.6.1
  • 我们只在以下环境中进行测试

安装

  1. 使用pip或pipenv安装:

    pip install django-spgageway

    或者,您可以安装下载或克隆此repo并调用pip install -e .

  2. 添加到您的settings.py

    'spgateway',

  3. settings.py

    中添加设置
    SPGATEWAY_PROFILE={'YOUR_MerchantID':{'MerchantID':'YOUR_MerchantID','HashKey':'YOUR_HashKey','HashIV':'YOUR_HashIV',},}SPGATEWAY_MERCHANTID='YOUR_MerchantID'SPGATEWAY_ORDERMODEL='yourapp.Order'
  4. 将urlpattern添加到urls.py

    path('spgateway/',include('spgateway.urls')),用于django 2

    url(r'^spgateway/',include('spgateway.urls')),用于django 1

  5. 导入from spgateway.models import SpgatewayOrderMixin,并使用订单模型从中继承。

  6. 像往常一样运行python manage.py makemigrationspython manage.py migrate

  7. 通过在视图中调用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>
  8. 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')

错误和建议

如果您发现了一个bug或者有其他功能的请求,请使用github上的问题跟踪器。

https://github.com/cjltsod/django-spgateway/issues

许可证

你可以在麻省理工学院使用这个。有关详细信息,请参见LICENSE文件。

作者

CJLTSOD开发和维护。

感谢所有提出请求、想法、问题、评论和好话的人。

请参见authors.rst以获取贡献者列表。

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

推荐PyPI第三方库


热门话题
java为什么我的Droid Mini不会出现在Eclipse设备中?[视窗]   有没有一种方法专门从Java到Ada的数组中挑选元素   java字符串s1==字符串s2(true),但FieldOffset不同   java如何解决listView Onclick项编译时代码过大的错误   java如何知道文件的哪一行发生了IOexception   java在SharedReferences中保存JSON数组可以吗?   java中数组的不变性   有没有办法用Java下载Microsoft Azure数据中心IP范围?   java在gwt中更改装饰选项卡栏的背景图像   jsp中基于64字节数组的Java图像显示   Java应用程序内存使用情况   在对接受的socket调用close()之前,Java ServerSocket不会接受新连接   Android或Xamarin中Edittext的java设置提示   java如何在安卓中将图像和音频文件附加到电子邮件?   java在更新方法中获取JDBCTemplate中的最后一个插入密钥   java使用ExecutorService时,线程内的类是否安全?   java需要我的2d数组来打印,但它在输出框中只显示一个点   java如何在它下面显示一些文件夹属性?   java SQLite如何在数据库中搜索特定表?