微信支付java版本之获取Access_token_java

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 

公众平台的API调用所需的access_token的使用及生成方式说明:

1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;
2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。 

如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。 

公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。

接口调用请求说明
http请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 

参数说明

 

返回说明

 

正常情况下,微信会返回下述JSON数据包给公众号:
 {"access_token":"ACCESS_TOKEN","expires_in":7200} 

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}

2.代码实现

APPID,APPSECRET在公众账号中可查询

package com.zhrd.bussinss.platform.scheduled;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import com.zhrd.bussinss.platform.constants.WeiXinId;
import com.zhrd.bussinss.platform.service.AccessTokenService;

import net.sf.json.JSONObject;

@Component
@Lazy(false)
public class GetWeiXinAccessTokenScheduled {

 /**

   * 获得ACCESS_TOKEN

   *

   * @Title: getAccess_token

   * @Description: 获得ACCESS_TOKEN

   * @param @return 设定文件

   * @return String 返回类型

   * @throws

   */

 @Autowired
 private AccessTokenService accessTokenServiceImpl;

 @Scheduled(fixedRateString = "${weixin.token.fixedRate.in.milliseconds}"
  , initialDelayString = "${weixin.token.initialDelay.in.milliseconds}")
  public void getAccessToken() {

  System.out.println("====================获取token开始==============================");

    String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="

        + WeiXinId.APPID+ "&secret=" + WeiXinId.APPSECRET;

    String accessToken = null;
    String expiresIn = null;

    try {

      URL urlGet = new URL(url);

      HttpURLConnection http = (HttpURLConnection) urlGet.openConnection();

      http.setRequestMethod("GET"); // 必须是get方式请求

      http.setRequestProperty("Content-Type",

          "application/x-www-form-urlencoded");

      http.setDoOutput(true);

      http.setDoInput(true);

      http.connect();

      InputStream is = http.getInputStream();

      int size = is.available();

      byte[] jsonBytes = new byte[size];

      is.read(jsonBytes);

      String message = new String(jsonBytes, "UTF-8");

      JSONObject demoJson = JSONObject.fromObject(message);

      accessToken = demoJson.getString("access_token");
      expiresIn = demoJson.getString("expires_in");

      System.out.println("accessToken===="+accessToken);
      System.out.println("expiresIn==="+expiresIn);
      accessTokenServiceImpl.addToken(accessToken,expiresIn);
      System.out.println("====================获取token结束==============================");

      is.close();

    } catch (Exception e) {

      e.printStackTrace();

    }

//    return accessToken;

  }

}

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
, 微信
, access
token
java获取access token、微信支付accesstoken、获取access token、微信获取access token、access token获取失败,以便于您获取更多的相关知识。

时间: 2024-10-05 02:30:46

微信支付java版本之获取Access_token_java的相关文章

微信支付java版本之JSAPI支付+发送模板消息_java

本文为大家分享了java版本之JSAPI支付+发送模板消息的相关资料,供大家参考,具体内容如下 1.工具类 工具类见:微信支付JAVA版本之Native付款 2.公众账号设置 3.代码实现  openId:openId为用户与该公众账号之间代表用户的唯一标示  以下类中涉及到生成token,关闭订单接口调用,获取配置文件信息,和工具类,在其他文章中有具体代码实现  package com.zhrd.bussinss.platform.controller.rest; import java.io

微信支付java版本之查询订单_java

本文实例为大家分享了微信支付订单的查询接口,供大家参考,具体内容如下 1.接口简介 2.代码实现  package com.zhrd.bussinss.platform.controller.shop; import java.io.File; import java.io.FileInputStream; import java.security.KeyStore; import java.text.SimpleDateFormat; import java.util.Date; import

微信支付java版本之Native付款_java

最近工作中接触到一些关于微信支付方面的东西,看到给的DEMO都是PHP版本的,再加上微信支付文档写的确实不敢恭维,趟过不少坑之后闲下来做个总结. 一.前期准备  做微信开发首先要申请一个公共账号,申请成功后会以邮件形式发给你一些必要信息,公共账号中有开发文档以及开发中必要信息,以及测试的数据查询.   二.工具类1.MD5加密工具类  package com.pay.utils.weixin; import java.security.MessageDigest; public class MD

微信支付java版V3验证数据合法性(Deom)_java

1.1 解析微信回调数据 InputStream inStream = request.getInputStream(); ByteArrayOutputStream outSteam = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = inStream.read(buffer)) != -1) { outSteam.write(buffer, 0, len); } o

C#微信支付成功后怎么获取通知?

问题描述 现在微信支付成功,怎么获取通知,求指教? 解决方案 解决方案二:没有开发者手册么?跑这里问什么?解决方案三:支付成功后,回调你的页面.解决方案四:引用2楼lovelj2012的回复: 支付成功后,回调你的页面. 为什么我的回调页面调用那么多次解决方案五:引用楼主tomtodayyesterday的回复: 现在微信支付成功,怎么获取通知,求指教? 问是我的自由,你可以不用回答解决方案六:回调N次的话估计你没安装api要求的做响应吧解决方案七:引用5楼starfd的回复: 回调N次的话估计

android端微信支付V3版本地签名统一下单详解_Android

满满的都是坑,因为服务器偷懒让客服端写统一下单,服务器只给了通知的url.微信的支付demo并没有统一下单的代码. 读此文前先阅读: https://pay.weixin.qq.com/wiki/doc/api/app/app.PHP?chapter=9_1 一步步的来  先根据统一下单的参数介绍工具: 1. 获取到当前的ip: <span style="font-size:14px;">public String getLocalIpAddress() { try { f

android端微信支付V3版本地签名统一下单详解

满满的都是坑,因为服务器偷懒让客服端写统一下单,服务器只给了通知的url.微信的支付demo并没有统一下单的代码. 读此文前先阅读: https://pay.weixin.qq.com/wiki/doc/api/app/app.PHP?chapter=9_1 一步步的来  先根据统一下单的参数介绍工具: 1. 获取到当前的ip: <span style="font-size:14px;">public String getLocalIpAddress() { try { f

微信支付H5调用支付详解(java版)_java

最近项目需要微信支付,然后看了下微信公众号支付,,虽然不难,但是细节还是需要注意的,用了大半天时间写了个demo,并且完整的测试了一下支付流程,下面分享一下微信公众号支付的经验. 一.配置公众号微信支付  需要我们配置微信公众号支付地址和测试白名单. 比如:支付JS页面的地址为 http://www.xxx.com/shop/pay/ 那此处配置www.xxx.com/shop/pay/ 二.开发流程 借用微信公众号支付api(地址 http://pay.weixin.qq.com/wiki/d

Java通过JsApi方式实现微信支付_java

要使用JsApi进行微信支付,首先要从微信获得一个prepay_id,然后通过调用微信的jsapi完成支付,JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回.由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分. 示例代码如下: function onBridgeReady(){ WeixinJSBridge