未知
django-moneybookers的Python项目详细描述
Moneyboookers具有两种支付形式的Django网关:公共和安全。
MoneyBoookers网关允许您在您的网站上接受付款。它包含两个付款路径:
- 表格generation,邮寄给Moneybookers
- 使用准备好的会话ID进行安全重定向
在这两种情况下,都会执行额外的安全检查。
完整的API文档:“Moneybookers支付网关”
如何安装
- 下载源文件并将其放入“应用程序”文件夹中
- 编辑“settings.py”
- 将“MoneyBookers”添加到“已安装的应用程序”
- 添加以下设置(示例):
MONEYBOOKERS_MERCHANT_ID="123456"MONEYBOOKERS_SECRET_WORD="YourSecretWord"MONEYBOOKERS_PAY_TO_EMAIL="billing@mycompany.com"MONEYBOOKERS_STATUS_URL="https://www.mycompany.com/moneybookers/status_url/"MONEYBOOKERS_CURRENCY_CODE="EUR"
不需要,但建议:
MONEYBOOKERS_CANCEL_URL="https://www.mycompany.com/moneybookers/cancel/"MONEYBOOKERS_RETURN_URL="https://www.mycompany.com/moneybookers/ok/"MONEYBOOKERS_STATUS_URL2="mailto: billing@mycompany.com"MONEYBOOKERS_RECEPIENT_DESCRIPTION="My Company Limited"
有关更多可选设置,请参见“conf.py”
- 添加到“url.py”路径
urlpatterns=patterns('',(r'^moneybookers/status_url/',include('moneybookers.urls')),(r'^moneybookers/cancel/','MoneybookersCancel'),(r'^moneybookers/ok/','MoneybookersOk'),(r'^order/$','View_With_Order'),)
- 在数据库中创建表
manage.py syncdb
- 创建/呈现窗体
- 常用方式:
在“views.py”中创建窗体的实例,并在模板中进行渲染
frommoneybookers.formsimportMoneybookersStandardFormdefView_With_Order(request):mb_dict={"amount":"25.00","invoice":"4567","user_id":request.user.id,"detail1_description":"Product ID:","detail1_text":"4509334","merchant_field":"new_client","merchant_field_value":"1","user_ipaddress":request.META.get("REMOTE_ADDR","0.0.0.0")}f=MoneybookersStandardForm(initial=mb_dict)context={"form":f}returnrender_to_response("order.html",context)
在“order.html”中:
<h1>Pay with Moneybookers now!</h1> {{ form.render }}
付款后,MoneyBookers会向您的服务器发送一个信号(状态URL)。事务将保存在数据库中,然后发送moneybookerssignal信号。您可以使用它来处理自己的操作(向用户帐户添加金额等)。“models.py”中使用的示例: 从moneybookers.signals导入moneybookers\u信号 来自django.db导入事务 来自django.core.mail import mail_admins
@transaction.commit_manuallydefMoneybookersSignal(sender,**kwargs):ifsender.error:mail_admins("Moneybookers: bad transaction %s"%sender.transaction_id,sender.error_text)returnsid=transaction.savepoint()try:user=User.objects.get(id=sender.user_id)profile=user.get_profile()profile.money=profile.money+sender.amountprofile.save()mail_admins("Moneybookers: good transaction %s"%sender.transaction_id,"%s added to user %s"%(sender.amount,sender.user_id))transaction.savepoint_commit(sid)exceptException,e:transaction.savepoint_rollback(sid)mail_admins("Moneybookers: database rollback: transaction %s"%sender.transaction_id,e)transaction.commit()moneybookers_signal.connect(MoneybookersSignal,dispatch_uid="yourapp.models.MoneybookersSignal")
安全方式:
添加到“url.py”另一个路径
urlpatterns=patterns('',(r'^moneybookers_redirect/$','payment_moneybookers_redirect'),)
使用“Moneybookers_Redirect”的Post URL在模板中创建表单
<formaction="https://www.mycompany.com/moneybookers_redirect/"method="post"><inputname="invoice"value="777"type="hidden"><inputtype="submit"value="Pay with Moneybookers"/></form>
在“views.py”中,您必须检查发票号码
fromdjango.contrib.auth.decoratorsimportlogin_requiredfromdjango.views.decorators.httpimportrequire_POSTfromdjango.httpimportHttpResponseRedirect,HttpResponseServerError@login_required@require_POSTdefpayment_moneybookers_redirect(request):invoice=request.POST.get("invoice",None)mb_dict={"language":"EN","country":...,"amount":...,"prepare_only":True,"detail1_description":"Invoice #","detail1_text":invoice,"invoice":invoice,"user_id":request.user.id,"user_ipaddress":request.META.get("REMOTE_ADDR","0.0.0.0")}# If you want accept only credit cards without user to register on moneybookers:mb_dict["hide_login"]="1"mb_dict["payment_methods"]="ACC"f=MoneybookersSecureForm(initial=mb_dict)url=f.redirect_url()ifurl:returnHttpResponseRedirect(url)returnHttpResponseServerError()Patchyour"models.py"withsignalMoneybookersSignallikein"common way"
基于《Moneybookers支付网关商户集成手册》v6.10/8(2010年11月)
亚历克斯·阿斯特,www.alrond.com,2010年 FreeBSD许可证