3 Star 7 Fork 1

Gitee 极速下载/wechat-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/blusewang/wechat
克隆/下载
mp.go 1.86 KB
一键复制 编辑 原始数据 按行查看 历史
jf 提交于 2年前 . 更优雅的随机字符串
package wx
import (
"crypto/sha1"
"encoding/xml"
"fmt"
"github.com/blusewang/wx/mp_api"
"github.com/youkale/go-querystruct/params"
"net/http"
"strings"
"time"
)
// MpAccount 应用账号
// ServerHost 默认为:mp_api.ServerHostUniversal
type MpAccount struct {
AppId string `json:"app_id"`
AccessToken string `json:"access_token"`
AppSecret string `json:"app_secret"`
PrivateToken string `json:"private_token"`
EncodingAESKey string `json:"encoding_aes_key"`
JsSdkTicket string `json:"js_sdk_ticket"`
ComponentVerifyTicket *string `json:"component_verify_ticket"`
ServerHost mp_api.ServerHost `json:"server_host"`
}
// ReadMessage 读取通知消息
func (ma MpAccount) ReadMessage(req *http.Request) (q mp_api.MessageQuery, msg mp_api.MessageData, err error) {
if err = params.Unmarshal(req.URL.Query(), &q); err != nil {
return
}
if q.EchoStr != "" {
return
}
if err = q.Validate(ma.PrivateToken); err != nil {
return
}
if err = xml.NewDecoder(req.Body).Decode(&msg); err != nil {
return
}
if msg.Encrypt != "" {
if err = msg.ShouldDecode(ma.EncodingAESKey); err != nil {
return
}
}
return
}
// UrlSign 微信网页的网址签名
func (ma MpAccount) UrlSign(u string) (d H) {
data := make(H)
data["noncestr"] = NewRandStr(32)
data["jsapi_ticket"] = ma.JsSdkTicket
data["timestamp"] = time.Now().Unix()
data["url"] = u
d = make(H)
d["appId"] = ma.AppId
d["timestamp"] = data["timestamp"]
d["nonceStr"] = data["noncestr"]
str := mapSortByKey(data)
d["signature"] = strings.ToUpper(fmt.Sprintf("%x", sha1.Sum([]byte(str))))
d["jsApiList"] = []string{}
return
}
// NewMpReq 新建一个请求
func (ma MpAccount) NewMpReq(path mp_api.MpApi) *mpReq {
return &mpReq{account: ma, path: path}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors/wechat-go.git
git@gitee.com:mirrors/wechat-go.git
mirrors
wechat-go
wechat-go
master

搜索帮助