用于集成netcash.co.za支付系统的可插拔django应用程序。

django-netcash的Python项目详细描述


用于集成netcash.co.za支付系统的可插拔django应用程序。

安装

$ pip install django-netcash

$ easy_install django-netcash

$ hg clone http://bitbucket.org/kmike/django-netcash/
$ cd django-netcash
$ python setup.py install

然后将“netcash”添加到已安装的应用程序并执行

$ python manage.py syncdb

或(如果使用南部)

$ python manage.py migrate

如果使用south,则将创建netcashgateway实例。否则 转到“管理”并添加netcashgateway实例。有必要 数据库中至少有一个NetCashGateway实例。

设置

在settings.py中指定您的凭据:

  • NETCASH_USERNAME
  • NETCASH_PASSWORD
  • NETCASH_PIN
  • NETCASH_TERMINAL_NUMBER

如果您的web服务器位于反向代理之后,您还应该指定 NETCASH_IP_HEADER选项。这是一个带客户端IP地址的request.META密钥 (默认为“远程地址”)。

您还必须在netcash.co.za上设置您的netcash帐户。登录到 管理面板,转到“信用卡”部分,然后转到“调整网关默认值” 然后粘贴数据url。数据url可以在django管理变更列表中找到 netcashgateway模型的页。

用法

付款表格

netcash.forms.netcash form可用于构造HTML表单。它是 一个HTML输出的帮助表单,它不应该执行任何验证。

传递所有字段以形成“initial”参数。表单还有一个可选的 “user”参数:订单购买的用户实例。如果 指定“用户”,将填写“M U 9”(持卡人电子邮件地址) 如果未使用“initial”传递,则自动传递。

示例:

# views.py

from django.shortcuts import get_object_or_404
from django.views.generic.simple import direct_to_template
from django.contrib.auth.decorators import login_required

from netcash.forms import NetcashForm

@login_required
def pay_with_netcash(request, order_id)

    # Order model have to be defined by user, it is not a part
    # of django-netcash
    order = get_object_or_404(Order, pk = order_id)

    form = NetcashForm(initial={

        # required params:
        'p3': 'description of the goods',
        'p4': order.total,

        # optional params:

        # 'p10': '/cancel/button/url',
        # 'Budget': 'Y',  # will display the budget option in the Gateway popup
        # 'm_4': 'extra param 1',
        # 'm_5': 'extra param 2',
        # 'm_6': 'extra param 3',
        # 'm_9': order.user.email # cardholder email address
    }, user=order.user)

    return direct_to_template(request, 'pay_with_netcash.html', {'form': form})

模板:

{% extends 'base.html' %}

{% block content %}
    <form action="{{ form.target }}" method="POST">
        <p>{{ form.as_p }}</p>
        <p><input type="submit" value="Pay by Credit Card"></p>
    </form>
{% endblock %}

{{form.as}输出将是许多<input type='hidden'>标记。

netcashform具有netcash url的“target”属性。

请注意,由您来实现订单处理逻辑。 订单处理应该在netcash.signals.data信号处理程序中执行。

netcash.signals.data信号

当netcash向数据url ^{tt8}发送数据时,$信号被发送。 此信号不会发送可疑数据(当请求来自 不受信任的IP或表单验证失败)。

信号订阅者将获得一个带有NetcashOrderinstance的“order”参数。

示例:

import netcash.signals

def data_received(sender, **kwargs):
    netcash_order = kwargs['order']

    if netcash_order.TransactionAccepted: # order is paid
        amount = netcash_order.Amount
        # your business logic
        # ...
    else: # order is not paid
        # your business logic
        # ...

netcash.signals.data.connect(data_received)

url.py

为了获得数据url,接受url并拒绝url启动和运行, 在url.py中包含netcash.url:

urlpatterns = patterns('',
    #...
    url(r'^netcash/', include('netcash.urls')),
    #...
)

模板

  • netcash/accept.html-接受URL页。中有“order”变量 NetCashOrder实例的模板上下文。
  • netcash/accept.html-拒绝URL页。中有“order”变量 NetCashOrder实例的模板上下文。

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

推荐PyPI第三方库


热门话题
java WebClient请求级别超时抛出名为default onErrorDropped的运算符   java JAXB外部绑定文件错误   Freemarker中的java转义宏参数值   java正在同步来自不同对象{已编辑}的线程   java如何在另一个类上更新活动中的元素   java Hibernate连接查询   java可以使用Apache Crunch创建类似于图形的数据结构吗?   java在JLabel的开头加上3个点   java 安卓应用程序显示线程错误   java@RequestBody在Spring中总是空的   java Android异步任务永远不会结束   具有多个属性的java Jaxws枚举   java中的安卓 Stripe InvalidRequestException   多线程java。util。非多线程程序中的ConcurrentModificationException   Minecraft Java插件如何删除HashMap中存储的所有块   空Java字符串的大小   从AJP连接器请求检索Shibboleth属性的java   oracle11g将Java类文件加载到Oracle数据库