Tipagens oficiais e helpers modernos para integrar com a API da AbacatePay.
go get github.com/AbacatePay/go-types@latestAntes de tudo, você deve específicar a versão da API que você deseja importar os tipos. Coloque /v* no final da importação, sendo * a versão que deseja usar:
import "github.com/AbacatePay/go-types/v2"-
Prefixo
API*Representa estruturas gerais da API (Objetos retornados, modelos internos etc.). -
Prefixo
Webhook*Representa payloads recebidos pelos eventos de webhook. Documentação: https://docs.abacatepay.com/pages/webhooks -
Prefixo
REST<HTTPMethod>*Tipos usados em requisições diretas à API.-
Sufixo Body → corpo enviado na requisição Ex.:
RESTPostCreateNewChargeBody -
Sufixo
QueryParams→ parâmetros de query Ex.:RESTGetCheckQRCodePixStatusQueryParams -
Sufixo
Data→ dados retornados pela API Ex.:RESTGetListCouponsData
-
-
O pacote NÃO adiciona tipos além do que existe na documentação oficial. Cada tipo reflete exatamente o que está documentado aqui: https://docs.abacatepay.com/pages/introduction
package main
import (
"bytes"
"encoding/json"
"net/http"
types "github.com/AbacatePay/go-types/v2"
)
func CreateCoupon(body types.RESTPostCreateCouponBody) (*types.RESTPostCreateCouponData, error) {
url := types.APIBaseURL + types.RouteCreateCoupon
payload, _ := json.Marshal(body)
req, _ := http.NewRequest(http.MethodPost, url, bytes.NewBuffer(payload))
req.Header.Set("Authorization", "...")
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
var data types.RESTPostCreateCouponData
if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
return nil, err
}
return data, nil
}Escute eventos de Webhooks da AbacatePay
package main
import (
"encoding/json"
"net/http"
types "github.com/AbacatePay/go-types/v2"
)
func webhookHandler(w http.ResponseWriter, r *http.Request) {
var event types.WebhookEvent
if err := json.NewDecoder(r.Body).Decode(&event); err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
switch event.Event {
case types.WebhookEventBillingPaid:
// Pagamento confirmado
case types.WebhookEventPayoutDone:
// Saque concluído
case types.WebhookEventPayoutFailed:
// Saque falhou
}
w.WriteHeader(http.StatusOK)
}Feito com 🥑 pela equipe AbacatePay
Open source, de verdade.