github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/common/pay.go (about) 1 package common 2 3 import ( 4 "bytes" 5 "fmt" 6 "math/rand" 7 "net/url" 8 "sort" 9 "time" 10 ) 11 12 func GetSignContent(v url.Values) string { 13 if v == nil { 14 return "" 15 } 16 var buf bytes.Buffer 17 keys := make([]string, 0, len(v)) 18 for k := range v { 19 keys = append(keys, k) 20 } 21 sort.Strings(keys) 22 for _, k := range keys { 23 vs := v[k] 24 prefix := k + "=" 25 for _, v := range vs { 26 if buf.Len() > 0 { 27 buf.WriteByte('&') 28 } 29 buf.WriteString(prefix) 30 buf.WriteString(v) 31 } 32 } 33 return buf.String() 34 } 35 36 func GetOutTradeNo() string { 37 return time.Now().Format("0102150405") + fmt.Sprintf("%05d", rand.Intn(100000)) 38 }