avalara/avataxclient

Avalara AvaTax 商业税务计算和处理的客户端库。使用 REST v2 API。

24.8.2 2024-08-30 16:22 UTC

This package is auto-updated.

Last update: 2024-08-30 16:25:54 UTC


README

此GitHub仓库是Avalara的全球一流税务服务AvaTax的PHP SDK。它使用AvaTax REST v2 API,这是一个完整的REST实现,提供对AvaTax所有功能的单一客户端。有关AvaTax REST v2的更多信息,请访问Avalara开发者网络或查看在线Swagger文档

构建状态

Packagist

Packagist

Travis-CI

Travis

安装PHP SDK

AvaTax PHP SDK 以Composer包的形式提供。

要从Composer使用AvaTax PHP SDK

  • composer.json 文件添加到您的项目中,并链接到AvaTax
{
    "require": {
        "avalara/avataxclient": "*"
    }
}
  • 运行 composer install 下载最新版本。

使用PHP SDK

PHP SDK使用流畅的界面来定义与AvaTax的连接,并执行API调用以计算交易中的税务。以下是一个连接到API的示例。

<?php

// Include the AvaTaxClient library
require __DIR__ . '/vendor/autoload.php';
use Avalara\AvaTaxClient;

// Create a new client
$client = new Avalara\AvaTaxClient('phpTestApp', '1.0', 'localhost', 'sandbox');
$client->withSecurity('myUsername', 'myPassword');

// If I am debugging, I can call 'Ping' to see if I am connected to the server
$p = $client->ping();
echo('<h2>Ping</h2>');
echo('<pre>' . json_encode($p, JSON_PRETTY_PRINT) . '</pre>');
if ($p->authenticated == true) {
    echo '<p>Authenticated!</p>';
}

// Create a simple transaction for $100 using the fluent transaction builder
$tb = new Avalara\TransactionBuilder($client, "DEFAULT", Avalara\DocumentType::C_SALESINVOICE, 'ABC');
$t = $tb->withAddress('SingleLocation', '123 Main Street', null, null, 'Irvine', 'CA', '92615', 'US')
    ->withLine(100.0, 1, null, "P0000000")
    ->create();
echo('<h2>Transaction #1</h2>');
echo('<pre>' . json_encode($t, JSON_PRETTY_PRINT) . '</pre>');

// Now, let's create a more complex transaction!
$tb = new Avalara\TransactionBuilder($client, "DEFAULT", Avalara\DocumentType::C_SALESINVOICE, 'ABC');
$t = $tb->withAddress('ShipFrom', '123 Main Street', null, null, 'Irvine', 'CA', '92615', 'US')
    ->withAddress('ShipTo', '100 Ravine Lane', null, null, 'Bainbridge Island', 'WA', '98110', 'US')
    ->withLine(100.0, 1, null, "P0000000")
    ->withLine(1234.56, 1, null, "P0000000")
    ->withExemptLine(50.0, null, "NT")
    ->withLine(2000.0, 1, null, "P0000000")
    ->withLineAddress(Avalara\TransactionAddressType::C_SHIPFROM, "123 Main Street", null, null, "Irvine", "CA", "92615", "US")
    ->withLineAddress(Avalara\TransactionAddressType::C_SHIPTO, "1500 Broadway", null, null, "New York", "NY", "10019", "US")
    ->withLine(50.0, 1, null, "FR010000")
    ->create();
echo('<h2>Transaction #2</h2>');
echo('<pre>' . json_encode($t, JSON_PRETTY_PRINT) . '</pre>');

?>

如何在PHP SDK中启用日志记录

  • SDK使用PSR-3,这是PHP中用于日志记录功能的通用接口。
  • 客户端将像Monolog、Analog等一样在他们的端点实现绑定,以启用日志记录。
  • 默认情况下,没有启用日志记录。
  • 日志消息中所有属性都在 LogObject.php 中。
  • 要启用或禁用请求和响应对象的日志记录,有一个布尔变量 logRequestAndResponseBody 作为构造函数参数。默认设置为 FALSE
  • 日志输出为 JSON 格式。

可以通过在客户端添加日志库(如Monolog)来启用日志记录。这可以通过在composer.json中添加依赖项和版本来实现

"require": {
        ....
        ....
        "monolog/monolog": "^3.2"
    },

仅添加上述配置后,日志框架就会识别绑定。现在,我们必须将日志对象作为AvaTaxClient的构造函数参数提供。可以这样做:

// Include the packages/classes we would need to create the logger object

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\JsonFormatter;
use Monolog\Processor\PsrLogMessageProcessor;

以下示例展示了如何添加配置以在控制台(stdout)显示日志

$stream_handler = new StreamHandler("php://stdout");

$stream_handler->setFormatter(new JsonFormatter());

// Follow PSR-3 specificaiton.
$psrProcessor = new PsrLogMessageProcessor();

$logger = new Logger('appLogger', [$stream_handler], [
    $psrProcessor,
  ]);

// Create a new client
$client = new Avalara\AvaTaxClient('phpTestApp', '1.0', 'localhost', 'sandbox',[], $logger, true);

这应该会将日志添加到SDK,并将日志显示在控制台上。如果我们想使用其他配置,例如将日志存储在文件中,则handler(在上面的示例中为StreamHandler)需要相应地进行更改。