847.【微信公众号】基于golang的公众号开发基本配置
2023-11-08 本文已影响0人
七镜
写在前头
-
1. 该教程目标用户是想基于golang语言开发公众号后台,实现自动回复、微信支付、客服等等一些拓展功能;
-
2. 需要会golang、gin、web服务的部署等基础知识。
-
一、打开公众号基本配置界面
-
3. 依次点击【设置与开发】、【基本配置】;
-
4. 【URL】:填写web服务配置的URL;
-
5. 【Token】:随便写,但代码中会用到;
-
6. 【EncodingAESKey】:随机生成即可,但要记住。
二、golang代码编写
package routers
import (
"blog_server_v4/config"
"crypto/sha1"
"encoding/hex"
"fmt"
"github.com/gin-gonic/gin"
"net/http"
"sort"
"strings"
)
func RouterPartner(router *gin.Engine) (interface{}, error) {
routerDimension := router.Group("/xxx/xxxx")
{
routerDimension.GET("/xxx/xxxx/v1", func(c *gin.Context) {
// 填写开发者填写的token
token := config.AppConfig.Partner.Wx.Token
// 接收请求参数
signature := c.Query("signature")
timestamp := c.Query("timestamp")
nonce := c.Query("nonce")
echostr := c.Query("echostr")
// 校验signature
if WXCheckSignature(signature, timestamp, nonce, token) {
fmt.Println("微信公众号接入校验成功!")
c.String(http.StatusOK, echostr)
} else {
fmt.Println("微信公众号接入校验失败!")
c.String(http.StatusOK, "校验失败")
}
return
})
}
return routerDimension, nil
}
func WXCheckSignature(signature, timestamp, nonce, token string) bool {
params := []string{timestamp, nonce, token}
sort.Strings(params)
// 拼接参数字符串
paramStr := strings.Join(params, "")
// 进行sha1加密
sha1Str := sha1.Sum([]byte(paramStr))
// 与signature进行比较
signatureStr := hex.EncodeToString(sha1Str[:])
return signatureStr == signature
}
这是基于golang语言的gin web框架实现的微信校验核心代码,又不了解的,可加v:multi_z
沟通。
三、校验
[图片上传失败...(image-44879-1699525151047)]
可以看到,“提交成功”两个字,说明已经配置好了。
[图片上传失败...(image-f782f8-1699525151047)]
点击【启用】。
[图片上传失败...(image-34852d-1699525151047)]
可以看到,现在已经是“已启用”的状态了。