Maison > développement back-end > Golang > Intégrez l'API de taxe de vente zip.zax dans votre application Golang

Intégrez l'API de taxe de vente zip.zax dans votre application Golang

Mary-Kate Olsen
Libérer: 2025-01-03 22:17:41
original
398 Les gens l'ont consulté

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

Si vous créez une application qui nécessite des calculs précis de la taxe de vente, l'API zip.tax est un excellent outil à intégrer. Ce guide vous explique comment configurer et utiliser l'API zip.tax dans une application Golang.

Conditions préalables

Avant de commencer, assurez-vous d'avoir les éléments suivants :

  • Connaissance de base du Golang.
  • Un environnement de développement Golang mis en place.
  • Une clé API de zip.tax.

Étape 1 : Installer les bibliothèques requises

Pour effectuer des requêtes HTTP, nous utiliserons le package net/http standard de Golang. De plus, nous utiliserons encoding/json pour analyser les réponses JSON.

Étape 2 : Configurez votre projet Golang

Créez un nouveau répertoire de projet et initialisez un nouveau module :

mkdir ziptax-golang && cd ziptax-golang
go mod init ziptax-golang
Copier après la connexion

Étape 3 : Écrivez le code

Voici un exemple complet d'une application Golang simple qui interroge l'API zip.tax pour obtenir des informations sur la taxe de vente.

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)
}
Copier après la connexion

Explication du Code

  1. Demande API : La fonction getSalesTax construit une URL avec la clé API et une adresse, effectue une requête GET et analyse la réponse.
  2. Analyse de la réponse : La réponse JSON est désorganisée dans une structure de réponse pour un accès facile aux détails de la taxe de vente.
  3. Afficher les résultats : La fonction principale imprime l'adresse normalisée, la latitude/lng et le taux de taxe de vente pour le code d'adresse spécifié. Vous pouvez utiliser n'importe laquelle des valeurs de la structure Response ici pour générer les données dont vous avez besoin.

Étape 4 : Exécutez l'application

Enregistrez le code dans un fichier (par exemple, main.go), puis exécutez le programme :

go run main.go
Copier après la connexion

Vous devriez voir un résultat similaire à celui-ci :

Normalized Address: 200 Spectrum Center Dr, Irvine, CA 92618-5003, United States
Address Lat/Lng: 33.652530, -117.747940
Rate: 7.75%
Copier après la connexion

Conclusion

L'intégration de l'API zip.tax dans votre application Golang est simple. En suivant ce guide, vous pouvez améliorer votre demande avec des informations précises sur la taxe de vente en fonction de l'adresse. Pour plus de détails, reportez-vous à la documentation officielle.

Si vous avez des questions ou des commentaires, n'hésitez pas à laisser un commentaire ci-dessous. Bon codage !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal