Rumah > pembangunan bahagian belakang > Golang > Sepadukan API Cukai Jualan zip.zax dalam Apl Golang Anda

Sepadukan API Cukai Jualan zip.zax dalam Apl Golang Anda

Mary-Kate Olsen
Lepaskan: 2025-01-03 22:17:41
asal
441 orang telah melayarinya

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

Jika anda sedang membina aplikasi yang memerlukan pengiraan cukai jualan yang tepat, zip.tax API ialah alat yang sangat baik untuk disepadukan. Panduan ini membimbing anda tentang cara menyediakan dan menggunakan API zip.tax dalam aplikasi Golang.

Prasyarat

Sebelum bermula, pastikan anda mempunyai perkara berikut:

  • Pengetahuan asas Golang.
  • Persekitaran pembangunan Golang disediakan.
  • Kunci API daripada zip.tax.

Langkah 1: Pasang Perpustakaan Diperlukan

Untuk membuat permintaan HTTP, kami akan menggunakan pakej net/http standard Golang. Selain itu, kami akan menggunakan pengekodan/json untuk menghuraikan respons JSON.

Langkah 2: Sediakan Projek Golang Anda

Buat direktori projek baharu dan mulakan modul baharu:

mkdir ziptax-golang && cd ziptax-golang
go mod init ziptax-golang
Salin selepas log masuk

Langkah 3: Tulis Kod

Berikut ialah contoh lengkap aplikasi Golang mudah yang menanyakan zip.tax API untuk maklumat cukai jualan.

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)
}
Salin selepas log masuk

Penjelasan Kod

  1. Permintaan API: Fungsi getSalesTax membina URL dengan kunci API dan alamat, membuat permintaan GET dan menghuraikan respons.
  2. Penghuraian Balasan: JSON respons tidak digabungkan ke dalam struktur Respons untuk akses mudah kepada butiran cukai jualan.
  3. Hasil Paparan: Fungsi utama mencetak alamat biasa, lat/lng dan kadar cukai jualan untuk kod alamat yang ditentukan. Anda boleh menggunakan mana-mana nilai struct Response di sini untuk mengeluarkan data yang anda perlukan.

Langkah 4: Jalankan Aplikasi

Simpan kod ke fail (cth., main.go), kemudian jalankan program:

go run main.go
Salin selepas log masuk

Anda sepatutnya melihat output yang serupa dengan ini:

Normalized Address: 200 Spectrum Center Dr, Irvine, CA 92618-5003, United States
Address Lat/Lng: 33.652530, -117.747940
Rate: 7.75%
Salin selepas log masuk

Kesimpulan

Mengintegrasikan API zip.tax ke dalam aplikasi Golang anda adalah mudah. Dengan mengikuti panduan ini, anda boleh meningkatkan aplikasi anda dengan maklumat cukai jualan yang tepat berdasarkan alamat. Untuk butiran lanjut, rujuk dokumentasi rasmi.

Jika anda mempunyai sebarang soalan atau maklum balas, sila tinggalkan komen di bawah. Selamat mengekod!

Atas ialah kandungan terperinci Sepadukan API Cukai Jualan zip.zax dalam Apl Golang Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan