用于集成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实例的模板上下文。