1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package jy
- import (
- "encoding/base64"
- "encoding/json"
- "fmt"
- qutil "app.yhyue.com/moapp/jybase/common"
- "strings"
- )
- //用户信息
- type WxUserInfo struct {
- City string `json:"city"`
- Country string `json:"country"`
- CreateTime int64 `json:"createtime"`
- HeadImageUrl string `json:"headimgurl"`
- Nickname string `json:"nickname"`
- OpenId string `json:"openid"`
- Province string `json:"province"`
- Sex int `json:"sex"`
- Sign string `json:"sign"`
- UnionId string `json:"unionid"`
- }
- func GetMsgFromWxSign(sign string) (wxinfo *WxUserInfo, err error) {
- wxinfo = &WxUserInfo{}
- if sign == "" {
- err = fmt.Errorf("获取信息异常,参数为空")
- return
- }
- b, decodeErr := base64.StdEncoding.DecodeString(strings.Replace(sign, " ", "+", -1))
- if decodeErr != nil {
- err = fmt.Errorf("获取信息异常,解密失败")
- return
- }
- UnmarshalErr := json.Unmarshal(b, &wxinfo)
- if UnmarshalErr != nil {
- err = fmt.Errorf("获取信息异常,格式异常")
- return
- }
- //做比对,防篡改
- checkSign := qutil.GetMd5String(fmt.Sprintf("city=%s&country=%s&createtime=%d&headimgurl=%s&nickname=%s&openid=%s&province=%s&sex=%d&unionid=%s",
- wxinfo.City, wxinfo.Country, wxinfo.CreateTime, wxinfo.HeadImageUrl, wxinfo.Nickname, wxinfo.OpenId, wxinfo.Province, wxinfo.Sex, wxinfo.UnionId))
- if wxinfo.Sign != checkSign {
- err = fmt.Errorf("获取信息异常,校验错误")
- return
- }
- if wxinfo.OpenId == "" {
- err = fmt.Errorf("获取信息异常,openid为空")
- return
- }
- return
- }
|