bind.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  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,omitempty"`
  10. DeviceID string `json:"device_id"`
  11. OpenID string `json:"openid"`
  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. }
  58. // CompelBind 强制绑定用户和设备
  59. func (d *Device) CompelBind(req ReqBind) (err error) {
  60. var accessToken string
  61. if accessToken, err = d.GetAccessToken(); err != nil {
  62. return
  63. }
  64. uri := fmt.Sprintf("%s?access_token=%s", uriCompelBind, accessToken)
  65. var response []byte
  66. if response, err = util.PostJSON(uri, req); err != nil {
  67. return
  68. }
  69. var result resBind
  70. if err = json.Unmarshal(response, &result); err != nil {
  71. return
  72. }
  73. if result.BaseResp.ErrCode != 0 {
  74. err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
  75. return
  76. }
  77. return
  78. }
  79. // CompelUnbind 强制解绑用户和设备
  80. func (d *Device) CompelUnbind(req ReqBind) (err error) {
  81. var accessToken string
  82. if accessToken, err = d.GetAccessToken(); err != nil {
  83. return
  84. }
  85. uri := fmt.Sprintf("%s?access_token=%s", uriCompelUnbind, accessToken)
  86. var response []byte
  87. if response, err = util.PostJSON(uri, req); err != nil {
  88. return
  89. }
  90. var result resBind
  91. if err = json.Unmarshal(response, &result); err != nil {
  92. return
  93. }
  94. if result.BaseResp.ErrCode != 0 {
  95. err = fmt.Errorf("DeviceBind Error , errcode=%d , errmsg=%s", result.BaseResp.ErrCode, result.BaseResp.ErrMsg)
  96. return
  97. }
  98. return
  99. }