评论

go接入微信小程序消息推送服务

go后端服务器接入微信小程序消息推送服务

需要先完成文档中的前提条件。

// 对应小程序后台-「开发」-「开发设置」-「消息推送」配置项中的token
const token = "weChatMessagePush"

func CheckSignature(c *context.Context) {
	defer func() {
		if r := recover(); r != nil {
			log.Println("微信消息推服务接入失败", r)
			c.StopWithStatus(http.StatusBadRequest)
		}
	}()

	// 读取
	ps := c.URLParams()
	signature := ps["signature"]
	timestamp := ps["timestamp"]
	nonce := ps["nonce"]
	echostr := ps["echostr"]

	// 将token、timestamp、nonce三个参数进行字典序排序
	data := []string{token, timestamp, nonce}
	sort.Strings(data)

	// 将三个参数字符串拼接成一个字符串进行sha1加密
	cs := sha1.Sum([]byte(strings.Join(data, "")))

	// 与signature对比,判断该请求是否来源于微信
	if fmt.Sprintf("%x", cs) != signature {
		panic("签名比对结果不一致")
	} else {
		// 原样返回 echostr 参数内容
		c.StopWithText(http.StatusOK, echostr)
		log.Println("微信消息推送服务已接入")
	}
}

/* 
	如果报错【Token校验失败,请检查确认】
	大概率是端口、URL或者接口写得有问题,仔细排查即可
*/
最后一次编辑于  2022-10-09  
点赞 1
收藏
评论

1 个评论

  • 景涵
    景涵
    2022-11-14

    大佬可以提供一下完整的代码么

    2022-11-14
    赞同
    回复 1
    • 从君华
      从君华
      2023-01-11
      核心代码就上面这几行啊兄弟..
      2023-01-11
      回复
登录 后发表内容