You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1013 B

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
}