package main import ( "bytes" "encoding/json" "errors" "net/http" "os" ) func validateRecaptcha(token string) (bool, error) { secret := os.Getenv("CAPTCHA_SERVER_KEY") if secret == "" { return false, errors.New("missing CAPTCHA_SERVER_KEY") } url := "https://www.google.com/recaptcha/api/siteverify" payload := map[string]string{ "secret": secret, "response": token, } jsonPayload, _ := json.Marshal(payload) resp, err := http.Post(url, "application/json", bytes.NewBuffer(jsonPayload)) if err != nil { return false, err } defer resp.Body.Close() var result map[string]interface{} if err := json.NewDecoder(resp.Body).Decode(&result); err != nil { return false, err } success, ok := result["success"].(bool) if !ok { return false, errors.New("invalid reCAPTCHA response format") } return success, nil }