1.获取微信公众平台access_token

微信公众平台接入指南见 微信官方文档 :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请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

具体参数说明见微信开发文档: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的生成次数有限制。
AccessTokenUtil

相关推荐