django-oscar的Docdata支付网关集成
项目描述
在django-oscar中集成Docdata Payments。DocData Payments是一家位于荷兰的大型支付网关,支持40多种国际支付方式。
安装
通过pip安装
pip install django-oscar-docdata
配置
配置应用程序
- DOCDATA_MERCHANT_NAME
支付提供商提供的凭据。
- DOCDATA_MERCHANT_PASSWORD
支付提供商提供的凭据。
- DOCDATA_PROFILE
在Docdata后台办公室创建的支付方式配置文件。默认名称为“标准”。
- DOCDATA_TESTING
是否以测试模式运行。默认为 True。
添加到 urls.py
from oscar_docdata.dashboard.app import application as docdata_dashboard_app
urlpatterns += [
url(r'^api/docdata/', include('oscar_docdata.urls')),
url(r'^dashboard/docdata/', include(docdata_dashboard_app.urls)),
]
添加到 settings.py
OSCAR_DASHBOARD_NAVIGATION[2]['children'].insert(1, {
'label': _('Docdata Orders'),
'url_name': 'docdata-order-list',
})
在开发过程中,建议启用 suds 和 oscar_docdata 的日志记录功能以查看详细信息
LOGGING = {
# ...
'loggers': {
# ...
'suds.transport': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': True,
},
'oscar_docdata': {
'handlers': ['mail_admins', 'console'],
'level': 'DEBUG',
'propagate': True,
},
},
}
附加:子账户支持
Docdata 允许在同一个合同下创建多个账户。这被称为“子账户”。每个账户都有自己的 VISA/MasterCard/PayPal 等. 连接。此模块支持此类用例。
当您填写 DOCDATA_MERCHANT_PASSWORDS 字典时,提交给这些商家的订单可以在管理界面中显示,并且它们可以接收状态更新。每个键/值是一对商家名称/密码。
当没有配置子账户时,只有当前商家提交的订单可以在管理界面中显示。这支持多租户数据库结构,每个租户只能看到自己的订单。
集成到您的项目中
请查看 沙箱应用程序 了解如何集成应用程序。这包括特定于项目的决策,例如
如何创建支付事件。
如何创建自定义外观类
将哪些字段映射到“门牌号”字段。(例如 line2、line3 或自定义字段)。
当客户取消支付时是否取消订单。
何时提交确认电子邮件。
本地开发和运行测试
您可以使用包含的 Makefile 安装开发环境并运行 flake8 检查器和测试运行器。请确保在虚拟环境中执行此操作
git clone git@github.com:django-oscar/django-oscar-docdata.git
cd django-oscar-docdata
make install
make lint
make test
运行沙箱应用程序
可以运行 沙箱应用程序 以测试此包并查看您的 Docdata 凭证是否有效。在运行 manage.py 之前,您可以设置 DOCDATA_MERCHANT_NAME、DOCDATA_MERCHANT_PASSWORD 和 DOCDATA_PROFILE 环境变量
# creates a local sqlite database
./sandbox/manage.py migrate
# loads some sample products (books)
./sandbox/manage.py oscar_import_catalogue sandbox/fixtures/books.csv
# so you can fill out your shipping address
./sandbox/manage.py loaddata sandbox/fixtures/countries.json
# run the sandbox installation with the docdata merchant username, password and profile
DOCDATA_MERCHANT_NAME=merchant DOCDATA_MERCHANT_PASSWORD=merchant DOCDATA_PROFILE=test ./sandbox/manage.py runserver
Docdata 非常希望拥有唯一的商家订单 ID。原因不是很清楚,因为他们没有使用这些参考(他们使用自己的)。为了避免冲突,沙箱应用程序添加了当前日期时间作为前缀。
Docdata 的支付菜单允许您选择可用的支付方式,因此您不需要在结账应用程序中包含它。您可以使用以下环境变量禁用沙箱支付方式选择
SKIP_PAYMENT_CHOICES=1
配置 Docdata 后台办公室
请确保以下设置已配置
“支付方式名称”需要添加到配置文件中(DOCDATA_PROFILE 的默认值是“标准”)。
需要设置通知 URL 和返回 URL。示例值
成功:http://example.org/api/docdata/update_order/?callback=SUCCESS&order_id=
已取消:http://example.org/api/docdata/update_order/?callback=CANCELLED&order_id=
错误:http://example.org/api/docdata/update_order/?callback=ERROR&order_id=
挂起:http://example.org/api/docdata/update_order/?callback=PENDING&order_id=
更新 URL:http://example.org/api/docdata/update_order/?order_id=
Docdata 支付服务规范
有关详细技术信息,请参阅 支付服务 规范。
注意事项
在使用 Docdata 1.0、1.2 和 1.3 API 的工作中,我们发现以下限制
地址字段面向荷兰地址标准。传递国际地址字段很困难,或者需要黑客攻击,例如
伪造门牌号(因为美国地址字段没有官方字段)。
街道名称限制为 35 个字符,因此“地址行 1”应该被截断。
传递无效的地址字段可能导致 PayPal、VISA 或 MasterCard 交易失败。
当“状态”字段无效(例如,由于输入错误)时,PayPal付款可能会失败。这是PayPal执行的一项检查。然而,Docdata将责任转交给商家(您)。
通常忽略<billTo><address><state>字段。请通过<invoice><shipTo><address><state>提供它。真的。
单个付款对象具有状态值,但付款簇没有。这意味着没有全局状态值可以读取。如果订单在开始付款之前已被取消,则API无法判断。唯一可以检测到这种情况的方式是当客户点击“返回商店”链接时,该链接调用取消回调URL。您可能希望捕获return_view_called信号。
确定订单是否已付款是通过比较“收到 >= 期望”来完成的。这可能会在货币转换中中断。同样,因为API中没有公开付款簇的状态。作为解决方案,有一个DOCDATA_PAYMENT_SUCCESS_MARGIN设置,可以添加100分的边缘。
准备好处理由于输入错误而导致的XSD验证错误。例如,错误的邮编、门牌号或超出最大长度会导致类似错误
REQUEST_DATA_INCORRECT XML request does not match XSD. The data is: cvc-type.3.1.3: The value 'This is a wonderful product and campaign! Wish you a lot of luck!' of element 'ns0:description' is not valid
我们希望Docdata Payments在未来版本的API中解决这个问题。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
散列 for django_oscar_docdata-1.3.3-py2.py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | b0f1c9b93002fb16d01d8774ece7b226ecf63ef016118cf7b0b9c93f95496447 |
|
MD5 | c8569464291c224f844a011343580308 |
|
BLAKE2b-256 | 5aa3bc86cd899053a164a41f528ae948dda787ecc635e13a1c5f43f8bc521772 |