最近一个移动端的项目中准备用到微信公众的消息推送、获取微信用户的openid、昵称和头像。
delphi开发web类项目,无疑使用unigui控件开发是最优解。在三年前有实现过一些简单的接口,最近发现接口功能失效了,发现微信公众号的接口已经大部分升级,因为安全原因,腾讯废除了原来的获取微信用户信息的接口,进行了授权机制,需要使用另一个独立的token获取接口来获取用户授权信息,才能获取相应的昵称和头像,不能再直接静默获取。需要解决的几个难点是,一是获取token;二是需要按照腾讯的规则进行组装字符串,再加密生成签名;三是调试相对麻烦,公众号和delphi通信,必须要有备案过的域名和认证过的公众号。因为两者之间交互不是单向的,除了严格按照要求往微信公众号接口上post传递参数外,微信公众号也还需要往你服务器上发送指定格式内容的消息,再进行解析操作。经过多次踩坑,总算是完美的实现了,并实现了封闭一行代码调用各项功能,包括微信信息获取、微信支付、微信分享接口、获取位置经玮度、打开微信地图、微信消息推送,不仅能主动给好友推送指定模板的消息;也能接收到内容后按自定规则进行回复,实现效果见最后在视频。有遇到问题的也可以私信我交流。
需要注意:
- 服务器必须能正常使用80端口。
- 微信公众号必须是服务号,并且通过企业认证。
- 域名已经通过备案。
- 微信支付的授权域名,最后必须要加 /
- 部分功能要从微信公众号中进入才可以正常使用。
- 必须关注了公众号,才能获取用户信息和接收消息推送。
- 消息推送只能使用后台申请指定行业的固定模板,无法自定义。
delphi+unigui实现微信公众号接口开发演示