django-oscar的Avalara集成
项目描述
本包提供Avalara(http://avalara.com)和Oscar(http://oscarcommerce.com)之间的集成。Avalara是一项提供美国准确销售税计算的服务。
有用文档
状态
安装
从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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 10d71081ce4c8ca4697a1eac6059f95747c8ae1da24db724ffa29f4e99f10a85 |
|
MD5 | a011c22582a7dc1c97d49ff48b00d583 |
|
BLAKE2b-256 | 92b545b3b7bd363e8d5b8df958a340d4f2c7c6df123804bc7bef409957bc4d6e |