Selaa lähdekoodia

add WeChatAppletUserInfo Decrypt struct

Jerry 6 vuotta sitten
vanhempi
commit
e52a346c56
3 muutettua tiedostoa jossa 59 lisäystä ja 0 poistoa
  1. 23 0
      examples/wechat/wx_ServiceApi.go
  2. 22 0
      wechat_client_test.go
  3. 14 0
      wechat_rsp.go

+ 23 - 0
examples/wechat/wx_ServiceApi.go

@@ -74,6 +74,7 @@ func DecryptWeChatOpenDataToStruct() {
 	iv := "Cds8j3VYoGvnTp1BrjXdJg=="
 	iv := "Cds8j3VYoGvnTp1BrjXdJg=="
 	session := "lyY4HPQbaOYzZdG+JcYK9w=="
 	session := "lyY4HPQbaOYzZdG+JcYK9w=="
 
 
+	//微信小程序,手机号
 	phone := new(gopay.WeChatUserPhone)
 	phone := new(gopay.WeChatUserPhone)
 	//解密开放数据
 	//解密开放数据
 	//    encryptedData:包括敏感数据在内的完整用户信息的加密数据
 	//    encryptedData:包括敏感数据在内的完整用户信息的加密数据
@@ -89,6 +90,28 @@ func DecryptWeChatOpenDataToStruct() {
 	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
 	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
 	fmt.Println("CountryCode:", phone.CountryCode)
 	fmt.Println("CountryCode:", phone.CountryCode)
 	fmt.Println("Watermark:", phone.Watermark)
 	fmt.Println("Watermark:", phone.Watermark)
+
+	sessionKey := "tiihtNczf5v6AKRyjwEUhQ=="
+	encryptedData := "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew=="
+	iv2 := "r7BXXKkLb8qrSNn05n0qiA=="
+
+	//微信小程序 用户信息
+	userInfo := new(gopay.WeChatAppletUserInfo)
+
+	err = gopay.DecryptWeChatOpenDataToStruct(encryptedData, iv2, sessionKey, userInfo)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("NickName:", userInfo.NickName)
+	fmt.Println("AvatarUrl:", userInfo.AvatarUrl)
+	fmt.Println("Country:", userInfo.Country)
+	fmt.Println("Province:", userInfo.Province)
+	fmt.Println("City:", userInfo.City)
+	fmt.Println("Gender:", userInfo.Gender)
+	fmt.Println("OpenId:", userInfo.OpenId)
+	fmt.Println("UnionId:", userInfo.UnionId)
+	fmt.Println("Watermark:", userInfo.Watermark)
 }
 }
 
 
 func GetOpenIdByAuthCode() {
 func GetOpenIdByAuthCode() {

+ 22 - 0
wechat_client_test.go

@@ -100,4 +100,26 @@ func TestDecryptWeChatOpenDataToStruct(t *testing.T) {
 	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
 	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
 	fmt.Println("CountryCode:", phone.CountryCode)
 	fmt.Println("CountryCode:", phone.CountryCode)
 	fmt.Println("Watermark:", phone.Watermark)
 	fmt.Println("Watermark:", phone.Watermark)
+
+	sessionKey := "tiihtNczf5v6AKRyjwEUhQ=="
+	encryptedData := "CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZMQmRzooG2xrDcvSnxIMXFufNstNGTyaGS9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+3hVbJSRgv+4lGOETKUQz6OYStslQ142dNCuabNPGBzlooOmB231qMM85d2/fV6ChevvXvQP8Hkue1poOFtnEtpyxVLW1zAo6/1Xx1COxFvrc2d7UL/lmHInNlxuacJXwu0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn/Hz7saL8xz+W//FRAUid1OksQaQx4CMs8LOddcQhULW4ucetDf96JcR3g0gfRK4PC7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns/8wR2SiRS7MNACwTyrGvt9ts8p12PKFdlqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYVoKlaRv85IfVunYzO0IKXsyl7JCUjCpoG20f0a04COwfneQAGGwd5oa+T8yO5hzuyDb/XcxxmK01EpqOyuxINew=="
+	iv2 := "r7BXXKkLb8qrSNn05n0qiA=="
+
+	//微信小程序 用户信息
+	userInfo := new(WeChatAppletUserInfo)
+
+	err = DecryptWeChatOpenDataToStruct(encryptedData, iv2, sessionKey, userInfo)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("NickName:", userInfo.NickName)
+	fmt.Println("AvatarUrl:", userInfo.AvatarUrl)
+	fmt.Println("Country:", userInfo.Country)
+	fmt.Println("Province:", userInfo.Province)
+	fmt.Println("City:", userInfo.City)
+	fmt.Println("Gender:", userInfo.Gender)
+	fmt.Println("OpenId:", userInfo.OpenId)
+	fmt.Println("UnionId:", userInfo.UnionId)
+	fmt.Println("Watermark:", userInfo.Watermark)
 }
 }

+ 14 - 0
wechat_rsp.go

@@ -295,6 +295,7 @@ type WeChatUserInfo struct {
 	Errmsg         string `json:"errmsg,omitempty"`          //错误信息
 	Errmsg         string `json:"errmsg,omitempty"`          //错误信息
 }
 }
 
 
+//微信小程序解密后 用户手机号结构体
 type WeChatUserPhone struct {
 type WeChatUserPhone struct {
 	PhoneNumber     string        `json:"phoneNumber,omitempty"`
 	PhoneNumber     string        `json:"phoneNumber,omitempty"`
 	PurePhoneNumber string        `json:"purePhoneNumber,omitempty"`
 	PurePhoneNumber string        `json:"purePhoneNumber,omitempty"`
@@ -302,6 +303,19 @@ type WeChatUserPhone struct {
 	Watermark       watermarkInfo `json:"watermark,omitempty"`
 	Watermark       watermarkInfo `json:"watermark,omitempty"`
 }
 }
 
 
+//微信小程序解密后 用户信息结构体
+type WeChatAppletUserInfo struct {
+	OpenId    string        `json:"openId,omitempty"`
+	NickName  string        `json:"nickName,omitempty"`
+	Gender    int           `json:"gender,omitempty"`
+	City      string        `json:"city,omitempty"`
+	Province  string        `json:"province,omitempty"`
+	Country   string        `json:"country,omitempty"`
+	AvatarUrl string        `json:"avatarUrl,omitempty"`
+	UnionId   string        `json:"unionId,omitempty"`
+	Watermark watermarkInfo `json:"watermark,omitempty"`
+}
+
 type watermarkInfo struct {
 type watermarkInfo struct {
 	Appid     string `json:"appid,omitempty"`
 	Appid     string `json:"appid,omitempty"`
 	Timestamp int    `json:"timestamp,omitempty"`
 	Timestamp int    `json:"timestamp,omitempty"`