mirror of
https://github.com/silenceper/wechat.git
synced 2026-02-04 21:02:25 +08:00
88 lines
2.0 KiB
Go
88 lines
2.0 KiB
Go
package device
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/silenceper/wechat/context"
|
|
"github.com/silenceper/wechat/util"
|
|
)
|
|
|
|
const (
|
|
deviceAuthorize = "https://api.weixin.qq.com/device/authorize_device"
|
|
deviceQRCode = "https://api.weixin.qq.com/device/create_qrcode"
|
|
)
|
|
|
|
//Device struct
|
|
type Device struct {
|
|
*context.Context
|
|
}
|
|
|
|
//NewDevice 实例
|
|
func NewDevice(context *context.Context) *Device {
|
|
device := new(Device)
|
|
device.Context = context
|
|
return device
|
|
}
|
|
|
|
// DeviceAuthorize 设备授权
|
|
func (d *Device) DeviceAuthorize(devices []ReqDevice, opType int, productId string) (res []resBaseInfo, err error) {
|
|
var accessToken string
|
|
accessToken, err = d.GetAccessToken()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
uri := fmt.Sprintf("%s?access_token=%s", deviceAuthorize, accessToken)
|
|
req := reqDeviceAuthorize{
|
|
DeviceNum: fmt.Sprintf("%d", len(devices)),
|
|
DeviceList: devices,
|
|
OpType: fmt.Sprintf("%d", opType),
|
|
ProductId: productId,
|
|
}
|
|
response, err := util.PostJSON(uri, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
var result resDeviceAuthorize
|
|
err = json.Unmarshal(response, &result)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if result.ErrCode != 0 {
|
|
err = fmt.Errorf("DeviceAuthorize Error , errcode=%d , errmsg=%s", result.ErrCode, result.ErrMsg)
|
|
return
|
|
}
|
|
res = result.Resp
|
|
return
|
|
}
|
|
|
|
// CreateQRCode 获取设备二维码
|
|
func (d *Device) CreateQRCode(devices []string) (res []resQRCode, err error) {
|
|
var accessToken string
|
|
accessToken, err = d.GetAccessToken()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
uri := fmt.Sprintf("%s?access_token=%s", deviceQRCode, accessToken)
|
|
req := map[string]interface{}{
|
|
"device_num": len(devices),
|
|
"device_id_list": devices,
|
|
}
|
|
fmt.Println(req)
|
|
response, err := util.PostJSON(uri, req)
|
|
if err != nil {
|
|
return
|
|
}
|
|
var result resCreateQRCode
|
|
err = json.Unmarshal(response, &result)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if result.ErrCode != 0 {
|
|
err = fmt.Errorf("CreateQRCode Error , errcode=%d , errmsg=%s", result.ErrCode, result.ErrMsg)
|
|
return
|
|
}
|
|
res = result.CodeList
|
|
return
|
|
}
|