device.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package device
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/silenceper/wechat/context"
  6. "github.com/silenceper/wechat/util"
  7. )
  8. const (
  9. uriAuthorize = "https://api.weixin.qq.com/device/authorize_device"
  10. uriQRCode = "https://api.weixin.qq.com/device/create_qrcode"
  11. uriVerifyQRCode = "https://api.weixin.qq.com/device/verify_qrcode"
  12. uriBind = "https://api.weixin.qq.com/device/bind"
  13. uriUnbind = "https://api.weixin.qq.com/device/unbind"
  14. uriState = "https://api.weixin.qq.com/device/get_stat"
  15. )
  16. //Device struct
  17. type Device struct {
  18. *context.Context
  19. }
  20. //NewDevice 实例
  21. func NewDevice(context *context.Context) *Device {
  22. device := new(Device)
  23. device.Context = context
  24. return device
  25. }
  26. // ResDeviceState 设备状态响应实体
  27. type ResDeviceState struct {
  28. util.CommonError
  29. Status int `json:"status"`
  30. StatusInfo string `json:"status_info"`
  31. }
  32. // State 设备状态查询
  33. func (d *Device) State(device string) (res ResDeviceState, err error) {
  34. var accessToken string
  35. if accessToken, err = d.GetAccessToken(); err != nil {
  36. return
  37. }
  38. uri := fmt.Sprintf("%s?access_token=%s&device_id=%s", uriState, accessToken, device)
  39. var response []byte
  40. if response, err = util.HTTPGet(uri); err != nil {
  41. return
  42. }
  43. if err = json.Unmarshal(response, &res); err != nil {
  44. return
  45. }
  46. if res.ErrCode != 0 {
  47. err = fmt.Errorf("DeviceState Error , errcode=%d , errmsg=%s", res.ErrCode, res.ErrMsg)
  48. return
  49. }
  50. return
  51. }