847.【微信公众号】基于golang的公众号开发基本配置

2023-11-08  本文已影响0人  七镜

写在前头

  1. 1. 该教程目标用户是想基于golang语言开发公众号后台,实现自动回复、微信支付、客服等等一些拓展功能;

  2. 2. 需要会golang、gin、web服务的部署等基础知识。

  3. 一、打开公众号基本配置界面

  1. 3. 依次点击【设置与开发】、【基本配置】;

  2. 4. 【URL】:填写web服务配置的URL;

  3. 5. 【Token】:随便写,但代码中会用到;

  4. 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)]

可以看到,现在已经是“已启用”的状态了。

上一篇 下一篇

猜你喜欢

热点阅读