使用beego快速开发微信公众平台(一)
发布时间:2020-12-16 18:26:18 所属栏目:大数据 来源:网络整理
导读:开启服务器配置 微信公众平台的开发,说穿了一文不值,因为公众平台存在的目的就是给人用的,不存在什么技术门槛,但过程中坑实在太多,记录下来,希望能帮到其他人吧。 找到入口 在基本配置菜单中,可以看到修改配置按钮(群里真有找不到的),点进去 填参数
开启服务器配置微信公众平台的开发,说穿了一文不值,因为公众平台存在的目的就是给人用的,不存在什么技术门槛,但过程中坑实在太多,记录下来,希望能帮到其他人吧。 找到入口 填参数 开始搓代码 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×tamp=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))
}
重新跑一下项目,点击设置页面上的提交按钮,应该就能显示通过,请仔细校对参数,复制粘贴犹佳。 至此,微信公众平台已经向你敞开了大门(记得点启用按钮,否则光验证通过没什么卵用)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |