bind.go 1.5 KB

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