ron86i/go-siat
GitHub: ron86i/go-siat
一个用 Go 编写的 SDK,封装了玻利维亚 SIAT 税务管理系统的 SOAP 接口,提供类型安全的电子开票、数字签名和目录同步等功能。
Stars: 59 | Forks: 22
go-siat 是一个使用 Go 开发的专业 SDK,旨在简化与 SIAT (综合税务管理系统) SOAP Web 服务的集成。
## 💡 为什么选择 go-siat? 在玻利维亚,与 SIAT 的 SOAP Web 服务集成以实现电子开票通常是一个复杂的过程,涉及手动处理 XML、数字签名(XMLDSig)以及容易出错的嵌套数据结构。 **go-siat** 将所有这些复杂性抽象在一个现代化、符合语言习惯且类型安全的 SDK 之后。我们的目标是让玻利维亚的开发者能够专注于其应用程序(POS、ERP)的业务逻辑,而由 SDK 负责处理: - 构建完美的 SOAP 信封。 - 税务机关要求的数字签名。 - 发票数据包的压缩与编码。 - 目录和操作的结构化管理。 ## 🎯 功能 - 🛡️ **类型安全**:为所有请求和响应提供严格的数据结构(告别通用的 map 和硬编码字符串)。 - 🏗️ **Builder Pattern**:通过流式接口直观地构建复杂请求(如发票和取消作废)。 - 📦 **完全的 SOAP 抽象**:透明地管理 SOAP 层。开发者只需与 struct 交互,而无需直接处理 XML。 - ✍️ **集成数字签名(XMLDSig)**:提供实用工具,自动使用您的数字证书对发票进行签名。 - 🚀 **高性能**:零不必要的依赖,利用 Go 原生的速度进行字节操作和压缩。 - 🧩 **模块化**:多个服务(`Codes`、`Synchronization`、`Operations`、`Sales`、`Electronic`、`Computerized`)清晰分离。 - 🏢 **多部门支持**:原生且经过验证,支持 **48 个不同的部门**(销售、酒店、采矿、医院、碳氢化合物等)。 ## 已实现的功能 SDK 涵盖了 SIAT 生态系统中的关键服务: | 服务 | 核心功能 | | :----------------------- | :---------------------------------------------------------------------------------------- | | **Codes** | CUIS/CUFD 请求(单次与批量)、NIT 验证、通信。 | | **Synchronization** | 活动、参数、产品、服务以及部门单据的目录同步。 | | **Operations** | POS 注册/关闭、重大事件管理。 | | **Sales** | 专门用于销售、奖金和费用的服务。 | | **Adjustment Documents** | 信贷/借记单据、对账以及冲销的管理。 | | **Online Electronic** | 全面支持带数字签名的开票。 | | **Online Computerized** | 支持无数字签名的模式。 | | **Specialized Sectors** | 面向电信、基础服务、金融实体和机票的服务。 | | **Special Sectors** | 经过验证,支持 SIAT 的 **48 个监管 sector**。 | ## 🚀 快速入门指南 ### 安装 ``` go get github.com/ron86i/go-siat ``` ### 前置条件 - Go 1.25 或更高版本。 - 有效的数字证书(p12/pfx)和私钥(适用于 Electronic 模式)。 ### 示例:验证 NIT ``` package main import ( "context" "fmt" "github.com/ron86i/go-siat" "github.com/ron86i/go-siat/pkg/models" ) func main() { // 1. Initialize the client s, _ := siat.New("YOUR_SIAT_URL", nil) // 2. Prepare the request using builders req := models.Codigos().NewVerificarNitBuilder(). WithNit(123456789). Build() // 3. Execute call resp, err := s.Codigos().VerificarNit(context.Background(), req) if err != nil { panic(err) } fmt.Printf("NIT Transaction status: %v\n", resp.Body.Content.RespuestaVerificarNit.Transaccion) } ``` ## 🛠️ 使用参考(测试) **集成测试**充当了该 SDK 的实时技术文档: | 分类 | 测试文件 | | :----------------------- | :------------------------------------------------------------------------------------------------------------- | | **Codes** | [`siat_codigos_service_test.go`](internal/adapter/services/siat_codigos_service_test.go) | | **Synchronization** | [`siat_sincronizacion_service_test.go`](internal/adapter/services/siat_sincronizacion_service_test.go) | | **Operations** | [`siat_operaciones_service_test.go`](internal/adapter/services/siat_operaciones_service_test.go) | | **Sales** | [`siat_compra_venta_service_test.go`](internal/adapter/services/siat_compra_venta_service_test.go) | | **Electronic** | [`siat_electronica_service_test.go`](internal/adapter/services/siat_electronica_service_test.go) | | **Computerized** | [`siat_computarizada_service_test.go`](internal/adapter/services/siat_computarizada_service_test.go) | | **Adjustment Documents** | [`siat_documento_ajuste_service_test.go`](internal/adapter/services/siat_documento_ajuste_service_test.go) | | **Telecommunications** | [`siat_telecomunicaciones_service_test.go`](internal/adapter/services/siat_telecomunicaciones_service_test.go) | | **Basic Services** | [`siat_servicio_basico_service_test.go`](internal/adapter/services/siat_servicio_basico_service_test.go) | | **Financial Entities** | [`siat_entidad_financiera_service_test.go`](internal/adapter/services/siat_entidad_financiera_service_test.go) | | **Airline Tickets** | [`siat_boleto_aereo_service_test.go`](internal/adapter/services/siat_boleto_aereo_service_test.go) | | **Invoicing (Sectors)** | [`pkg/models/invoices/`](pkg/models/invoices/) | | **End-to-End** | [`siat_test.go`](siat_test.go) | ## 📄 许可证 本项目基于 **MIT License** 授权。详情请参阅 [`LICENSE`](LICENSE) 文件。标签:CVE, EVTX分析, Go, Ruby工具, SOAP, 数字签名, 日志审计, 电子发票, 税务系统