package paypal import ( "bytes" "encoding/base64" "encoding/json" "io" "net/http" "net/url" ) func GetAccessToken() (error, *AccessToken) { return client.AccessToken() } func (c *Client) AccessToken() (error, *AccessToken) { var ( err error body = make(url.Values) result AccessToken ) body.Set("grant_type", "client_credentials") req, err := http.NewRequest(http.MethodPost, baseurl+accessToken, bytes.NewBufferString(body.Encode())) if err != nil { return err, nil } req.Header.Add("Content-Type", "application/x-www-form-urlencoded") authEncoded := base64.StdEncoding.EncodeToString([]byte(c.ClientId + ":" + c.ClientSecret)) req.Header.Set("Authorization", "Basic "+authEncoded) client := &http.Client{} resp, err := client.Do(req) if err != nil { return err, nil } defer resp.Body.Close() respBody, err := io.ReadAll(resp.Body) if err != nil { return err, nil } err = json.Unmarshal(respBody, &result) if err != nil { return err, nil } return nil, &result }