zengfanpei 2020-03-08
微信公众平台接入指南见 微信官方文档 :https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
公众平台的API调用所需的access_token的使用及生成方式说明:
1、建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;
2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。
公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。**调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。**小程序无需配置IP白名单。
接口调用请求说明
具体参数说明见微信开发文档:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
不多说直接上代码
微信全局变量配置类
package com.gaode.wx.weixin.sdk.propertie;
/**
* @ClassName: WeixinGlobal
* @Description: 微信全局变量配置
* @author lcoil
* @date 2019年12月3日 下午1:52:34
*
*/
public interface WeixinGlobal {
String APPID = "wx0dd1234567890123"; //对应微信服务号的appID 替换成自己的
String APPSECRET = "555f0642be5fa384ff59aac9a6406a99"; // 对应微信服务号APPSECRET 替换成自己的
String TOKEN = "weixin_new_token"; //微信服务号中自己设置的TOKEN
/**业务中需要的消息模板,在自己的服务号中申请后将 串替换掉即可*/
//作业提醒的模板id
String HOMEWORK_ASSIGN = "2oQc8ZnphKRIhr-j6iQxYGR0qK0wa3k4XFrlbJgCsFQ";
//作业批改完成通知的模板id
String HOMEWORK_CORRECT = "d0g6x478Xu173ayjy5NluzBX_suGeanUueHIeqS0LXE";
//班级通知模板id
String CLASS_NOTICE = "2YxppBHdz2qXRu_Elh6WxHzKAckWNcpHPjmJITi3MQc";
//成绩通知模板id
String EXAM_SCORE = "oCMFUHGpTnb5Fov3x4VykrOcGw29HgsrqnmgoA4d3m0";
//关卡提醒的模板id 对应微信公众平台消息模板:发布学习任务通知
String GATE_ASSIGN = "4DB0CQ3Py-Ld6LoNepD_Gjw1cn1X1xjyTRISUtvnm20";
/**百度天气api url*/
String BAIDU_WEATHER_API = "http://api.map.baidu.com/telematics/v3/weather?";
/**百度天气api 秘钥*/
String BAIDU_WEATHER_AK = "Bxw1M40IDPbjheeyUZhCeRAiGODej7aR";
//*********************************************************************************************************************************************************
/**PM25 API url*/
String PM25_API = "http://www.pm25.in/api/querys/pm2_5.json?";
/**PM25 API token*/
String PM25_TOKEN = "5j1znBVAsnSf5xQyNQyq";
//*********************************************************************************************************************************************************
//获取全局Access Token请求模版
String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
//获取openid的请求模版
String ACCESS_OPENID = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APPSECRET&code=CODE&grant_type=authorization_code";
String ACCESS_USER = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID";
//*********************************************************************************************************************************************************
//获取用户基本信息信息
String WECHAT_USER_INFO = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID";
//设置用户备注名
String WECHAT_UPDATE_REMAKE = "https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=ACCESS_TOKEN";
//获取关注列表
String WECHAT_USER_LIST = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID";
//创建分组
String WECHAT_GROUPS_CREATE = "https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN";
//查询分组
String WECHAT_GROUPS_LIST = "https://api.weixin.qq.com/cgi-bin/groups/get?access_token=ACCESS_TOKEN";
//查询用户所在的分组
String WECHAT_GROUPS_USER = "https://api.weixin.qq.com/cgi-bin/groups/getid?access_token=ACCESS_TOKEN";
//修改分组名称
String WECHAT_GROUPS_UPDATE = "https://api.weixin.qq.com/cgi-bin/groups/update?access_token=ACCESS_TOKEN";
//移动用户分组
String WECHAR_GROUPS_MEMBERS_UPDATA = "https://api.weixin.qq.com/cgi-bin/groups/members/update?access_token=ACCESS_TOKEN";
//向用户发送消息
String WECHAT_MESSAGE_CUSTOM_SEND = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN";
//根据分组id来群发消息
String WECHAT_MESSAGE_GROUP = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN";
//*********************************************************************************************************************************************************
//获取模板id
String WECHAT_TEMPLATE_GET_ID = "https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=ACCESS_TOKEN";
//发送模板消息
String WECHAT_TEMPLATE_SEND = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
// 创建菜单
String MENU_CREATE_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
// 查询自定义菜单
String MENU_GET_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN";
// 删除自定义菜单
String MENU_DELTE_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";
//票据
String jsapi_ticket_url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";//GET方式请求获得jsapi_ticket
String BASE_SERVER="http://xqpay.natapp1.cc";//服务地址
String PAY_KEY="CeTZ4VC2sm9OYmjMb5eCcmPGfZohpkp2";//微信支付秘钥 自己在商户平台设置的
String mchId="1562901001";//商户平台id
}WeixinGlobal
获取 服务号的access_token
由一个线程定时去刷新,这样可以减少access_token生成的次数,微信服务器对access_token的生成次数有限制。