0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 小程序

适合想接入第三方平台开发的同学,通过真实经验讲解

发表时间:2023-09-07 08:04:21

文章来源:炫佑科技

浏览次数:177

菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技

适合想接入第三方平台开发的同学,通过真实经验讲解

本文适合想要接入第三方平台开发同学。 通过真实体验对相关业务进行了简要讲解。 建议保存以备不时之需。

1.什么是微信开放平台

微信开放平台地址

微信开发平台实际上是一个向微信外部人员提供微信能力的平台。 我们可以在这个平台上创建相关的应用,管理相应的认证授权信息,然后通过开放接口接入微信提供的各种能力。

其中,申请账户需要提供公司实体的相关信息。

2.如何接入微信第三方平台开发

2.1 注册开放平台账号

注册账号需要一个邮箱地址(这个邮箱地址恶心,不能绑定微信,也不能绑定公众号平台,更不能绑定小程序平台),然后需要提供相关信息,例如公司实体

2.2 通过开发资质认证

2.3 创建第三方平台

2.4 完善开发信息

主要是权限集和开发资料

消息和事件接收 URL

消息验证Token和消息加解密Key

授权源页面域名

公众号开发域名

授权测试公众号/小程序名单

白名单IP地址列表

3. 接入流程 3.1 相关概念

为了更好的理解访问过程,我们首先需要理解几个概念

3.1.1 微信开放平台

微信向开发提供的系统

3.1.2 微信开发号

微信开放平台账号

3.1.3 第三方平台

它是属于开放平台的一类应用程序。 一个开放平台可以建设五个定制开发服务商和五个平台服务商。 一般来说,sass模型是基于平台类型的。 像我们一样,我们会给开发环境、测试环境、预发布环境、生产环境各一个第三方平台,实现资源隔离。

3.1.4 公众号

就是我们平常看到的公众号。 公众号本身可以开发自己的能力,但有些企业不想重复轮子,所以会授权其他第三方平台来管理自己的公众号。

3.1.5 第三方平台APPID()

第三方平台唯一标识

3.1.6 公众号app-id

公众号唯一标识

3.1.7 第三方平台(ket)

每十分钟,aes加密数据就会被推送到配置的授权事件接收URL。 作为第三方平台通信的临时票据,服务器可以直接使用。

3.1.8 用户的

每个微信用户关注公众号后都会生成一个open-id,该open-id由公众号+用户微信唯一,即同一个微信账号的open-id在不同的公众号中是不同的,不同的微信账号是不同的在同一个公众号的open-id也是不同的。

3.1.9

在微信生态中,用户的平台级唯一标识符,当公众号和小程序绑定同一个开发帐号时,那么这些公众号和小程序就会生成一个唯一的union-id,这样同一个微信用户可以在公众号和小程序中识别

3.2 业务流程

图是我总结的整个授权系统的流程图

简单来说,微信开放平台会定期推送给你,可以用来获取第三方平台的en,作为调用第三方平台接口的证书。 通过调用第三方平台接口获取预授权码,可以组装链接供用户访问扫码。 组装好的链接其实就是微信的域名。 用户扫描并确认授权后,微信会给您一个属于公众号的授权码,您可以通过此获取公众号的授权信息(包括权限设置、过期时间等)授权码适合想接入第三方平台开发的同学,通过真实经验讲解,用于刷新。 这些证书都有有效期,需要过期才能刷新。

因此,我们需要一个定时任务,可以手动帮我们定期刷新这些token,主要是刷新第三方平台en的公众号。

其中,比较麻烦的是,在获取时,微信使用的是AES加密算法,需要解密才能得到翻译。 目前,微信提供了 5 种语言的示例代码:c++、php、java、c#,你可以轻松方便地访问,但没有提供 go SDK。 下面我结合已有的案例来简单梳理一下相应的解密流程。

4. AES解密(Go版本)

微信消息加解密技术介绍

你可以先看一下微信的介绍,然后再回看这里的文章。

4.1 算法相关参数

这个时候我们就会使用我们之前配置的开发配置。

4.2 nonce处理流程

开发首先验证消息体签名的正确性,验证通过后再对消息体进行解密。

1. 开发者计算签名,dev_msg_signature=sha1(sort(Token、timestamp、nonce, msg_encrypt))
2. 比较dev_msg_signature和URL上带的msg_signature是否相等,相等则表示验证通过。
3. Aes 解密
4. xml 格式解析
...
    e, err := wxencrypter.NewEncrypter(token, encodingAesKey, appId)
	if err != nil {
		return err
	}
	b, err := e.Decrypt(msgSignature, timestamp, nonce, deCodeInfo)
	if err != nil {
		return err
	}
    // 解析xml
	var verifyTicketReq http_service_model.ComponentVerifyTicketReq
	if err := xml.Unmarshal(b, &verifyTicketReq); err != nil {
		return err
	}
...
type ComponentVerifyTicketReq struct {
	AppId                 string `xml:"AppId"`
	CreateTime            string `xml:"CreateTime"`
	InfoType              string `xml:"InfoType"`
	ComponentVerifyTicket string `xml:"ComponentVerifyTicket"`
	AuthorizationCode     string `xml:"AuthorizationCode"`
}

本着不重复发明轮子的原则开发微信小程序平台,在网上找到了一个兄弟几年前写的sdk,大家可以作为扩展包引入。

由于该仓库代码作者已不再维护,建议您自行复制并嵌入到项目中。 如果有需要的话,可能会发布一个开源的sdk供大家参考。

其中,需要注意的是

:是加解密消息的密钥,长度固定为43个字符,从az、AZ、0-9共62个字符中选择。 由开发在创建公众号插件时填写,也可以后期申请修改。

: =( + "="),尾部填充一个字符"=",生成32个字节;

因此,实际使用的AESKE是通过上述算法生成的,如下图所示。

5. 微信相关接口总结 6. 微信用户独特性研究

如图所示,前面我们提到过,一个开放平台账号可以创建多个第三方平台。 例如,开放平台账户1有第三方平台A和第三方平台B。

一个公众号可以授权给多个第三方平台(但有些权限集是互斥的,比如有些权限集只能授予其中之一),例如公众号A授权给第三方分别为开放平台账户1的平台A和A。 B第三方平台也以开发平台账号3授权给C第三方平台。

这时候你可能会有疑问,为什么会有绑定虚拟框架和非虚拟框架的公众号功能。

后台系统中有绑定公众号的功能。 您可以绑定您旗下的所有公众号,这些公众号将开放账号系统。 在这些公众号中都可以获得相同的微信ID。 是的,是和公众号相关的,所以会不一致。

如果你是对外使用的第三方平台,目前我们让客户申请自己的开放平台账号,让客户将自己公司的公众号和小程序绑定到自己的账号上(毕竟每个客户都是不一样的,这是更好的方法)。

七、总结

本文主要讲解开放平台的一些操作指南、第三方平台业务流程的描述、常见业务概念的讲解以及微信账号系统的原理。 这是一篇内容比较丰富的内容,建议大家保存。 也许以后你需要从事类似的业务。

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多