|
|
@@ -9,6 +9,37 @@ import (
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
|
+//JSAPI支付,支付参数后,再次计算出小程序用的paySign
|
|
|
+func GetMiniPaySign(appId, timeStamp, nonceStr, packages, signType, secretKey string) (paySign string) {
|
|
|
+ buffer := new(bytes.Buffer)
|
|
|
+ buffer.WriteString("appId=")
|
|
|
+ buffer.WriteString(appId)
|
|
|
+ buffer.WriteString("&nonceStr=")
|
|
|
+ buffer.WriteString(nonceStr)
|
|
|
+ buffer.WriteString("&package=")
|
|
|
+ buffer.WriteString("prepay_id=" + packages)
|
|
|
+ buffer.WriteString("&signType=")
|
|
|
+ buffer.WriteString(signType)
|
|
|
+ buffer.WriteString("&timeStamp=")
|
|
|
+ buffer.WriteString(timeStamp)
|
|
|
+ buffer.WriteString("&key=")
|
|
|
+ buffer.WriteString(secretKey)
|
|
|
+ signStr := buffer.String()
|
|
|
+
|
|
|
+ var hashSign []byte
|
|
|
+ if signType == SignType_MD5 {
|
|
|
+ hash := md5.New()
|
|
|
+ hash.Write([]byte(signStr))
|
|
|
+ hashSign = hash.Sum(nil)
|
|
|
+ } else {
|
|
|
+ hash := hmac.New(sha256.New, []byte(secretKey))
|
|
|
+ hash.Write([]byte(signStr))
|
|
|
+ hashSign = hash.Sum(nil)
|
|
|
+ }
|
|
|
+ paySign = strings.ToUpper(hex.EncodeToString(hashSign))
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
//本地通过支付参数计算Sign值
|
|
|
func getLocalSign(secretKey string, signType string, body BodyMap) (sign string) {
|
|
|
signStr := sortSignParams(secretKey, body)
|