跳转到主要内容

一个可插入的Django应用程序,用于集成netcash.co.za支付系统。

项目描述

一个可插入的Django应用程序,用于集成netcash.co.za支付系统。

安装

$ pip install django-netcash

$ easy_install django-netcash

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

然后将‘netcash’添加到INSTALLED_APPS并执行

$ python manage.py syncdb

或(如果使用South)

$ 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键(默认为‘REMOTE_ADDR’)。

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

用法

支付表单

netcash.forms.NetcashForm可用于构建HTML表单。这是一个辅助表单,用于HTML输出,它不应执行任何验证。

将所有字段传递给表单的‘initial’参数。表单还有一个可选的‘user’参数:这是购买订单的用户实例。如果指定了‘user’,则如果未通过‘initial’传递,将自动填写‘m_9’(持卡人电子邮件地址)。

示例

# 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_p }} 将会是多个 <input type='hidden'> 标签。

NetcashForm 具有带有 Netcash URL 的 'target' 属性。

请注意,您需要自行实现订单处理逻辑。订单处理应在 netcash.signals.data 信号处理器中执行。

netcash.signals.data 信号

当 Netcash 向数据 URL 发送数据时,将发送 netcash.signals.data 信号。对于可疑数据(当请求来自不受信任的 IP 或表单验证失败时),不会发送此信号。

信号订阅者将获得一个包含 NetcashOrder 实例的 '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)

urls.py

为了使数据 URL、接受 URL 和拒绝 URL 正常运行,请在 urls.py 中包含 netcash.urls

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

模板

  • netcash/accept.html - 接受 URL 页面。模板上下文中有一个 'order' 变量,与 NetcashOrder 实例相关。

  • netcash/accept.html - 拒绝 URL 页面。模板上下文中有一个 'order' 变量,与 NetcashOrder 实例相关。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

django-netcash-0.4.2.tar.gz (12.1 kB 查看哈希)

上传时间

由...支持