v1.2.0
GitHub

Go SDK

Cliente Go idiomatico para integracao com todas as APIs do ecossistema Axon.

Instalacao

go get github.com/axon-fintech/axon-go

Configuracao

main.gogo
package main

import (
    "github.com/axon-fintech/axon-go"
)

func main() {
    client := axon.NewClient(
        axon.WithAPIKey("axon_sk_..."),
        axon.WithEnvironment(axon.Sandbox), // ou axon.Production
    )

    // Usar o client...
}

Vault - Tokenizacao

vault.gogo
package main

import (
    "context"
    "fmt"
    "github.com/axon-fintech/axon-go"
    "github.com/axon-fintech/axon-go/vault"
)

func tokenizeCard(client *axon.Client) {
    ctx := context.Background()

    token, err := client.Vault.CreateToken(ctx, &vault.CreateTokenRequest{
        Card: &vault.Card{
            Number:     "4111111111111111",
            ExpMonth:   12,
            ExpYear:    2025,
            CVV:        "123",
            HolderName: "JOAO SILVA",
        },
        Metadata: map[string]string{
            "customer_id": "cust_123",
        },
    })

    if err != nil {
        panic(err)
    }

    fmt.Printf("Token: %s\n", token.ID)
    fmt.Printf("Brand: %s\n", token.Card.Brand)
    fmt.Printf("Last4: %s\n", token.Card.Last4)
}

Synapse - Transformacoes

synapse.gogo
package main

import (
    "context"
    "fmt"
    "github.com/axon-fintech/axon-go"
    "github.com/axon-fintech/axon-go/synapse"
)

func transformMessage(client *axon.Client) {
    ctx := context.Background()

    result, err := client.Synapse.Transform(ctx, &synapse.TransformRequest{
        SourceFormat: "pacs.008",
        TargetFormat: "pix_payment",
        Message:      []byte(pacs008XML),
    })

    if err != nil {
        panic(err)
    }

    fmt.Printf("Transformation ID: %s\n", result.ID)
    fmt.Printf("Result: %s\n", string(result.Data))
}

Tratamento de erros

errors.gogo
package main

import (
    "context"
    "errors"
    "fmt"
    "github.com/axon-fintech/axon-go"
)

func handleErrors(client *axon.Client) {
    ctx := context.Background()

    _, err := client.Vault.GetToken(ctx, "tok_invalid")

    if err != nil {
        var axonErr *axon.Error
        if errors.As(err, &axonErr) {
            fmt.Printf("Error code: %s\n", axonErr.Code)
            fmt.Printf("Message: %s\n", axonErr.Message)
            fmt.Printf("Request ID: %s\n", axonErr.RequestID)

            switch axonErr.Code {
            case "TOKEN_NOT_FOUND":
                // Handle not found
            case "RATE_LIMIT_EXCEEDED":
                // Handle rate limit
            default:
                // Handle other errors
            }
        }
    }
}

Recursos