package wechatopen import ( "encoding/json" "fmt" "go.dtapp.net/gorequest" "net/http" ) type WxaBusinessGetUserPhoneNumberResponse struct { Errcode int `json:"errcode"` Errmsg string `json:"errmsg"` PhoneInfo struct { PhoneNumber string `json:"phoneNumber"` // 用户绑定的手机号(国外手机号会有区号) PurePhoneNumber string `json:"purePhoneNumber"` // 没有区号的手机号 CountryCode int `json:"countryCode"` // 区号 Watermark struct { Timestamp int `json:"timestamp"` // 用户获取手机号操作的时间戳 Appid string `json:"appid"` // 小程序appid } `json:"watermark"` // 数据水印 } `json:"phone_info"` // 用户手机号信息 } type WxaBusinessGetUserPhoneNumberResult struct { Result WxaBusinessGetUserPhoneNumberResponse // 结果 Body []byte // 内容 Http gorequest.Response // 请求 Err error // 错误 } func NewWxaBusinessGetUserPhoneNumberResult(result WxaBusinessGetUserPhoneNumberResponse, body []byte, http gorequest.Response, err error) *WxaBusinessGetUserPhoneNumberResult { return &WxaBusinessGetUserPhoneNumberResult{Result: result, Body: body, Http: http, Err: err} } // WxaBusinessGetUserPhoneNumber code换取用户手机号。 每个 code 只能使用一次,code的有效期为5min // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/phonenumber/phonenumber.getPhoneNumber.html func (app *App) WxaBusinessGetUserPhoneNumber(code string) *WxaBusinessGetUserPhoneNumberResult { // 参数 params := gorequest.NewParams() params.Set("code", code) // 请求 request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=%s", app.GetAuthorizerAccessToken()), params, http.MethodPost) // 定义 var response WxaBusinessGetUserPhoneNumberResponse err = json.Unmarshal(request.ResponseBody, &response) return NewWxaBusinessGetUserPhoneNumberResult(response, request.ResponseBody, request, err) } // ErrcodeInfo 错误描述 func (resp *WxaBusinessGetUserPhoneNumberResult) ErrcodeInfo() string { switch resp.Result.Errcode { case 85013: return "无效的自定义配置" case 85014: return "无效的模板编号" case 85043: return "模板错误" case 85044: return "代码包超过大小限制" case 85045: return "ext_json 有不存在的路径" case 85046: return "tabBar 中缺少 path" case 85047: return "pages 字段为空" case 85048: return "ext_json 解析失败" case 80082: return "没有权限使用该插件" case 80067: return "找不到使用的插件" case 80066: return "非法的插件版本" case 9402202: return "请勿频繁提交,待上一次操作完成后再提交" case 9402203: return `标准模板ext_json错误,传了不合法的参数, 如果是标准模板库的模板,则ext_json支持的参数仅为{"extAppid":'', "ext": {}, "window": {}}` } return "系统繁忙" }