Update dlocal_service.go
This commit is contained in:
@@ -357,57 +357,58 @@ func DeactivatePlan(cfg models.DlocalApi, planID string, subscriptionId string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func SeePlanes(cfg models.DlocalApi) ([]byte, error) {
|
func SeePlanes(cfg models.DlocalApi) ([]byte, error) {
|
||||||
// Determinar la URL base según el modo
|
// Validar modo y establecer valores
|
||||||
baseURL := cfg.UrlDev
|
var baseURL, accessKeyID, accessKeySecret string
|
||||||
accessKeyID := cfg.AccessKeyIDdev
|
|
||||||
accessKeySecret := cfg.AccessKeySecretdev
|
|
||||||
|
|
||||||
if cfg.Modo == "prod" {
|
switch cfg.Modo {
|
||||||
|
case "prod":
|
||||||
baseURL = cfg.UrlProd
|
baseURL = cfg.UrlProd
|
||||||
accessKeyID = cfg.AccessKeyID
|
accessKeyID = cfg.AccessKeyID
|
||||||
accessKeySecret = cfg.AccessKeySecret
|
accessKeySecret = cfg.AccessKeySecret
|
||||||
|
default:
|
||||||
|
baseURL = cfg.UrlDev
|
||||||
|
accessKeyID = cfg.AccessKeyIDdev
|
||||||
|
accessKeySecret = cfg.AccessKeySecretdev
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if baseURL == "" || accessKeyID == "" || accessKeySecret == "" {
|
||||||
|
return nil, fmt.Errorf("configuración incompleta para el entorno %q", cfg.Modo)
|
||||||
|
}
|
||||||
|
|
||||||
// Construir la URL completa para el endpoint
|
// Construir la URL del endpoint
|
||||||
url := fmt.Sprintf("%s/v1/subscription/planes", baseURL)
|
url := fmt.Sprintf("%s/v1/subscription/plan/all", baseURL)
|
||||||
|
|
||||||
// Construir el token de autorización
|
|
||||||
authToken := fmt.Sprintf("Bearer %s:%s", accessKeyID, accessKeySecret)
|
|
||||||
|
|
||||||
// Crear la solicitud HTTP
|
// Crear la solicitud HTTP
|
||||||
req, err := http.NewRequest(http.MethodGet, url, nil)
|
req, err := http.NewRequest(http.MethodGet, url, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error al crear la solicitud: %v", err)
|
return nil, fmt.Errorf("error al crear la solicitud: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Agregar los encabezados a la solicitud
|
// Establecer encabezados
|
||||||
req.Header.Set("Content-Type", "application/json")
|
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)
|
req.Header.Set("Authorization", authToken)
|
||||||
|
|
||||||
// Configurar el cliente HTTP
|
// Cliente HTTP con timeout
|
||||||
client := &http.Client{
|
client := &http.Client{Timeout: 30 * time.Second}
|
||||||
Timeout: 30 * time.Second,
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ejecutar la solicitud
|
// Ejecutar solicitud
|
||||||
resp, err := client.Do(req)
|
resp, err := client.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error al enviar la solicitud: %v", err)
|
return nil, fmt.Errorf("error al enviar la solicitud: %w", err)
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
// Leer la respuesta
|
// Leer respuesta
|
||||||
responseBody, err := io.ReadAll(resp.Body)
|
body, err := io.ReadAll(resp.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error al leer la respuesta: %v", err)
|
return nil, fmt.Errorf("error al leer la respuesta: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Si la respuesta no es exitosa, devolver un error
|
|
||||||
if resp.StatusCode != http.StatusOK {
|
if resp.StatusCode != http.StatusOK {
|
||||||
return nil, fmt.Errorf("error en la respuesta de DLocal (%d): %s", resp.StatusCode, string(responseBody))
|
return nil, fmt.Errorf("respuesta no exitosa (%d): %s", resp.StatusCode, string(body))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Devolver la respuesta exitosa
|
return body, nil
|
||||||
return responseBody, nil
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user