bind.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package device
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/silenceper/wechat/util"
  6. )
  7. type ReqBind struct {
  8. Ticket string `json:"ticket"`
  9. DeviceId string `json:"device_id"`
  10. OpenId string `json:"open_id"`
  11. }
  12. type resBind struct {
  13. BaseResp util.CommonError `json:"base_resp"`
  14. }
  15. // Bind 设备绑定
  16. func (d *Device) Bind(req ReqBind) (err error) {
  17. var accessToken string
  18. if accessToken, err = d.GetAccessToken(); err != nil {
  19. return
  20. }
  21. uri := fmt.Sprintf("%s?access_token=%s", uriBind, accessToken)
  22. var response []byte
  23. if response, err = util.PostJSON(uri, req); err != nil {
  24. return
  25. }
  26. var result resBind
  27. if err = json.Unmarshal(response, &result); err != nil {
  28. return
  29. }
  30. if result.BaseResp.ErrCode != 0 {
  31. err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
  32. return
  33. }
  34. return
  35. }
  36. // Bind 设备解绑
  37. func (d *Device) Unbind(req ReqBind) (err error) {
  38. var accessToken string
  39. if accessToken, err = d.GetAccessToken(); err != nil {
  40. return
  41. }
  42. uri := fmt.Sprintf("%s?access_token=%s", uriUnbind, accessToken)
  43. var response []byte
  44. if response, err = util.PostJSON(uri, req); err != nil {
  45. return
  46. }
  47. var result resBind
  48. if err = json.Unmarshal(response, &result); err != nil {
  49. return
  50. }
  51. if result.BaseResp.ErrCode != 0 {
  52. err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
  53. return
  54. }
  55. return
  56. }