微信第三方平台开发流程整理
刚开始做微信第三方平台开发时,对整个流程都有点懵,现在抽空来对其中比较重要的授权流程整理下,并附上开发中使用到的数据库设计。
一、概述
微信第三方平台开放给所有通过开发者资质认证后的开发者使用。在得到公众号或小程序运营者授权后,第三方平台开发者可以通过调用微信开放平台的接口能力,为公众号或小程序的运营者提供账号申请、小程序创建、技术开发等全方位服务。同一个账号的运营者可以选择多家适合自己的第三方为其提供产品能力或委托运营。
先来看一下官方提供的流程图,有一个直观的认识。
二、授权流程
1、第三方平台方获取预授权码(pre_auth_code)
分3步来获取预授权码,如下图
1)验证票据(component_verify_ticket)
说明:在第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟以POST的方式推送component_verify_ticket,用于获取第三方平台接口调用凭据component_access_token。建议保存最近可用的验证票据。
2)令牌(component _access_token)
说明:令牌是第三方平台接口的调用凭据。令牌的获取是有限制的,每个令牌的有效期为 2 小时,如未特殊说明,一般作为被调用接口的 GET 参数。
3)预授权码(pre_auth_code)
说明:预授权码是第三方平台方实现授权托管的必备信息,每个预授权码有效期为 10 分钟。需要先获取令牌才能调用。
2、引入用户进入授权页(PC和移动端)
3、用户确认并同意登录授权给第三方平台方
4、授权后回调URI,得到授权码(authorization_code)和过期时间
5、利用授权码调用公众号或小程序的相关API(获取授权方的token等)
三、数据库设计
1、微信发送的ticket表
1 CREATE TABLE `f_wechat_verifyticket` (
2
3 `ticket_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
4
5 `component_verify_ticket` varchar(255) NOT NULL ,
6
7 `create_time` datetime NOT NULL COMMENT '创建日期',
8
9 PRIMARY KEY (`ticket_id`)
10
11 ) COMMENT = '微信发送的ticket表';
2、授权方的刷新令牌表
1 CREATE TABLE `f_wechat_refreshtoken` (
2
3 `refresh_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
4
5 `authorizer_refresh_token` varchar(255) NOT NULL COMMENT '授权方的刷新令牌',
6
7 `authorizer_appid` varchar(255) NOT NULL COMMENT '授权方appid',
8
9 `create_time` datetime NOT NULL COMMENT '创建日期',
10
11 `is_cancel` tinyint(1) NOT NULL COMMENT '是否停止授权 1是 0否',
12
13 PRIMARY KEY (`refresh_id`)
14
15 ) COMMENT = '授权方的刷新令牌表';
3、小程序提交审核版本表
1 CREATE TABLE `f_wechat_submitaudit` (
2
3 `submitaudit_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
4
5 `weapp_id` int(10) NOT NULL COMMENT '小程序ID',
6
7 `app_id` varchar(50) NOT NULL COMMENT '小程序appid',
8
9 `template_id` int(10) NOT NULL COMMENT '代码库中的代码模版ID',
10
11 `user_desc` varchar(150) NOT NULL COMMENT '代码描述',
12
13 `user_version` varchar(10) NOT NULL COMMENT '代码版本号',
14
15 `ext_json` text NOT NULL COMMENT '第三方自定义的配置',
16
17 `auditid` varchar(15) DEFAULT NULL COMMENT '审核编号',
18
19 `status` tinyint(1) DEFAULT NULL COMMENT '审核状态,其中0为审核成功,1为审核失败,2为审核中,3已撤回 4未提交审核',
20
21 `reason` varchar(100) DEFAULT NULL COMMENT '当status=1,审核被拒绝时,返回的拒绝原因',
22
23 `create_time` datetime DEFAULT NULL COMMENT '提交审核的日期',
24
25 `is_release` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否发布 1是 0否',
26
27 `release_time` datetime DEFAULT NULL COMMENT '发布日期',
28
29 `auditresult_time` datetime DEFAULT NULL COMMENT '审核成功(失败)的日期',
30
31 `update_time` datetime DEFAULT NULL COMMENT '最新操作的日期',
32
33 PRIMARY KEY (`submitaudit_id`)
34
35 ) COMMENT = '小程序提交审核版本表';