dlocal services

This commit is contained in:
lizandrogd
2025-05-12 14:36:23 -05:00
parent 023efbc16d
commit 31483591f1
3 changed files with 77 additions and 0 deletions
+50
View File
@@ -412,3 +412,53 @@ func SeePlanes(cfg models.DlocalApi) ([]byte, error) {
return body, nil
}
func SeeSubscription(cfg models.DlocalApi, subscriptionId string, invoiceId string) ([]byte, error) {
// Determinar la URL base según el modo
baseURL := cfg.UrlDev
accessKeyID := cfg.AccessKeyIDdev
accessKeySecret := cfg.AccessKeySecretdev
if cfg.Modo == "prod" {
baseURL = cfg.UrlProd
accessKeyID = cfg.AccessKeyID
accessKeySecret = cfg.AccessKeySecret
}
// Construir la URL completa para el endpoint
url := fmt.Sprintf("%s/v1/subscription/%s/execution/%s", baseURL, subscriptionId, invoiceId)
// Crear la solicitud HTTP
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
return nil, fmt.Errorf("error al crear la solicitud: %w", err)
}
// Establecer encabezados
req.Header.Set("Content-Type", "application/json")
// En DLocal se usa generalmente Basic Auth codificado en base64, pero si realmente usan Bearer personalizado:
authToken := fmt.Sprintf("Bearer %s:%s", accessKeyID, accessKeySecret)
req.Header.Set("Authorization", authToken)
// Cliente HTTP con timeout
client := &http.Client{Timeout: 30 * time.Second}
// Ejecutar solicitud
resp, err := client.Do(req)
if err != nil {
return nil, fmt.Errorf("error al enviar la solicitud: %w", err)
}
defer resp.Body.Close()
// Leer respuesta
body, err := io.ReadAll(resp.Body)
if err != nil {
return nil, fmt.Errorf("error al leer la respuesta: %w", err)
}
if resp.StatusCode != http.StatusOK {
return nil, fmt.Errorf("respuesta no exitosa (%d): %s", resp.StatusCode, string(body))
}
return body, nil
}