微信小程序
文档
- 网络通信要求:网络 | 微信开放文档 (qq.com)
- API:基础 | 微信开放文档 (qq.com)
开源示例
GitHub - binarywang/weixin-java-miniapp-demo: 基于Spring Boot 和 WxJava 实现的微信小程序Java后端Demo
小程序开发文档 · Wechat-Group/WxJava Wiki · GitHub
注意
小程序登录、用户信息相关接口调整说明 | 微信开放社区 (qq.com)
小程序用户头像昵称获取规则调整公告 | 微信开放社区 (qq.com)
准备工作
注册小程序
如果还未注册小程序账号,打开官方注册地址:https://mp.weixin.qq.com/cgi-bin/registermidpage?action=index&lang=zh_CN,点击小程序,使用邮箱注册
如果已经有小程序账号,打开官方登录地址:https://mp.weixin.qq.com/?token=&lang=zh_CN
使用账号登录或微信扫码登录
添加运营者【开发人员】
登陆小程序后台,左侧管理-成员管理,项目成员,添加成员,输入开发人员微信号,勾选「运营者权限」、「开发者权限」,点击确认添加
获取 AppID 和 AppSecret,提供给开发人员
登陆小程序后台,开发-开发管理-开发设置-开发者ID中AppID和AppSecret
说明
小程序端开发
采用 uniapp 开发微信小程序
微信小程序源码 manifest.json 中配置了小程序唯一标识 appid,与小程序后台-小程序 appid 一致
获取小程序 appid
1
2
3
4
5// 获取小程序 appId
export const getAppId = () => {
const accountInfo = uni.getAccountInfoSync();
return accountInfo.miniProgram.appId
}跳转到其它微信小程序:通过目标小程序 appid 来实现 uni.navigateToMiniProgram(OBJECT) | uni-app官网 (dcloud.net.cn)
小程序 web-view
小程序仅支持加载网络网页,不支持本地html
小程序 web-view 支持打开某公众号文章链接
小程序 web-view 组件 src 指向网页的链接,如果是某公众号的文章,可以在该公众号后台关联当前小程序,来支持小程序打开关联公众号的文章
登陆微信公众号后台 - 小程序管理
小程序 web-view 支持打开其它网页链接,需要在小程序后台配置业务域名
开发-开发管理-业务域名。下载验证文件 放到网页链接域名所在服务器根目录下。配置域名,必须 https 不包含端口,完成验证【服务器 443 端口要通】。网页链接也可以是子域名,端口不限制
限制说明
1)每个小程序帐号支持配置最多200个域名;
2)每个域名支持绑定最多100个主体的小程序;
3)域名只支持 https 协议,不支持 IP 地址;
4)业务域名需经过 ICP 备案,新备案域名需24小时后才可配置;
5)域名格式只支持英文大小写字母、数字及“- ”;
6)配置业务域名后,可打开任意合法的子域名;
小程序和后端服务通信
小程序只跟指定域名的后台服务接口进行网络通信。域名在小程序后台配置「小程序后台 - 开发 - 开发设置 - 服务器域名」,支持配置多个
域名只支持
https
(wx.request、wx.uploadFile、wx.downloadFile) 和wss
(wx.connectSocket) 协议域名不能使用 IP 地址(小程序的局域网 IP 除外)或 localhost
域名配置可以指定端口,但使用时要严格一致;不配置端口,那么请求的 URL 中也不能包含端口, 443 端口也不要带
域名必须经过 ICP 备案
不支持配置父域名,使用子域名
HTTPS 证书必须有效
- 证书必须被系统信任,即根证书被已系统内置
- 部署 SSL 证书的网站域名必须与证书颁发的域名一致
- 证书必须在有效期内
- 证书的信任链必需完整(需要服务器配置)
跳过域名校验
在微信开发者工具中,可以临时开启
开发环境不校验请求域名、TLS版本及 HTTPS 证书
选项,跳过服务器域名的校验。此时,在微信开发者工具中及手机开启调试模式时,不会进行服务器域名的校验。在服务器域名配置成功后,建议开发者关闭此选项进行开发,并在各平台下进行测试,以确认服务器域名配置正确
后端服务与微信平台通信
引入 微信小程序 Maven 依赖
1
2
3
4
5<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-miniapp</artifactId>
<version>${weixin-java.version}</version>
</dependency>application.yml 配置小程序信息
1
2
3
4
5
6
7
8wx:
miniapp:
configs:
- appid: xxxx #微信小程序的appid
secret: yyyyy #微信小程序的Secret
token: zyxx #微信小程序消息服务器配置的token
aesKey: QlZ130Qd0Pl5RkQOYvtNRX2MVJdE6NQ1C3aauISsF5c #微信小程序消息服务器配置的EncodingAESKey
msgDataFormat: JSON接口调用前,上下文切换至对应 appid
appid 由小程序端在请求地址中作为路径变量传到后端
1
2
3if (!wxMaService.switchover(appid)) {
throw new IllegalArgumentException(String.format("未找到对应appid=[%s]的配置,请核实!", appid));
}WxMaService 接口
1
private final WxMaService wxMaService;
暂停、恢复小程序服务
设置-账号信息-暂停服务、恢复服务
微信小程序对接企业微信客服
微信小程序对接企业微信客服 | 微信开放社区 (qq.com)
让用户可以在企业的小程序里点击按钮后即可打开对应的微信客服会话,从而发起客服咨询联系客服。