Files
arenax-server/internal/controller/wx/wx_v1_we_chat_vertify.go

36 lines
726 B
Go

package wx
import (
"context"
"crypto/sha1"
"fmt"
"github.com/gogf/gf/v2/frame/g"
"server/utility/wechat"
"sort"
"strings"
"server/api/wx/v1"
)
func (c *ControllerV1) WeChatVertify(ctx context.Context, req *v1.WeChatVertifyReq) (res *v1.WeChatVertifyRes, err error) {
// 1. 排序
params := []string{wechat.GetWeChatClient().GetToken(), req.Timestamp, req.Nonce}
sort.Strings(params)
// 2. 拼接成字符串
str := strings.Join(params, "")
// 3. SHA1 加密
h := sha1.New()
h.Write([]byte(str))
sha1Str := fmt.Sprintf("%x", h.Sum(nil))
// 4. 比较签名
if sha1Str != req.Signature {
return nil, fmt.Errorf("签名错误")
}
g.RequestFromCtx(ctx).Response.Write(req.EchoStr)
return nil, nil
}