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为什么会出现这些错误?表达式的非法开始   使用HttpUrlConnection的java测试URL仅适用于前面的www   在大数据集上使用kmeans的java堆外内存   查找Java RandomAccessFile如何以字符形式读取第n个字节   java Android从BroadcastReceiver获取标题和描述   java使用构造函数参数模拟嵌套类并测试方法   正在将Azure Blob项强制转换为Java文件对象   java并行运行testNG套件   java程序在运行时似乎没有进入   贬低Java规则引擎的优点和缺点   文本区域中的java中心文本   java JPA从多个表中选择错误   类Java问题使用类加载器重新加载代码   java如何在Spring非管理类上使用@Value   java(关闭)Gradle导入VS代码失败   java arraylist拆分(“空白”)并计算字数   Android/Java如何在单独的*中调用函数。java文件?   具有基本身份验证的java Apache Camel RSS模块   java为什么程序在出现溢出或下溢时不抛出异常