跳转到主要内容

django-oscar的Docdata支付网关集成

项目描述

在django-oscar中集成Docdata Payments。DocData Payments是一家位于荷兰的大型支付网关,支持40多种国际支付方式。

https://travis-ci.org/django-oscar/django-oscar-docdata.svg?branch=master Latest PyPi release

安装

通过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',
})

在开发过程中,建议启用 sudsoscar_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 字典时,提交给这些商家的订单可以在管理界面中显示,并且它们可以接收状态更新。每个键/值是一对商家名称/密码。

当没有配置子账户时,只有当前商家提交的订单可以在管理界面中显示。这支持多租户数据库结构,每个租户只能看到自己的订单。

集成到您的项目中

请查看 沙箱应用程序 了解如何集成应用程序。这包括特定于项目的决策,例如

  • 如何创建支付事件。

  • 如何创建自定义外观类

  • 将哪些字段映射到“门牌号”字段。(例如 line2line3 或自定义字段)。

  • 当客户取消支付时是否取消订单。

  • 何时提交确认电子邮件。

本地开发和运行测试

您可以使用包含的 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_NAMEDOCDATA_MERCHANT_PASSWORDDOCDATA_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中解决这个问题。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

django-oscar-docdata-1.3.3.tar.gz (39.4 kB 查看散列)

上传时间

构建分发

django_oscar_docdata-1.3.3-py2.py3-none-any.whl (56.1 kB 查看散列)

上传时间 Python 2 Python 3

由以下赞助商支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面