跳转到主要内容

Avalara Tax Python SDK。

项目描述

Avalara AvaTax Python SDK

Build Status PyPI

这个GitHub存储库是Avalara世界级税务服务AvaTax的Python SDK。它使用AvaTax REST v2 API,这是一个完全的REST实现,提供了一个用于所有AvaTax功能的单一客户端。有关AvaTax REST v2的更多信息,请访问Avalara开发者网络或查看在线Swagger文档

安装

使用pip简单安装。 pip install Avalara

或者

  1. 将此存储库克隆到您的本地机器。
$ git clone https://github.com/avadev/AvaTax-REST-V2-Python-SDK.git
  1. 下载后,进入 AvaTax-REST-V2-Python-SDK 目录。
$ cd AvaTax-REST-V2-Python-SDK
  1. 使用Python 3开始一个新的虚拟环境并激活它。
AvaTax-REST-V2-Python-SDK $ python3 -m venv ENV
AvaTax-REST-V2-Python-SDK $ source ENV/bin/activate
  1. pip 将此包以及测试的额外包安装到您的虚拟环境中。
(ENV) AvaTax-REST-V2-Python-SDK $ pip install -e .
(ENV) AvaTax-REST-V2-Python-SDK $ pip install -e .[testing]

用法

创建一个事务

从avalara模块导入AvataxClient

首先需要将AvataxClient构造函数模块导入到您的命名空间或Python脚本中。

from avalara import AvataxClient

现在我们已准备好构建一个客户端对象

创建一个新的AvaTaxClient对象

    client = AvataxClient('my test app',
                          'ver 0.0',
                          'my test machine',
                          'sandbox')

客户端构造函数接受四个字符串参数,依次为:app_name(必需)app_version(必需)machine_name(可选)environment(必需)。app_name、app_version、machine_name将用于构建与该客户端每次调用相关的客户端头。它将包含在响应对象中,以帮助您跟踪API调用。环境变量environment可以是"sandbox"production,它们对应于AvaTax服务的两个不同环境。如果您是普通用户或免费试用用户,请使用"production"。如果您没有账户,您可以在我们的开发者网站上注册一个免费试用账户,这将也是一个生产账户。如果您希望获得沙箱账户,请联系您的客户账户经理

ping服务

现在我们有了客户端对象,我们可以ping AvaTax REST V2服务器以确保连接性。

  response = client.ping()

  # to view respnse text
  print(response.text())

  # to view json version of the response
  print(response.json())

  # to view the status code
  print(response.status_code())

  # to view the raw response
  print(response.raw())

请注意,使用此SDK进行的所有REST调用的响应都将是一个请求对象,其中包含状态码、响应文本、原始json和其他有关响应的信息。

将凭据添加到您的客户端对象

与ping不同,我们REST V2 API中的大多数方法都需要您进行身份验证,以便将您提供的信息与您的账户相关联。要了解是否需要身份验证,请访问我们的API参考页面。要在当前客户端对象上添加凭据

  client = client.add_credentials('USERNAME/ACCOUNT_ID', 'PASSWORD/LICENSE_KEY')

add_credential方法将哈希您的用户名/密码,或账户ID/许可证密钥对,并将其附加到您客户端对象发出的每个调用中,这意味着您只需为每个您准备使用的客户端添加一次凭据。

要验证您已添加有效的凭据,只需再次调用ping方法即可,这次在响应文本中您应该看到"authenticated": true

使用客户端对象创建交易

现在我们的客户端对象已进行身份验证,我们可以调用create_transaction方法,它调用CreateTransaction API

  transaction_response = client.create_transaction(tax_document)
  print(transaction_response.text())

  tax_document = {
      'addresses': {'SingleLocation': {'city': 'Irvine',
                                       'country': 'US',
                                       'line1': '123 Main Street',
                                       'postalCode': '92615',
                                       'region': 'CA'}},
      'commit': False,
      'companyCode': 'DEFAULT',
      'currencyCode': 'USD',
      'customerCode': 'ABC',
      'date': '2017-04-12',
      'description': 'Yarn',
      'lines': [{'amount': 100,
                'description': 'Yarn',
                 'itemCode': 'Y0001',
                 'number': '1',
                 'quantity': 1,
                 'taxCode': 'PS081282'}],
      'purchaseOrderNo': '2017-04-12-001',
      'type': 'SalesInvoice'}

create_transaction方法接受一个模型,在Python中是字典类型对象。您将填写以包含所有交易信息。在这种情况下,我们使用TransactionModel有关其他AvaTax API使用的模型信息,请访问我们的信息页面此处

使用其他方法

与其他语言中的SDK一样,Python SDK包括AvaTax REST V2 API提供的所有方法。要找到与特定API端点对应的方法,只需访问此代码页面。要了解如何将我们的REST API集成到您的系统中,请访问我们的开发者指南,其中包含有关使用我们API提供的强大功能的信息。

使用交易构建器

我们意识到必须格式化TransactionModel可能很复杂且耗时,因此我们创建了一个名为Transaction Builder的工具来帮助您组合交易模型,并创建它!首先将交易构建器构造函数导入您的命名空间:from avalara.transaction_builder import TransactionBuilder

然后,让我们创建一个交易构建器对象

  tb = TransactionBuilder(client, "DEFAULT", "SalesInvoice", "ABC")

构建器需要四个必需参数,依次为

  • 客户端对象
  • 公司名称(通过AvaTax门户创建或通过调用CreateCompany API
  • 交易类型,可选完整列表
  • 客户代码,一个唯一代码,用于标识请求此交易的客户。

现在您可以自由地向该对象添加交易细节,使用方法如with_addresswith_linewith_parameter等。有关可用的交易构建器方法和它们接受的参数的完整列表,请访问代码页面。最后,您可以在构建器对象上调用create方法,这将使用您迄今为止构建的交易模型调用CreateTransaction API,并返回响应。

设置测试凭证

如果您想运行集成和单元测试,您必须将一对凭证存储在当前环境中。将以下内容添加到您环境的activate文件中,并重新启动bash。或者,您可以直接使用export

export SANDBOX_USERNAME='your_sandbox_username'
export SANDBOX_PASSWORD='your_sandbox_password'

# OR
SANDBOX_ACCOUNTID='your_sandbox_account_id'
SANDBOX_LICENSEKEY='your_sandbox_license_key'

注意:仅应使用沙盒凭证进行测试,因为测试用例将在帐户上提交/调整/作废虚拟交易以验证功能。

日志记录

日志记录使用标准的Python日志框架实现。

  1. 所有来自AvataxClient类的相关方法都使用了ava_log装饰器。(这是通过在类级别使用另一个装饰器decorate_all_methods实现的)
  2. ava_log装饰器收集相关请求数据、响应数据(用于仪表化)以及异常情况下的错误数据。
  3. 已将AvataxClient构造函数修改为可选参数is_log_req_resp_allowed(默认为False),以控制日志条目是否应包含请求和响应对象。
  4. SDK消费者代码还可以设置AvataxClient的logger属性,以使用已配置的logger实例。例如:
from logging import config 

# configure logging using file config or dictConfig 
# or by setting basicConfig (this is default in case no logger is set)
config.fileConfig("logger_config.conf")

logger = logging.getLogger()

# set logger property
client.logger = logger

问题或建议

Avalara非常重视用户的反馈,我们希望确保每位使用我们服务的客户都能获得最佳体验。如果您对此SDK或AvaTax有任何疑问,请在我们开发者关系论坛上发布您的问题/建议,我们将及时回复您。如果您想为此SDK做出贡献,请从仓库分叉并从分叉版本提交pull request。我们很高兴审查您的贡献,并在所有检查都通过的情况下合并它们!

原始贡献者

韩宝

菲利普·韦纳

罗伯特·布朗森

艾德里安·卡诺斯奇

项目详情


发布历史 发布通知 | RSS订阅

下载文件

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

源分发

avalara-24.8.2.tar.gz (86.2 kB 查看哈希值)

上传时间:

支持