107 lines
2.7 KiB
Go
107 lines
2.7 KiB
Go
package device
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
|
|
"github.com/silenceper/wechat/v2/util"
|
|
)
|
|
|
|
// ReqBind 设备绑定解绑共通实体
|
|
type ReqBind struct {
|
|
Ticket string `json:"ticket,omitempty"`
|
|
DeviceID string `json:"device_id"`
|
|
OpenID string `json:"openid"`
|
|
}
|
|
type resBind struct {
|
|
BaseResp util.CommonError `json:"base_resp"`
|
|
}
|
|
|
|
// Bind 设备绑定
|
|
func (d *Device) Bind(req ReqBind) (err error) {
|
|
var accessToken string
|
|
if accessToken, err = d.GetAccessToken(); err != nil {
|
|
return
|
|
}
|
|
uri := fmt.Sprintf("%s?access_token=%s", uriBind, accessToken)
|
|
var response []byte
|
|
if response, err = util.PostJSON(uri, req); err != nil {
|
|
return
|
|
}
|
|
var result resBind
|
|
if err = json.Unmarshal(response, &result); err != nil {
|
|
return
|
|
}
|
|
if result.BaseResp.ErrCode != 0 {
|
|
err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// Unbind 设备解绑
|
|
func (d *Device) Unbind(req ReqBind) (err error) {
|
|
var accessToken string
|
|
if accessToken, err = d.GetAccessToken(); err != nil {
|
|
return
|
|
}
|
|
uri := fmt.Sprintf("%s?access_token=%s", uriUnbind, accessToken)
|
|
var response []byte
|
|
if response, err = util.PostJSON(uri, req); err != nil {
|
|
return
|
|
}
|
|
var result resBind
|
|
if err = json.Unmarshal(response, &result); err != nil {
|
|
return
|
|
}
|
|
if result.BaseResp.ErrCode != 0 {
|
|
err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// CompelBind 强制绑定用户和设备
|
|
func (d *Device) CompelBind(req ReqBind) (err error) {
|
|
var accessToken string
|
|
if accessToken, err = d.GetAccessToken(); err != nil {
|
|
return
|
|
}
|
|
uri := fmt.Sprintf("%s?access_token=%s", uriCompelBind, accessToken)
|
|
var response []byte
|
|
if response, err = util.PostJSON(uri, req); err != nil {
|
|
return
|
|
}
|
|
var result resBind
|
|
if err = json.Unmarshal(response, &result); err != nil {
|
|
return
|
|
}
|
|
if result.BaseResp.ErrCode != 0 {
|
|
err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
|
|
return
|
|
}
|
|
return
|
|
}
|
|
|
|
// CompelUnbind 强制解绑用户和设备
|
|
func (d *Device) CompelUnbind(req ReqBind) (err error) {
|
|
var accessToken string
|
|
if accessToken, err = d.GetAccessToken(); err != nil {
|
|
return
|
|
}
|
|
uri := fmt.Sprintf("%s?access_token=%s", uriCompelUnbind, accessToken)
|
|
var response []byte
|
|
if response, err = util.PostJSON(uri, req); err != nil {
|
|
return
|
|
}
|
|
var result resBind
|
|
if err = json.Unmarshal(response, &result); err != nil {
|
|
return
|
|
}
|
|
if result.BaseResp.ErrCode != 0 {
|
|
err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
|
|
return
|
|
}
|
|
return
|
|
}
|