You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wechatoffice/cgi-bin.user.info.go

51 lines
3.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package wechatoffice
import (
"context"
"encoding/json"
"fmt"
"go.dtapp.net/gorequest"
"net/http"
)
type CgiBinUserInfoResponse struct {
Subscribe int `json:"subscribe"` // 用户是否订阅该公众号标识值为0时代表此用户没有关注该公众号拉取不到其余信息
Openid string `json:"openid"` // 用户的标识,对当前公众号唯一
Language string `json:"language"` // 用户的语言简体中文为zh_CN
SubscribeTime int `json:"subscribe_time"` // 用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
Unionid string `json:"unionid"` // 只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段
Remark string `json:"remark"` // 公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
Groupid int `json:"groupid"` // 用户所在的分组ID兼容旧的用户分组接口
TagidList []interface{} `json:"tagid_list"` // 用户被打上的标签ID列表
SubscribeScene string `json:"subscribe_scene"` // 返回用户关注的渠道来源ADD_SCENE_SEARCH 公众号搜索ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移ADD_SCENE_PROFILE_CARD 名片分享ADD_SCENE_QR_CODE 扫描二维码ADD_SCENE_PROFILE_LINK 图文页内名称点击ADD_SCENE_PROFILE_ITEM 图文页右上角菜单ADD_SCENE_PAID 支付后关注ADD_SCENE_WECHAT_ADVERTISEMENT 微信广告ADD_SCENE_REPRINT 他人转载 ,ADD_SCENE_LIVESTREAM 视频号直播ADD_SCENE_CHANNELS 视频号 , ADD_SCENE_OTHERS 其他
QrScene int `json:"qr_scene"` // 二维码扫码场景(开发者自定义)
QrSceneStr string `json:"qr_scene_str"` // 二维码扫码场景描述(开发者自定义)
Nickname string `json:"nickname"` // 用户昵称
Sex int `json:"sex"` // 用户的性别值为1时是男性值为2时是女性值为0时是未知
Province string `json:"province"` // 用户个人资料填写的省份
City string `json:"city"` // 普通用户个人资料填写的城市
Country string `json:"country"` // 国家如中国为CN
Headimgurl string `json:"headimgurl"` // 用户头像最后一个数值代表正方形头像大小有0、46、64、96、132数值可选0代表640*640正方形头像用户没有头像时该项为空。若用户更换头像原有头像URL将失效
}
type CgiBinUserInfoResult struct {
Result CgiBinUserInfoResponse // 结果
Body []byte // 内容
Http gorequest.Response // 请求
Err error // 错误
}
func newCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http gorequest.Response, err error) *CgiBinUserInfoResult {
return &CgiBinUserInfoResult{Result: result, Body: body, Http: http, Err: err}
}
// CgiBinUserInfo 获取用户基本信息(UnionID机制)
// https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId
func (c *Client) CgiBinUserInfo(ctx context.Context, openid string) *CgiBinUserInfoResult {
// 请求
request, err := c.request(ctx, fmt.Sprintf(apiUrl+"/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", c.getAccessToken(ctx), openid), map[string]interface{}{}, http.MethodGet)
// 定义
var response CgiBinUserInfoResponse
err = json.Unmarshal(request.ResponseBody, &response)
return newCgiBinUserInfoResult(response, request.ResponseBody, request, err)
}