使用golang快速开发微信公众平台(一):开启服务器配置 - Go语言中文社区

使用golang快速开发微信公众平台(一):开启服务器配置


微信公众平台的开发,说穿了一文不值,因为公众平台存在的目的就是给人用的,不存在什么技术门槛,但过程中坑实在太多,记录下来,希望能帮到其他人吧。


找到入口

这里写图片描述
在基本配置菜单中,可以看到修改配置按钮(群里真有找不到的),点进去

填参数

这里写图片描述
如果服务器已经通过nginx等方式将地址映射到了80端口,可以像这么写(Token和Key当然已经换掉了)

开始搓代码

这里写图片描述
在文档中,官方是这么写的:将这3个参数按照字典序排序,刚开始我是懵逼的,后来发现就是各语言版本的sort…接下来就好说了
这里写图片描述
我们加个路由,这个地址就是填入服务器配置中的url
接着在controllers中添加WxConnect.go文件

package controllers

import (
    "github.com/astaxie/beego"
    "strings"
    "sort"
    "crypto/sha1"
    "io"
    "fmt"
)

type WxConnectController struct {
    beego.Controller
}

const Token = "Dswq1322s1dfsf31s2af321231rew"

func (c *WxConnectController) Get() {

    //微信接入验证 这是首次对接微信 填写url后 微信服务器会发一个请求过来
    //c.Ctx.Request.URL-------------wx_connect?signature=038d75ed5485b9881a01b3b93e85f9fff28ea739&echostr=5756456183388806654&timestamp=1476173150&nonce=1093541731

    //开发者提交信息(包括URL、Token)后,微信服务器将发送Http Get请求到填写的URL上,
    //GET请求携带四个参数:signature、timestamp、nonce和echostr。公众号服务程序应该按如下要求进行接入验证
    timestamp, nonce,signatureIn := c.GetString("timestamp"), c.GetString("nonce"),c.GetString("signature")
    signatureGen := makeSignature(timestamp, nonce)

    //将加密后获得的字符串与signature对比,如果一致,说明该请求来源于微信
    if signatureGen != signatureIn {
        fmt.Printf("signatureGen != signatureIn signatureGen=%s,signatureIn=%sn", signatureGen, signatureIn)
        c.Ctx.WriteString("")

    } else {
        //如果请求来自于微信,则原样返回echostr参数内容 以上完成后,接入验证就会生效,开发者配置提交就会成功。
        echostr := c.GetString("echostr")
        c.Ctx.WriteString(echostr)
    }
}

func makeSignature(timestamp, nonce string) string {

    //1. 将 plat_token、timestamp、nonce三个参数进行字典序排序
    sl := []string{Token, timestamp, nonce}
    sort.Strings(sl)
    //2. 将三个参数字符串拼接成一个字符串进行sha1加密
    s := sha1.New()
    io.WriteString(s, strings.Join(sl, ""))

    return fmt.Sprintf("%x", s.Sum(nil))
}

重新跑一下项目,点击设置页面上的提交按钮,应该就能显示通过,请仔细校对参数,复制粘贴犹佳。
至此,微信公众平台已经向你敞开了大门(记得点启用按钮,否则光验证通过没什么卵用)。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u012210379/article/details/52789525
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-06 09:44:35
  • 阅读 ( 1200 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢