zoukankan      html  css  js  c++  java
  • 微信公众号接入服务器验证(Go实现)

    1 基本流程

    • 将token、timestamp、nonce三个参数进行字典序排序
    • 将三个参数字符串拼接成一个字符串进行sha1加密
    • 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

    2 请求参数

    参数 描述
    signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串

    3 注册页面填写

    1. URL填写:http://IP地址:监听端口
    2. Token填写自行设定的值

    注册完成页面

    4 代码说明

    • 监听于3456端口
    • Token为iwuqing

    5 代码

    package main
    
    import (
    	"crypto/sha1"
    	"encoding/hex"
    	"fmt"
    	"net/http"
    	"sort"
    )
    
    func main()  {
    	// 绑定路由
    	http.HandleFunc("/", checkout)
    	// 启动监听=j
    	err := http.ListenAndServe(":3456", nil)
    	if err != nil {
    	 fmt.Println("服务器启动失败!")
    	}
    }
    func checkout(response http.ResponseWriter, request *http.Request)  {
    	//解析URL参数
    	err := request.ParseForm()
    	if err != nil {
    		fmt.Println("URL解析失败!")
    		return
    	}
    	// token
    	var token string = "iwuqing"
    	// 获取参数
    	signature := request.FormValue("signature")
    	timestamp := request.FormValue("timestamp")
    	nonce := request.FormValue("nonce")
    	echostr := request.FormValue("echostr")
    	//将token、timestamp、nonce三个参数进行字典序排序
    	var tempArray  = []string{token, timestamp, nonce}
    	sort.Strings(tempArray)
    	//将三个参数字符串拼接成一个字符串进行sha1加密
    	var sha1String string = ""
    	for _, v := range tempArray {
    		sha1String += v
    	}
    	h := sha1.New()
    	h.Write([]byte(sha1String))
    	sha1String = hex.EncodeToString(h.Sum([]byte("")))
    	//获得加密后的字符串可与signature对比
    	if sha1String == signature {
    		_, err := response.Write([]byte(echostr))
    		if err != nil {
    			fmt.Println("响应失败。。。")
    		}
    	} else {
    		fmt.Println("验证失败")
    	}
    }
    

    GitHub地址

    https://github.com/iwuqing/WeChat-with-Go

  • 相关阅读:
    hadoop节点的增删
    hadoop集群搭建
    主从配置
    CentOS7ssh互信
    Java根据视频的URL地址,获取视频时长
    Mybatis-plus使用@Select注解使用IN查询不出数据的问题
    洗牌算法
    1525
    SpringBoot+Quartz+MySQL实现分布式定时任务
    微信小程序授权登录解密失败问题
  • 原文地址:https://www.cnblogs.com/iwuqing/p/10296391.html
Copyright © 2011-2022 走看看