首頁 > 後端開發 > Golang > 將 zip.zax 銷售稅 API 整合到您的 Golang 應用程式中

將 zip.zax 銷售稅 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 套件。此外,我們將使用encoding/json來解析JSON回應。

第 2 步:設定您的 Golang 項目

建立新的專案目錄並初始化新模組:

mkdir ziptax-golang && cd ziptax-golang
go mod init ziptax-golang
登入後複製

第三步:編寫程式碼

這是一個簡單的 Golang 應用程式的完整範例,該應用程式查詢 zip.tax API 以獲取銷售稅資訊。

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 被解組到 Response 結構中,以便輕鬆存取銷售稅詳細資料。
  3. 顯示結果: 主要函數列印指定地址代碼的標準化地址、緯度/經度和銷售稅率。您可以在此處使用任何 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 銷售稅 API 整合到您的 Golang 應用程式中的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板