ホームページ > バックエンド開発 > Golang > zip.zax Sales Tax API を Golang アプリに統合する

zip.zax Sales Tax API を Golang アプリに統合する

Mary-Kate Olsen
リリース: 2025-01-03 22:17:41
オリジナル
398 人が閲覧しました

Integrate the zip.zax Sales Tax API in Your Golang App

正確な消費税計算が必要なアプリケーションを構築している場合、zip.tax API は統合に最適なツールです。このガイドでは、Golang アプリケーションで zip.tax API を設定して使用する方法を説明します。

前提条件

始める前に、以下のものがあることを確認してください:

  • Golang の基礎知識
  • Golang 開発環境がセットアップされました。
  • zip.tax の API キー

ステップ 1: 必要なライブラリをインストールする

HTTP リクエストを行うには、Golang の標準 net/http パッケージを使用します。さらに、JSON 応答の解析には、encoding/json を使用します。

ステップ 2: Golang プロジェクトをセットアップする

新しいプロジェクト ディレクトリを作成し、新しいモジュールを初期化します:

mkdir ziptax-golang && cd ziptax-golang
go mod init ziptax-golang
ログイン後にコピー

ステップ 3: コードを書く

これは、消費税情報を zip.tax API にクエリする単純な Golang アプリケーションの完全な例です。

package main

import (
    "encoding/json"
    "fmt"
    "log"
    "net/http"
    "net/url"
)

type Response struct {
    Version       string        `json:"version"`
    RCode         int           `json:"rCode"`
    Results       []Result      `json:"results"`
    AddressDetail AddressDetail `json:"addressDetail"`
}

type Result struct {
    GeoPostalCode     string  `json:"geoPostalCode"`
    GeoCity           string  `json:"geoCity"`
    GeoCounty         string  `json:"geoCounty"`
    GeoState          string  `json:"geoState"`
    TaxSales          float64 `json:"taxSales"`
    TaxUse            float64 `json:"taxUse"`
    TxbService        string  `json:"txbService"`
    TxbFreight        string  `json:"txbFreight"`
    StateSalesTax     float64 `json:"stateSalesTax"`
    StateUseTax       float64 `json:"stateUseTax"`
    CitySalesTax      float64 `json:"citySalesTax"`
    CityUseTax        float64 `json:"cityUseTax"`
    CityTaxCode       string  `json:"cityTaxCode"`
    CountySalesTax    float64 `json:"countySalesTax"`
    CountyUseTax      float64 `json:"countyUseTax"`
    CountyTaxCode     string  `json:"countyTaxCode"`
    DistrictSalesTax  float64 `json:"districtSalesTax"`
    DistrictUseTax    float64 `json:"districtUseTax"`
    District1Code     string  `json:"district1Code"`
    District1SalesTax float64 `json:"district1SalesTax"`
    District1UseTax   float64 `json:"district1UseTax"`
    District2Code     string  `json:"district2Code"`
    District2SalesTax float64 `json:"district2SalesTax"`
    District2UseTax   float64 `json:"district2UseTax"`
    District3Code     string  `json:"district3Code"`
    District3SalesTax float64 `json:"district3SalesTax"`
    District3UseTax   float64 `json:"district3UseTax"`
    District4Code     string  `json:"district4Code"`
    District4SalesTax float64 `json:"district4SalesTax"`
    District4UseTax   float64 `json:"district4UseTax"`
    District5Code     string  `json:"district5Code"`
    District5SalesTax float64 `json:"district5SalesTax"`
    District5UseTax   float64 `json:"district5UseTax"`
    OriginDestination string  `json:"originDestination"`
}

type AddressDetail struct {
    NormalizedAddress string  `json:"normalizedAddress"`
    Incorporated      string  `json:"incorporated"`
    GeoLat            float64 `json:"geoLat"`
    GeoLng            float64 `json:"geoLng"`
}

func getSalesTax(address string, apiKey string) (*Response, error) {
    url := fmt.Sprintf("https://api.zip-tax.com/request/v50?key=%s&address=%s", apiKey, url.QueryEscape(address))

    resp, err := http.Get(url)
    if err != nil {
        return nil, fmt.Errorf("failed to make API request: %w", err)
    }
    defer resp.Body.Close()

    if resp.StatusCode != http.StatusOK {
        return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode)
    }

    var taxResponse Response
    if err := json.NewDecoder(resp.Body).Decode(&taxResponse); err != nil {
        return nil, fmt.Errorf("failed to parse response: %w", err)
    }

    return &taxResponse, nil
}

func main() {
    apiKey := "your_api_key_here".  // Replace with your key
    address := "200 Spectrum Center Dr, Irvine, CA 92618"                  // Example address

    taxInfo, err := getSalesTax(address, apiKey)
    if err != nil {
        log.Fatalf("Error fetching sales tax: %v", err)
    }

    fmt.Printf("Normalized Address: %s\n", taxInfo.AddressDetail.NormalizedAddress)
    fmt.Printf("Address Lat/Lng: %f, %f\n", taxInfo.AddressDetail.GeoLat, taxInfo.AddressDetail.GeoLng)
    fmt.Printf("Rate: %.2f%%\n", taxInfo.Results[0].TaxSales*100)
}
ログイン後にコピー

コードの説明

  1. API リクエスト: getSalesTax 関数は、API キーとアドレスを使用して URL を構築し、GET リクエストを作成し、レスポンスを解析します。
  2. 応答の解析: 消費税の詳細に簡単にアクセスできるように、応答の JSON は応答構造体にアンマーシャリングされます。
  3. 表示結果: main 関数は、指定された住所コードの正規化された住所、緯度/経度、および消費税率を出力します。ここで任意の Response 構造体の値を使用して、必要なデータを出力できます。

ステップ 4: アプリケーションを実行する

コードをファイル (main.go など) に保存し、プログラムを実行します。

go run main.go
ログイン後にコピー

次のような出力が表示されるはずです:

Normalized Address: 200 Spectrum Center Dr, Irvine, CA 92618-5003, United States
Address Lat/Lng: 33.652530, -117.747940
Rate: 7.75%
ログイン後にコピー

結論

zip.tax API を Golang アプリケーションに統合するのは簡単です。このガイドに従うことで、住所に基づいた正確な消費税情報を使用してアプリケーションを強化できます。詳細については、公式ドキュメントを参照してください。

ご質問やフィードバックがございましたら、お気軽に以下にコメントを残してください。コーディングを楽しんでください!

以上がzip.zax Sales Tax API を Golang アプリに統合するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート