适合想接入第三方平台开发的同学,通过真实经验讲解
发表时间: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。 是的,是和公众号相关的,所以会不一致。
如果你是对外使用的第三方平台,目前我们让客户申请自己的开放平台账号,让客户将自己公司的公众号和小程序绑定到自己的账号上(毕竟每个客户都是不一样的,这是更好的方法)。
七、总结
本文主要讲解开放平台的一些操作指南、第三方平台业务流程的描述、常见业务概念的讲解以及微信账号系统的原理。 这是一篇内容比较丰富的内容,建议大家保存。 也许以后你需要从事类似的业务。