diff --git a/platformapi/weixinapi/sns.go b/platformapi/weixinapi/sns.go index 084c0577..b8b80027 100644 --- a/platformapi/weixinapi/sns.go +++ b/platformapi/weixinapi/sns.go @@ -33,16 +33,19 @@ type SessionInfo struct { } type MiniUserInfo struct { - OpenID string `json:"openId"` - NickName string `json:"nickName"` - Gender int `json:"gender"` - Language string `json:"language"` - City string `json:"city"` - Province string `json:"province"` - Country string `json:"country"` - AvatarURL string `json:"avatarUrl"` - UnionID string `json:"unionId"` - Watermark struct { + OpenID string `json:"openId"` + NickName string `json:"nickName"` + Gender int `json:"gender"` + Language string `json:"language"` + City string `json:"city"` + PhoneNumber string `json:"phoneNumber"` + PurePhoneNumber string `json:"purePhoneNumber"` + Province string `json:"province"` + Country string `json:"country"` + CountryCode string `json:"countryCode"` + AvatarURL string `json:"avatarUrl"` + UnionID string `json:"unionId"` + Watermark struct { Timestamp int `json:"timestamp"` Appid string `json:"appid"` } `json:"watermark"` diff --git a/platformapi/weixinapi/sns_test.go b/platformapi/weixinapi/sns_test.go index 1e896f0e..21c2eed2 100644 --- a/platformapi/weixinapi/sns_test.go +++ b/platformapi/weixinapi/sns_test.go @@ -9,3 +9,23 @@ func TestSNSRetrieveToken(t *testing.T) { } sugarLogger.Debug(result) } + +func TestSNSDecodeMiniProgramData(t *testing.T) { + // encryptedData := "rvV8ztGgNeOAafzydhMTASoilrSBlWcfWQ+GbEoiM+Ls72KJYKm/VYuvwahvoaGNC2EBG9sU6Bsy2Y4NsDww41DQw5aRstQqiI9yFIdvnB5YMwlTm/BN/Pt0LyL0POSouj6C2unUm3WFvOVYWtZtb8N2w0WIq1phnQ9YrJp8ynocw7KOEnRIpOUe1yyIWwT4zgi75fl87Wvku+s52WgjWw==" + // sessionKey := "xXrDRVNCjlq2hZ+ePouEPg==" + // iv := "Bl68JDy3I+pPN85sg7ckMg==" + + encryptedData := "spUntKHbzUfj+xIJ5b+beEN3yJw6gGBZWo26c9xoW9n9dBkHWkHQ+a/gY/lDjHVPlZ60LGglUNlY0XDBFGuh7exCm05jws+Rev1dTJh9YzBUrGaStR7Hw/niXPj4aJsb7lQVMZ/mNIbcsaNUAWSEEzRCkPmrl6/gLqeRO0sWa83liFmp0dyGDaR5ChUoHAPHvsBSC6Xf2BkDnoCMPB7f1w==" + sessionKey := "xXrDRVNCjlq2hZ+ePouEPg==" + iv := "4UMSl6uqdontQIHl/i7ojg==" + + // encryptedData := "C2R/vkmHAOhMq4/6KlrAWsYAGH6PHPTAs5jf2rJVF0keEMF1RzcbRBVDVpZVsy335OsDL1tZ7HDLyhKimFUCEP45fZDnlTp6FgV2zW4jY9tWqCqxUJ/M6o1FvlHk27FM3XIGXlxdXanvJ3KVdbtYwKxlwbJ9on6k5JL3w90Md3wE0IvQquBRTkWCfa5nJr38I3SR2VBFjyE+vnoFx2tqX31ZfY4zanr+ts1pno/VAfuXkpnnlvINir9HiEBnIPipLXkxcd/XlSPF2Osf66DSHj7WDHAqJKt4yKgEN+zt0cYT0kSZEGSJypRFGpsRAESzqmkUIE0JQW7WQANfc4W/5PpXEDXGYdv/FKt1LT3cqg0oHHjxdXojhbNR4T4dNPa+4rfbV2OcEl4m2CgwQLulb6uxEcBHD/hSUPuUSr5IHNpakKZrlDgBTyJgJs2679x+wCCHJRmLR77PgSGxh1D3rFq1lMpaZkahO6guSi1rdSQ6URwOgbudVM3WNwgwZ+Ga" + // sessionKey := "xXrDRVNCjlq2hZ+ePouEPg==" + // iv := "oi4qlhn1DjAKDedxHrDHNw==" + result, err := api.SNSDecodeMiniProgramData(encryptedData, sessionKey, iv) + if err != nil { + t.Fatal(err.Error()) + } + sugarLogger.Debug(string(result)) + sugarLogger.Debug(len(result)) +} diff --git a/utils/utils_crypt.go b/utils/utils_crypt.go index 02896a56..084eb680 100644 --- a/utils/utils_crypt.go +++ b/utils/utils_crypt.go @@ -35,8 +35,9 @@ func AESCBCDecpryt(encryptedData, aesKey, iv []byte) (decryptedData []byte, err func PKCSUnPadding(originData []byte) []byte { length := len(originData) unpadding := int(originData[length-1]) - baseapi.SugarLogger.Debugf("PKCSUnPadding originData:%s, length:%d, unpadding:%d", string(originData), length, unpadding) - return originData[:(length - unpadding)] + originData = originData[:(length - unpadding)] + baseapi.SugarLogger.Debugf("PKCSUnPadding, length:%d, unpadding:%d", length, unpadding) + return originData } func PKCSPadding(ciphertext []byte, blockSize int) []byte { diff --git a/utils/utils_test.go b/utils/utils_test.go index fc008efa..64476861 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -3,8 +3,21 @@ package utils import ( "fmt" "testing" + + "git.rosy.net.cn/baseapi" + "go.uber.org/zap" ) +var ( + sugarLogger *zap.SugaredLogger +) + +func init() { + logger, _ := zap.NewDevelopment() + sugarLogger = logger.Sugar() + baseapi.Init(sugarLogger) +} + func TestDictKeysMan(t *testing.T) { testData := map[string]interface{}{"k1": "v1", "k2": "v2"} result1 := DictKeysMan(testData, []string{"k1"}, nil).(map[string]interface{})