在python中实现理想的v3.3.1规范。
ideal的Python项目详细描述
Version: | 0.3.0 |
---|---|
Download: | https://pypi.python.org/pypi/ideal |
Source: | https://github.com/maykinmedia/python-ideal |
Keywords: | python, ideal, django |
关于
在python中实现理想的v3.3.1规范。
安装
您可以通过python包索引(pypi)或 来源。
使用pip:
安装$ pip install -U ideal
用法
假设您已经向理想银行申请了访问权限。
安装理想库
$ pip install ideal
生成或定位您的证书(cert.cer,和priv.pem)和您银行的公共证书(此处命名为 ideal_v3.cer,但取决于您的银行),并将它们放在Web应用程序可以访问它们的文件夹中。
创建名为ideal.cfg的配置文件(或复制并修改ideal-example.cfg):
[ideal] debug = 1 private_key_file = priv.pem private_key_password = secret private_certificate = cert.cer certificates = ideal_v3.cer merchant_id = 123456789 sub_id = 0 merchant_return_url = https://www.example.com/ideal/callback/ acquirer = ING
在python中,确保通过加载配置文件来初始化设置:
fromideal.confimportsettingssettings.load('ideal.cfg')# You may adjust (or completely define) your settings (capitalized) in Python as wellsettings.DEBUG=True
加载设置后,您可以与理想通信:
fromideal.clientimportIdealClientideal=IdealClient()response=ideal.get_issuers()printresponse.issuers
设置
这些设置是小写的,存储在ideal.cfg文件(或django的settings.py中,前缀为 IDEAL_)。
- debug(boolean)
- 如果设置为True,则使用收单机构的测试URL,否则使用生产URL(默认值:True)。
- 私钥文件(string)
- 商家私钥的绝对路径(默认值:priv.pem)。
- 私钥密码(string)
- 访问商户私钥的密码。
- 私有证书(string)
- 指向商家专用证书的绝对路径(默认值:cert.cer)。
- 证书(list或逗号分隔的string如果使用文件配置)
- 绝对路径收单机构的理想证书(默认值:ideal_v3.cer)。
- 商人id(string)
- 在线商店的ID,在理想的注册过程中由接受方接收。
- 子id(string)
- 在线商店的子ID,在注册过程中也会收到(默认值:0)。
- merchant_return_url(string)
- 理想的回调url。在收单机构完成支付流程后,客户将被重定向到此URL。
- 有效期(string)
- 事务以ISO 8601格式有效,最小值为1分钟,最大值为1小时。 (默认值:PT15M)。
- 收单机构(string)
- 识别端点的收单机构代码。有效值为:[ING,RABOBANK](默认值为None)。
- 收单机构URL(string)
- 覆盖默认收单机构URL并忽略ACQUIRER和DEBUG设置(默认值:None)。
- 语言(string)
- ISO 639-1格式的响应语言,仅支持荷兰语(^{TT36}$)和英语(^{TT37}$)(默认值:^{TT36}$)。
测试
要运行所有单元测试,请下载整个包并运行:
$ python setup.py test
贡献
django
所有设置都可以大写,前缀为IDEAL_,并放在django的settings.py文件中,而不是 而不是使用配置文件。当然,您仍然可以使用设置文件方法。
将ideal.contrib.django.ideal_compat添加到INSTALLED_APPS中。
运行python manage.py migrate在数据库中创建Issuer表,以存储本地 所有发行人的副本。
运行python manage.py sync_issuers以使用颁发者列表填充Issuer表。你应该运行这个 使用cronjob命令每天左右。
您应该创建一个视图来处理理想的回调并添加url(在您的设置中定义为 MERCHANT_RETURN_URL)到您的urls.py。下面,您将找到一个示例视图,根据 特兰动作状态:
fromdjango.views.generic.baseimportRedirectViewfromideal.clientimportIdealClient,TransactionStatusfromideal.exceptionsimportIdealExceptionclassIdealCallbackView(RedirectView):permanent=Falsedefget_redirect_url(self,**kwargs):""" Simplistic view to handle the callback. You probably want to update your database with the transaction status as well, or sent a confirmation email, etc. """client=IdealClient()try:response=client.get_transaction_status(self.request.GET.get('trxid'))ifresponse.status==TransactionStatus.SUCCESS:# Redirect to some view with a success message.return'<payment success url>'exceptIdealException,e:# Do something with the error message.error_message=e.message# Redirect to some view with a failure message.return'<payment failed url>'
或者,您可以将以下内容添加到主urls.py中,以测试您的配置并执行所有理想的 通过Web界面进行操作:
ifsettings.DEBUG:urlpatterns+=[url(r'^ideal/tests/',include('ideal.contrib.django.ideal_compat.test_urls')),]
如果处于调试模式并使用runserver,则可以将浏览器指向: http://localhost:8000/ideal/tests/。