跳转到主要内容

django-oscar的Avalara集成

项目描述

本包提供Avalara(http://avalara.com)和Oscar(http://oscarcommerce.com)之间的集成。Avalara是一项提供美国准确销售税计算的服务。

有用文档

状态

https://secure.travis-ci.org/tangentlabs/django-oscar-avalara.png?branch=master

安装

从PyPI安装

$ pip install django-oscar-avalara

或GitHub

$ pip install git+https://github.com/tangentlabs/django-oscar-avalara.git

然后添加 'avalara'INSTALLED_APPS

指定以下设置

  • AVALARA_ACCOUNT_NUMBER

  • AVALARA_LICENSE_KEY

  • AVALARA_COMPANY_CODE

您在注册Avalara时应该已经获得了这些详情。

在非生产环境中,设置 AVALARA_TEST_MODE = True 以向Avalara开发服务器发送请求。

此包使用名为“avalara”的记录器,因此通常需要为此记录器定义处理器。

使用方法

要将Avalara集成到结账中,您需要覆盖结账视图类 PaymentDetailsView 中的两个方法。

首先覆盖 build_submission 以将税应用于购物车和运输方式

from oscar.apps.checkout import views
from django.contrib import messages
from django.template import loader

import avalara

class PaymentDetailsView(views.PaymentDetailsView):

    ...

    def build_submission(self, **kwargs):
        submission = super(PaymentDetailsView, self).build_submission(**kwargs)

        # Fetch and apply taxes to submission dict
        try:
            avalara.apply_taxes_to_submission(submission)
        except avalara.InvalidAddress, e:
            msg = loader.render_to_string(
                'avalara/messages/invalid_address.html',
                {'error': e.message})
            messages.error(self.request, msg, extra_tags="safe noicon")

        return submission

在此,我们将提交字典传递给 apply_taxes_to_submission,这将查找适当的税并将其应用到购物车和运输方式实例上。

我们还要注意InvalidAddress异常,如果Avalara无法找到传递的运输地址的税务管辖权,则会引发此异常。

最后,重写handle_successful_order以提交已放置的订单到Avalara

from oscar.apps.checkout import views
from django.contrib import messages
from django.template import loader

import avalara

class PaymentDetailsView(views.PaymentDetailsView):

    ...

    def handle_successful_order(self, order):
        response = super(PaymentDetailsView, self).handle_successful_order(
            order)

        # Submit tax information to Avalara
        try:
            avalara.submit(order)
        except Exception:
            # Tax can be re-submitted later so we swallow all possible
            # exceptions and log them.
            logger.error("Unable to submit tax information for order %s",
                         order.number, exc_info=True)

        return response

在这里,我们将订单实例传递给submit,该实例将提交税务信息以供报告。我们还会捕获并记录任何异常,因为我们不希望订单放置显示错误屏幕。如果与Avalara通信存在问题,我们可以在稍后手动重新提交订单。

贡献

克隆仓库,创建一个虚拟环境并运行

make install

以安装所有依赖项。使用以下命令运行测试

./runtests.py

有一个沙盒网站,您可以浏览并用于测试Avalara集成。使用以下命令创建它

make sandbox

创建后,浏览它

cd sandbox
./manage.py runserver

请注意,您需要在私有的integration.py模块中拥有Avalara的测试凭据。

变更日志

0.2.1

修复了提交订单的一些问题。

0.2

支持Oscar 1.0并解决缓存键问题。

0.1.1

补丁版本,将支持限制为django-oscar>=0.6,<1.0

0.1

初始版本 - 支持django-oscar>=0.6

项目详细信息


下载文件

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

源分布

django-oscar-avalara-0.2.1.tar.gz (8.5 kB 查看散列)

上传时间

支持者

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