Jerry 6 лет назад
Родитель
Сommit
b1225ae901
2 измененных файлов с 21 добавлено и 24 удалено
  1. 18 22
      wechat_client_test.go
  2. 3 2
      wechat_service_api.go

+ 18 - 22
wechat_client_test.go

@@ -82,26 +82,22 @@ func TestVerifyWeChatResponseSign(t *testing.T) {
 }
 
 func TestDecryptWeChatOpenDataToStruct(t *testing.T) {
-	//data := "HSIMnigFLkuKzFDVtHM2t2s423ZasY0DXst5Cma4Oih8Tke+HRnHX9G+PRey1SLg5ajCPtlguVBRDqOB+DWpHo3Emvza889koLTkV3M9X4tURa1UwQ4eKZ8A1WoGB4hktr3jFyRt2nMccwQLbpL20V1zR/uwvjYHeB4TDh9rsDxMm3WY5YemSW54b+mbp9BD1rTgakWoGaOwrlEaQUIwbg=="
-	//iv := "PYLEcr/lIA/NhK7N6yhDPg=="
-	//session := "jSsUV8GCyJJf5Qnz3noNKA=="
-
-	//data := "Kf3TdPbzEmhWMuPKtlKxIWDkijhn402w1bxoHL4kLdcKr6jT1jNcIhvDJfjXmJcgDWLjmBiIGJ5acUuSvxLws3WgAkERmtTuiCG10CKLsJiR+AXVk7B2TUQzsq88YVilDz/YAN3647REE7glGmeBPfvUmdbfDzhL9BzvEiuRhABuCYyTMz4iaM8hFjbLB1caaeoOlykYAFMWC5pZi9P8uw=="
-	//iv := "Cds8j3VYoGvnTp1BrjXdJg=="
-	//session := "lyY4HPQbaOYzZdG+JcYK9w=="
-	//phone := new(WeChatUserPhone)
-	////解密开放数据
-	////    encryptedData:包括敏感数据在内的完整用户信息的加密数据
-	////    iv:加密算法的初始向量
-	////    sessionKey:会话密钥
-	////    beanPtr:需要解析到的结构体指针
-	//err := DecryptWeChatOpenDataToStruct(data, iv, session, phone)
-	//if err != nil {
-	//	fmt.Println("err:", err)
-	//	return
-	//}
-	//fmt.Println("PhoneNumber:", phone.PhoneNumber)
-	//fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
-	//fmt.Println("CountryCode:", phone.CountryCode)
-	//fmt.Println("Watermark:", phone.Watermark)
+	data := "Kf3TdPbzEmhWMuPKtlKxIWDkijhn402w1bxoHL4kLdcKr6jT1jNcIhvDJfjXmJcgDWLjmBiIGJ5acUuSvxLws3WgAkERmtTuiCG10CKLsJiR+AXVk7B2TUQzsq88YVilDz/YAN3647REE7glGmeBPfvUmdbfDzhL9BzvEiuRhABuCYyTMz4iaM8hFjbLB1caaeoOlykYAFMWC5pZi9P8uw=="
+	iv := "Cds8j3VYoGvnTp1BrjXdJg=="
+	session := "lyY4HPQbaOYzZdG+JcYK9w=="
+	phone := new(WeChatUserPhone)
+	//解密开放数据
+	//    encryptedData:包括敏感数据在内的完整用户信息的加密数据
+	//    iv:加密算法的初始向量
+	//    sessionKey:会话密钥
+	//    beanPtr:需要解析到的结构体指针
+	err := DecryptWeChatOpenDataToStruct(data, iv, session, phone)
+	if err != nil {
+		fmt.Println("err:", err)
+		return
+	}
+	fmt.Println("PhoneNumber:", phone.PhoneNumber)
+	fmt.Println("PurePhoneNumber:", phone.PurePhoneNumber)
+	fmt.Println("CountryCode:", phone.CountryCode)
+	fmt.Println("Watermark:", phone.Watermark)
 }

+ 3 - 2
wechat_service_api.go

@@ -381,7 +381,7 @@ func DecryptWeChatOpenDataToStruct(encryptedData, iv, sessionKey string, beanPtr
 	if len(cipherText)%len(aesKey) != 0 {
 		return errors.New("encryptedData is error")
 	}
-	//fmt.Println("cipherText:", cipherText)
+	//fmt.Println("cipherText:", string(cipherText))
 	block, err := aes.NewCipher(aesKey)
 	if err != nil {
 		return fmt.Errorf("aes.NewCipher:%v", err.Error())
@@ -390,10 +390,11 @@ func DecryptWeChatOpenDataToStruct(encryptedData, iv, sessionKey string, beanPtr
 	blockMode := cipher.NewCBCDecrypter(block, ivKey)
 	plainText := make([]byte, len(cipherText))
 	blockMode.CryptBlocks(plainText, cipherText)
+	//fmt.Println("plainText1:", plainText)
 	if len(plainText) > 0 {
 		plainText = PKCS7UnPadding(plainText)
 	}
-	//fmt.Println("plainText:", string(plainText))
+	//fmt.Println("plainText2:", string(plainText))
 	//解析
 	err = json.Unmarshal(plainText, beanPtr)
 	if err != nil {