前提:第一次发布文章,如有写的不好的地方请指正或代码上可以优化的地方也请各路大神多多指教。顺带想吐槽下微信开发文档真的太恶心了,第一次接触下来让人头晕眼花,通过查阅各种资料后理清了思路,在此写上总结。
开发流程:
1.服务器(url)接口配置
2.发送文字(根据微信公众号文档“接收事件推送”事件接口编写代码)
3.生成二维码(账号管理下的“生成带参数的二维码”事件接口编写代码)
4.根据UI的图组合微信头像、微信名字、公众号二维码并调用素材管理下的“新增临时素材”接口上传图片
5.发送图片(调用消息管理下的客服消息下的客服接口-发消息(图片)接口)
6.进行裂变(调用“扫描带参数二维码事件”)(此步骤还未开发完,需根据业务需求变动)
详细流程,附上代码:
1.服务器(url)接口配置,此步骤就是微信授权接口的过程,如果域名都不改变,微信只会校验一次。此请求微信文档中说明了是get请求。(发现粘上代码很恶心,只能有图片代替)

2.发送文字(根据微信公众号文档“接收事件推送”事件接口编写代码):我这边的需求是发送的文字中要带上微信名称,所以还需要调用微信的获取accessToken接口跟获取用户信息接口。获取用户信息接口中需要openId,在用户点击关注微信公众号时,微信会自动发送过来。微信为什么会知道咱们的接口呢,因为咱们已经在第一步授权了接口,微信会以默认post请求的方式调用相同的路由,所以我们还得写一个post请求的接口。注:finally中是发送图片的动作。调用事件中运用了抽象工厂的设计模式,此处还有待优化。


标红标的地方是发送的文字,大家可以根据自己的需求而定


获取accessToken跟获取微信用户信息的方法:此处都是get请求,微信文档里面都是有写着的

3.生成二维码(账号管理下的“生成带参数的二维码”事件接口编写代码)
4.根据UI的图组合微信头像、微信名字、公众号二维码并调用素材管理下的“新增临时素材”接口上传图片
5.发送图片(调用消息管理下的客服消息下的客服接口-发消息(图片)接口)
此处因为3.4.5是处于一个动作中触发的,因此都是在一个代码块中。

生成二维码接口,此处是post的json格式请求

将生成的二维码下载到本地,微信文档中有说明,根据微信给出的路径拼接返回的ticket

组合图片及文字,此处因为代码截图不下,所以只截图了重要的方法。因为调用了Graphics画图工具,组合的图片大小及位置可自行根据UI图进行调整

上传图片至微信公众号素材库

发送客服消息

最后,遇到个bug,因为需求是先返回文字再返回图片。测试的时候,偶然发生了先返回图片再返回文字的情况。从我的认知角度讲,会先执行finally块,再执行return,也是先返回return的消息,再返回finally中的消息。遇到此问题是否由网络延迟或等原因造成的还有待考究。
最后附上个人微信:a373011739 ,因为一些工具类太长导致无法截图,所以在csdn上重新写了一篇,谢谢各位大佬的观看,鞠躬。
附上此文章csdn链接:https://blog.csdn.net/m0_37605129/article/details/94201912#_3
网友评论