具体使用请参考 open/open_test.go
import (
"github.com/go-pay/wechat-sdk/open"
"github.com/go-pay/wechat-sdk/pkg/xlog"
)
// New 初始化微信开放平台 SDK
// Appid:Appid
// Secret:appSecret
// autoManageToken:是否自动维护刷新 AccessToken(用户量较少时推荐使用,默认10分钟轮询检测一次,发现有效期小于1.5倍轮询时间时,自动刷新)
openSDK , err := open .New (Appid , Secret , true )
if err != nil {
xlog .Error (err )
return
}
// 打开Debug开关,输出日志
openSDK .DebugSwitch = wechat .DebugOn
// 可自行设置 AccessToken 刷新间隔
//openSDK.SetAccessTokenRefreshInternal(5 * time.Minute)
// 此方法回调返回 AccessToken
openSDK .SetAccessTokenCallback (func (at * AT , err error ) {
if err != nil {
xlog .Errorf ("call back access token err:%+v" , err )
return
}
xlog .Infof ("call back access token: %v" , at )
})
通过 code 获取用户 access_token
at , err := openSDK .Code2AccessToken (ctx , "code" )
if err != nil {
xlog .Error (err )
return
}
xlog .Infof ("at: %s" , at )
at , err := openSDK .RefreshAccessToken (ctx , "refreshToken" )
if err != nil {
xlog .Error (err )
return
}
xlog .Infof ("at: %s" , at )
err := openSDK .CheckAccessToken (ctx , "accessToken" , "openid" )
if err != nil {
xlog .Errorf ("CheckAccessToken,err:%v" , err )
return
}
rsp , err := openSDK .UserInfo (ctx , "openid" , "zh_CN" )
if err != nil {
xlog .Error (err )
return
}
xlog .Infof ("rsp:%+v" , rsp )
微信登录功能
通过 code 获取 access_token:sdk.Code2AccessToken()
刷新或续期 access_token:sdk.RefreshAccessToken()
检验授权凭证 access_token 是否有效:sdk.CheckAccessToken()
获取用户个人信息(UnionID 机制):sdk.UserInfo()