服务端代码:
@RequestMapping
(value=
"/test"
)
public
ModelAndView goReadCardAnniu2(HttpServletRequest request,HttpServletResponse response){
String appId=
""
;
String appsecret=
""
;
AccessToken accessToken = getAccessToken(appId, appsecret);
String access_token=accessToken.getToken();
String ticket = getJsapiTicket(access_token);
Map<String,String> map = sign(ticket, "http://www.ssss141414141.com/
lanya/test.do"
);
request.setAttribute(
"timestamp"
, map.get(
"timestamp"
));
request.setAttribute(
"nonceStr"
, map.get(
"nonceStr"
));
request.setAttribute(
"signature"
, map.get(
"signature"
));
request.setAttribute(
"appId"
, appId);
return
new
ModelAndView(
"/weixin/test"
);
}
//获取token
public
String getAccessToken(String appId,String appsecret){
}
//getJsapiTicket 获取调用微信jsapi的凭证方法
public
String getJsapiTicket(String access_token){
String getticket_url=
"https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="
;//接口凭据
String jsonData=HttpUtil.sendGet(getticket_url+access_token+
"&type=jsapi"
,
"utf-8"
,
30000
);
JSONObject jsonObj = JSONObject.fromObject(jsonData);
String errcode = jsonObj.getString(
"errcode"
);
String ticket =
null
;
if
(errcode.equals(
"0"
)){
ticket = jsonObj.getString(
"ticket"
);
}
return
ticket;
}
public
Map<String, String> sign(String jsapi_ticket, String url) {
Map<String, String> ret =
new
HashMap<String, String>();
String nonce_str = create_nonce_str();
String timestamp = create_timestamp();
String string1;
String signature =
""
;
string1 =
"jsapi_ticket="
+ jsapi_ticket +
"&noncestr="
+ nonce_str +
"×tamp="
+ timestamp +
"&url="
+ url;
System.out.println(string1);
try
{
MessageDigest crypt = MessageDigest.getInstance(
"SHA-1"
);
crypt.reset();
crypt.update(string1.getBytes(
"UTF-8"
));
signature = byteToHex(crypt.digest());
}
catch
(NoSuchAlgorithmException e)
{
e.printStackTrace();
}
catch
(UnsupportedEncodingException e)
{
e.printStackTrace();
}
ret.put(
"url"
, url);
ret.put(
"jsapi_ticket"
, jsapi_ticket);
ret.put(
"nonceStr"
, nonce_str);
ret.put(
"timestamp"
, timestamp);
ret.put(
"signature"
, signature);
return
ret;
}
private
static
String byteToHex(
final
byte
[] hash) {
Formatter formatter =
new
Formatter();
for
(
byte
b : hash)
{
formatter.format(
"%02x"
, b);
}
String result = formatter.toString();
formatter.close();
return
result;
}
private
static
String create_nonce_str() {
return
UUID.randomUUID().toString();
}
private
static
String create_timestamp() {
return
Long.toString(System.currentTimeMillis() /
1000
);
}