qrcode.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package device
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/silenceper/wechat/util"
  6. )
  7. type resCreateQRCode struct {
  8. util.CommonError
  9. DeviceNum int `json:"device_num"`
  10. CodeList []struct {
  11. DeviceId string `json:"device_id"`
  12. Ticket string `json:"ticket"`
  13. } `json:"code_list"`
  14. }
  15. // CreateQRCode 获取设备二维码
  16. func (d *Device) CreateQRCode(devices []string) (res resCreateQRCode, 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", uriQRCode, accessToken)
  22. req := map[string]interface{}{
  23. "device_num": len(devices),
  24. "device_id_list": devices,
  25. }
  26. var response []byte
  27. if response, err = util.PostJSON(uri, req); err != nil {
  28. return
  29. }
  30. if err = json.Unmarshal(response, &res); err != nil {
  31. return
  32. }
  33. if res.ErrCode != 0 {
  34. err = fmt.Errorf("DeviceCreateQRCode Error , errcode=%d , errmsg=%s", res.ErrCode, res.ErrMsg)
  35. return
  36. }
  37. return
  38. }
  39. type resVerifyQRCode struct {
  40. util.CommonError
  41. DeviceType string `json:"device_type"`
  42. DeviceId string `json:"device_id"`
  43. Mac string `json:"mac"`
  44. }
  45. // VerifyQRCode 验证设备二维码
  46. func (d *Device) VerifyQRCode(ticket string) (res resVerifyQRCode, err error) {
  47. var accessToken string
  48. if accessToken, err = d.GetAccessToken(); err != nil {
  49. return
  50. }
  51. uri := fmt.Sprintf("%s?access_token=%s", uriVerifyQRCode, accessToken)
  52. req := map[string]interface{}{
  53. "ticket": ticket,
  54. }
  55. fmt.Println(req)
  56. var response []byte
  57. if response, err = util.PostJSON(uri, req); err != nil {
  58. return
  59. }
  60. if err = json.Unmarshal(response, &res); err != nil {
  61. return
  62. }
  63. if res.ErrCode != 0 {
  64. err = fmt.Errorf("DeviceCreateQRCode Error , errcode=%d , errmsg=%s", res.ErrCode, res.ErrMsg)
  65. return
  66. }
  67. return
  68. }