|
@@ -1,14 +1,14 @@
|
|
|
package jy
|
|
|
|
|
|
import (
|
|
|
+ qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
"encoding/base64"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
- qutil "app.yhyue.com/moapp/jybase/common"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
-//用户信息
|
|
|
+// 用户信息
|
|
|
type WxUserInfo struct {
|
|
|
City string `json:"city"`
|
|
|
Country string `json:"country"`
|
|
@@ -51,3 +51,42 @@ func GetMsgFromWxSign(sign string) (wxinfo *WxUserInfo, err error) {
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
+type HwUserInfo struct {
|
|
|
+ CreateTime int64 `json:"createtime"`
|
|
|
+ HeadImageUrl string `json:"headimgurl"`
|
|
|
+ Nickname string `json:"nickname"`
|
|
|
+ OpenId string `json:"openid"`
|
|
|
+ Sign string `json:"sign"`
|
|
|
+ UnionId string `json:"unionid"`
|
|
|
+}
|
|
|
+
|
|
|
+func GetMsgFromHwSign(sign string) (info *HwUserInfo, err error) {
|
|
|
+ info = &HwUserInfo{}
|
|
|
+ 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, &info)
|
|
|
+ if UnmarshalErr != nil {
|
|
|
+ err = fmt.Errorf("获取信息异常,格式异常")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //做比对,防篡改
|
|
|
+ checkSign := qutil.GetMd5String(fmt.Sprintf("createtime=%d&headimgurl=%s&nickname=%s&openid=%s&unionid=%s",
|
|
|
+ info.CreateTime, info.HeadImageUrl, info.Nickname, info.OpenId, info.UnionId))
|
|
|
+ if info.Sign != checkSign {
|
|
|
+ err = fmt.Errorf("获取信息异常,校验错误")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if info.OpenId == "" {
|
|
|
+ err = fmt.Errorf("获取信息异常,openid为空")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|