一个可插入的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 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6eeb154dbdec790d045bfa52bde01d7cbf7aa376cb27c04bb0af827697dd851d |
|
MD5 | 691e55631883200ee77055c3aa02c571 |
|
BLAKE2b-256 | faa300d9c1f551bf5e0d90a220535c414cbe42f49f5507aa504480acff9677ae |