mirror of
https://github.com/xxjwxc/public.git
synced 2025-09-27 04:06:03 +08:00
105 lines
2.3 KiB
Go
105 lines
2.3 KiB
Go
package weixin
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
|
|
"github.com/xxjwxc/public/mylog"
|
|
)
|
|
|
|
// SmallAppOauth 小程序授权
|
|
func (_wx *wxTools) SmallAppOauth(jscode string) string {
|
|
var url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + _wx.wxInfo.AppID + "&secret=" +
|
|
_wx.wxInfo.AppSecret + "&js_code=" + jscode + "&grant_type=authorization_code&trade_type=JSAPI"
|
|
|
|
resp, e := http.Get(url)
|
|
if e != nil {
|
|
mylog.Error(e)
|
|
return ""
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
mylog.Error(e)
|
|
return ""
|
|
}
|
|
return string(body)
|
|
}
|
|
|
|
// GetWebOauth 网页授权
|
|
func (_wx *wxTools) GetWebOauth(code string) (*AccessToken, error) {
|
|
var url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=" + _wx.wxInfo.AppID + "&secret=" +
|
|
_wx.wxInfo.AppSecret + "&code=" + code + "&grant_type=authorization_code"
|
|
|
|
resp, e := http.Get(url)
|
|
if e != nil {
|
|
return nil, e
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return nil, e
|
|
}
|
|
|
|
var res AccessToken
|
|
json.Unmarshal(body, &res)
|
|
return &res, nil
|
|
}
|
|
|
|
// GetWebUserinfo 获取用户信息
|
|
func (_wx *wxTools) GetWebUserinfo(openid, snaccessToken string) (*WxUserinfo, error) {
|
|
var url = "https://api.weixin.qq.com/sns/userinfo?access_token=" + snaccessToken + "&openid=" + openid + "&lang=zh_CN"
|
|
|
|
resp, e := http.Get(url)
|
|
if e != nil {
|
|
return nil, e
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return nil, e
|
|
}
|
|
|
|
var res WxUserinfo
|
|
json.Unmarshal(body, &res)
|
|
return &res, nil
|
|
}
|
|
|
|
// Getuserphonenumber 获取用户信息
|
|
func (_wx *wxTools) Getuserphonenumber(code string) (string, error) { // 手机号获取凭证
|
|
accessToken, e := _wx.GetAccessToken()
|
|
if e != nil {
|
|
return "", e
|
|
}
|
|
|
|
var url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + accessToken
|
|
|
|
params := map[string]interface{}{
|
|
"code": code,
|
|
}
|
|
req, _ := json.Marshal(params)
|
|
resp, e := http.Post(url, "Content-Type", bytes.NewBuffer(req))
|
|
if e != nil {
|
|
return "", e
|
|
}
|
|
|
|
defer resp.Body.Close()
|
|
body, err := ioutil.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return "", e
|
|
}
|
|
|
|
var res WxPhoneResp
|
|
json.Unmarshal(body, &res)
|
|
if res.Errcode != 0 {
|
|
return "", fmt.Errorf(res.Errmsg)
|
|
}
|
|
return res.WxPhoneinfo.PhoneNumber, nil
|
|
}
|