golang版微信小程序登录和ase解码微信公开数据

2023-10-31 19:40

本文主要是介绍golang版微信小程序登录和ase解码微信公开数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

golang版微信小程序登录和ase解码微信公开数据

  • 虽然微信提供了很多版语言的代码,但是没有go版,很简单的,大家想偷个懒就直接copy我的代码就好了
    小程序流程图
  1. 首选用code登录微信服务器,返回openID和session_key

    type RespWXSmall struct {Openid     string `json:"openid"`      //用户唯一标识Sessionkey string `json:"session_key"` //会话密钥Unionid    string `json:"unionid"`     //用户在开放平台的唯一标识符,在满足 UnionID 下发条件的情况下会返回,详见 UnionID 机制说明。Errcode    int    `json:"errcode"`     //错误码ErrMsg     string `json:"errMsg"`      //错误信息
    }func loginWXSmall(code string) (wxInfo RespWXSmall, err error) {//https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_codeappId := "******"appSecret := "***************"url := "https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code"resp, err := http.Get(fmt.Sprintf(url, appId, appSecret, code))if err != nil {return wxInfo, err}defer resp.Body.Close()err = tools.BindJson(resp.Body, &wxInfo)if err != nil {return wxInfo, err}if wxInfo.Errcode != 0 {return wxInfo, errors.New(fmt.Sprintf("code: %d, errmsg: %s", wxInfo.Errcode, wxInfo.ErrMsg))}return wxInfo, nil
    }
  2. 获得放回结果了,进入的业务代码,处理自己的逻辑后,在给小程序返回

  • aes解码微信的公开数据,我参考python的代码

    func DecryptWXOpenData(sessionKey, encryptData, iv string) (map[string]interface{}, error) {decodeBytes, err := base64.StdEncoding.DecodeString(encryptData)if err != nil {return nil, err}sessionKeyBytes, err := base64.StdEncoding.DecodeString(sessionKey)if err != nil {return nil, err}ivBytes, err := base64.StdEncoding.DecodeString(iv)if err != nil {return nil, err}dataBytes, err := AesDecrypt(decodeBytes, sessionKeyBytes, ivBytes)fmt.Println(string(dataBytes))m := make(map[string]interface{})err = json.Unmarshal(dataBytes, &m)if err != nil {fmt.Println(err)return nil, err}temp := m["watermark"].(map[string]interface{})appid := temp["appid"].(string)if appid != setting.WxSmallConf.Appid {return nil, fmt.Errorf("invalid appid, get !%s!", appid)}if err != nil {return nil, err}return m, nil}func AesDecrypt(crypted, key, iv []byte) ([]byte, error) {block, err := aes.NewCipher(key)if err != nil {return nil, err}//blockSize := block.BlockSize()blockMode := cipher.NewCBCDecrypter(block, iv)origData := make([]byte, len(crypted))blockMode.CryptBlocks(origData, crypted)//获取的数据尾端有'/x0e'占位符,去除它for i, ch := range origData {if ch == '\x0e' {origData[i] = ' '}}//{"phoneNumber":"15082726017","purePhoneNumber":"15082726017","countryCode":"86","watermark":{"timestamp":1539657521,"appid":"wx4c6c3ed14736228c"}}//<nil>return origData, nil
    }
    

这篇关于golang版微信小程序登录和ase解码微信公开数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/317668

相关文章

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

Golang 日志处理和正则处理的操作方法

《Golang日志处理和正则处理的操作方法》:本文主要介绍Golang日志处理和正则处理的操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录1、logx日志处理1.1、logx简介1.2、日志初始化与配置1.3、常用方法1.4、配合defer

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化:

Java中的登录技术保姆级详细教程

《Java中的登录技术保姆级详细教程》:本文主要介绍Java中登录技术保姆级详细教程的相关资料,在Java中我们可以使用各种技术和框架来实现这些功能,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录1.登录思路2.登录标记1.会话技术2.会话跟踪1.Cookie技术2.Session技术3.令牌技

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据