微信小程序初探

import java.util.HashMap;

import java.util.Map;

import java.util.Random;

import org.apache.commons.codec.digest.DigestUtils;

import org.apache.commons.lang.RandomStringUtils;

import org.apache.commons.lang.StringUtils;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Component;

import com.alibaba.fastjson.JSONObject;

import com.core.common.base.cache.RedisUtil;

import com.core.common.base.utils.HttpClientUtils;

import lombok.extern.slf4j.Slf4j;

@Slf4j

@Component

public class WxRestClient {

@Autowired

private RedisUtil redisUtil;

/**

* 获取accessToken

*

* @return

*/

public String getAccessToken() {

if (redisUtil.hasKey(WxConstant.ACCESS_TOKEN_KEY)) {

//System.out.println("redis->access_token:" + String.valueOf(redisUtil.get(WxConstant.ACCESS_TOKEN_KEY)));

return String.valueOf(redisUtil.get(WxConstant.ACCESS_TOKEN_KEY));

}

;

Map<String, Object> param = new HashMap<String, Object>();

param.put("grant_type", "client_credential");

param.put("appid", WxConstant.APPID);

param.put("secret", WxConstant.APPSECRET);

// 微信服务器进行验证

String result = HttpClientUtils.sendGetReq(WxConstant.TOKEN_URL, param);

log.info("微信小程序获取access_token" + result);

JSONObject tokenObj = JSONObject.parseObject(result);

if (tokenObj.containsKey("access_token")) {

redisUtil.set(WxConstant.ACCESS_TOKEN_KEY, tokenObj.getString("access_token"),

tokenObj.getLong("expires_in"));

//System.out.println("access_token:" + tokenObj.getString("access_token"));

return tokenObj.getString("access_token");

}

return null;

}

/**

* 获取ticket

*

* @param accessToken

* @return

*/

public String getTicket(String accessToken) {

if (redisUtil.hasKey(WxConstant.TICKET_KEY)) {

log.info("redis->ticket:" + String.valueOf(redisUtil.get(WxConstant.TICKET_KEY)));

//System.out.println();

return String.valueOf(redisUtil.get(WxConstant.TICKET_KEY));

}

;

Map<String, Object> param = new HashMap<String, Object>();

param.put("access_token", accessToken);

param.put("type", "jsapi");

String result = HttpClientUtils.sendGetReq(WxConstant.TICKET_URL, param);

JSONObject ticketObj = JSONObject.parseObject(result);

if (ticketObj.containsKey("ticket")) {

redisUtil.set(WxConstant.TICKET_KEY, ticketObj.getString("ticket"), ticketObj.getLong("expires_in"));

log.info("ticket:" + ticketObj.getString("ticket"));

//System.out.println("ticket:" + ticketObj.getString("ticket"));

return ticketObj.getString("ticket");

}

return null;

}

/**

* sha1加密

*

* @param decript

* @return

*/

public String sha1(String decript) {

if (StringUtils.isBlank(decript)) {

return null;

}

return DigestUtils.sha1Hex(decript);

}

/**

* 获取10位的时间戳

*

* @return

*/

public String timestamp() {

return String.format("%010d", System.currentTimeMillis() / 1000);

}

/**

* 获取一定长度的随机字符串

*

* @param len

* @return

*/

public String randomStr(int len) {

return RandomStringUtils.randomAlphanumeric(len);

}

/**

* 生成4位随机数字

*

* @return

*/

public String random4Num() {

return String.format("%04d", new Random().nextInt(9999));

}

public String getSignature(String ticket, String noncestr, String timestamp, String url) {

String str = "jsapi_ticket=" + ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + url;

//System.out.println(str);

return sha1(str);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值