未知

django-moneybookers的Python项目详细描述


Moneyboookers具有两种支付形式的Django网关:公共和安全。

MoneyBoookers网关允许您在您的网站上接受付款。它包含两个付款路径:

  • 表格generation,邮寄给Moneybookers
  • 使用准备好的会话ID进行安全重定向

在这两种情况下,都会执行额外的安全检查。

完整的API文档:“Moneybookers支付网关”

如何安装

  1. 下载源文件并将其放入“应用程序”文件夹中
  2. 编辑“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”

  1. 添加到“url.py”路径
urlpatterns=patterns('',(r'^moneybookers/status_url/',include('moneybookers.urls')),(r'^moneybookers/cancel/','MoneybookersCancel'),(r'^moneybookers/ok/','MoneybookersOk'),(r'^order/$','View_With_Order'),)
  1. 在数据库中创建表
manage.py syncdb
  1. 创建/呈现窗体
  • 常用方式:

在“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许可证

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

推荐PyPI第三方库


热门话题
java在使用整数键遍历HashMap时,是否总是以升序返回键?   查找字符串中单词的长度,并查找有多少单词具有该长度。(爪哇)   java NoClassDefFoundError和其他引用Google Maps Android API实用程序时出现的错误   java Spring引导,在REST响应中将日期时间精度定义为毫秒   如何从json JAVA SPRING获取特定数据?   java删除特殊字符前后的空格   使用Java BigDecimal表示15精度的数字(比例为2)   java通过Cordova发布位置谷歌地图   java避免死锁的正确Hibernate会话超时值是多少?   带进度监视器的java JSch上载   java如何将SpringMVC、hibernate、hibernate验证器结合使用?   java SAXParser解析复杂对象   Java:将ArrayList<Byte>转换为Byte[]的最佳方法是什么?   java PostGIS jdbc sql查询   java如何动态设置Jtree节点图标   java重新设计MySQL表的主键