From 2401d39ae27c781847d0d3ed136b0cb04244bc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Fri, 2 Sep 2022 19:33:10 +0800 Subject: [PATCH] - add service_http.gin --- const.go | 2 +- go.mod | 2 +- service_http.gin.go | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 service_http.gin.go diff --git a/const.go b/const.go index 78a4619..1ee3735 100644 --- a/const.go +++ b/const.go @@ -3,5 +3,5 @@ package wechatopen const ( apiUrl = "https://api.weixin.qq.com" logTable = "wechatopen" - Version = "1.0.24" + Version = "1.0.25" ) diff --git a/go.mod b/go.mod index 36d0701..a72ac8e 100644 --- a/go.mod +++ b/go.mod @@ -3,6 +3,7 @@ module go.dtapp.net/wechatopen go 1.19 require ( + github.com/gin-gonic/gin v1.8.1 github.com/mitchellh/mapstructure v1.5.0 go.dtapp.net/dorm v1.0.30 go.dtapp.net/golog v1.0.51 @@ -15,7 +16,6 @@ require ( github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/gin-contrib/sse v0.1.0 // indirect - github.com/gin-gonic/gin v1.8.1 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect github.com/go-playground/validator/v10 v10.11.0 // indirect diff --git a/service_http.gin.go b/service_http.gin.go new file mode 100644 index 0000000..099c348 --- /dev/null +++ b/service_http.gin.go @@ -0,0 +1,41 @@ +package wechatopen + +import ( + "context" + "github.com/gin-gonic/gin" +) + +// ResponseServeHttpGin 推送信息 +type ResponseServeHttpGin struct { + MsgSignature string `form:"msg_signature" json:"msg_signature" xml:"msg_signature" uri:"msg_signature" binding:"omitempty"` // 签名串,对应 URL 参数的msg_signature + Timestamp string `form:"timestamp" json:"timestamp" xml:"timestamp" uri:"timestamp" binding:"omitempty"` // 时间戳,对应 URL 参数的timestamp + Nonce string `form:"nonce" json:"nonce" xml:"nonce" uri:"nonce" binding:"omitempty"` // 随机串,对应 URL 参数的nonce + Signature string `form:"signature" json:"signature" xml:"signature" uri:"signature" binding:"omitempty"` + EncryptType string `form:"encrypt_type" json:"encrypt_type" xml:"encrypt_type" uri:"encrypt_type" binding:"omitempty"` // 加密类型 + AppId string `form:"AppId" json:"AppId" xml:"AppId" uri:"AppId" binding:"omitempty"` // 第三方平台 appid + Encrypt string `form:"Encrypt" json:"Encrypt" xml:"Encrypt" uri:"Encrypt" binding:"omitempty"` // 加密内容 +} + +// ServeHttpGin 验证票据推送 +func (c *Client) ServeHttpGin(ctx context.Context, ginCtx *gin.Context) (ResponseServeHttpGin, error) { + + query := ginCtx.Request.URL.Query() + + // 声明接收的变量 + var validateJson struct { + AppId string `form:"AppId" json:"AppId" xml:"AppId" uri:"AppId" binding:"omitempty"` // 第三方平台 appid + Encrypt string `form:"Encrypt" json:"Encrypt" xml:"Encrypt" uri:"Encrypt" binding:"omitempty"` // 加密内容 + } + + err := ginCtx.ShouldBind(&validateJson) + + return ResponseServeHttpGin{ + MsgSignature: query.Get("msg_signature"), + Timestamp: query.Get("timestamp"), + Nonce: query.Get("nonce"), + Signature: query.Get("signature"), + EncryptType: query.Get("encrypt_type"), + AppId: validateJson.AppId, + Encrypt: validateJson.Encrypt, + }, err +}