Files
baseapi/platformapi/weixinapi/cgibin.go
2019-04-11 14:08:41 +08:00

65 lines
1.7 KiB
Go

package weixinapi
import "git.rosy.net.cn/baseapi/utils"
const (
MaxRemarkByteCount = 30
)
func (a *API) CBSetToken(newToken string) bool {
curToken := a.CBGetToken()
if curToken != newToken {
a.locker.Lock()
defer a.locker.Unlock()
a.token = newToken
return true
}
return false
}
func (a *API) CBGetToken() string {
a.locker.RLock()
defer a.locker.RUnlock()
return a.token
}
func (a *API) CBRetrieveToken() (tokenInfo *TokenInfo, err error) {
result, err := a.AccessAPI("cgi-bin/token", utils.Params2Map("grant_type", "client_credential"), "")
if err != nil {
return nil, err
}
tokenInfo = &TokenInfo{
AccessToken: utils.Interface2String(result["access_token"]),
ExpiresIn: int(utils.MustInterface2Int64(result["expires_in"])),
}
a.CBSetToken(tokenInfo.AccessToken)
return tokenInfo, nil
}
func (a *API) CBMessageTemplateSend(userOpenID, templateID, downloadURL string, miniProgram, data interface{}) (err error) {
bodyJson := map[string]interface{}{
"touser": userOpenID,
"template_id": templateID,
"url": downloadURL,
"data": data,
}
if downloadURL != "" {
bodyJson["url"] = downloadURL
}
if miniProgram != nil {
bodyJson["miniprogram"] = miniProgram
}
_, err = a.AccessAPI("cgi-bin/message/template/send", nil, string(utils.MustMarshal(bodyJson)))
return err
}
// remark的字节数不超过30个字节
func (a *API) CBUpdateRemark(userOpenID, remark string) (err error) {
bodyJson := map[string]interface{}{
"openid": userOpenID,
"remark": utils.LimitMixedStringLen(remark, MaxRemarkByteCount),
}
_, err = a.AccessAPI("cgi-bin/user/info/updateremark", nil, string(utils.MustMarshal(bodyJson)))
return err
}