增加vivo支付与登录接口

This commit is contained in:
ayflying
2025-07-23 17:37:17 +08:00
parent 58bea0c09a
commit 90b72129a5
8 changed files with 256 additions and 0 deletions

47
package/pay/vivo/sign.go Normal file
View File

@@ -0,0 +1,47 @@
package vivo
import (
"errors"
"github.com/gogf/gf/v2/crypto/gmd5"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
"sort"
"strings"
)
func (p *Pay) VerifySign(bm g.Map, key string) bool {
signature := bm["signature"]
delete(bm, "signature")
delete(bm, "signMethod")
return signature == p.sign(bm, key)
}
func (p *Pay) sign(bm g.Map, key string) string {
s, _ := p.buildSignStr(bm)
s += "&" + gmd5.MustEncrypt(key)
return gmd5.MustEncrypt(s)
}
func (p *Pay) buildSignStr(bm g.Map) (string, error) {
var (
buf strings.Builder
keyList []string
)
for k := range bm {
keyList = append(keyList, k)
}
sort.Strings(keyList)
for _, k := range keyList {
if v := bm[k]; v != "" {
buf.WriteString(k)
buf.WriteByte('=')
buf.WriteString(gconv.String(v))
buf.WriteByte('&')
}
}
if buf.Len() <= 0 {
return "", errors.New("length is error")
}
return buf.String()[:buf.Len()-1], nil
}