1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > html 调用微信扫一扫 JS 调用微信扫一扫功能

html 调用微信扫一扫 JS 调用微信扫一扫功能

时间:2024-06-03 16:22:03

相关推荐

html 调用微信扫一扫 JS 调用微信扫一扫功能

1.第一步:

设置调用微信js安全域名,就可以在该域名下调用微信的js接口

2.第二步:

将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[]

3.第三步:

后台获取签名代码:

package com.mon;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Formatter;

import java.util.HashMap;

import java.util.Map;

import java.util.UUID;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.HttpClients;

import org.apache.http.util.EntityUtils;

import mon.utils.JsonUtil;

/**

* 官方给的使用js的验证工具

* @author Administrator

*

*/

public class JsSignUtil {

public static String accessToken = null;

public static Map sign(String url) {

String sendUrl = "https://api./cgi-bin/token?grant_type=client_credential&appid=**appid**&secret= **secret**";

String result = getHttpResult(sendUrl);

Object accessResult = JsonUtil.getValueFromJson(result, "access_token");

String signUrl = "https://api./cgi-bin/ticket/getticket?access_token="+accessResult.toString()+"&type=jsapi";

String resultSign = getHttpResult(signUrl);

Object ticket = JsonUtil.getValueFromJson(resultSign, "ticket");

Map ret = new HashMap();

String nonce_str = create_nonce_str();

String timestamp = create_timestamp();

String string1;

String signature = "";

//注意这里参数名必须全部小写,且必须有序

string1 = "jsapi_ticket=" + ticket +

"&noncestr=" + nonce_str +

"&timestamp=" + timestamp +

"&url=" + url;

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("nonceStr", nonce_str);

ret.put("timestamp", timestamp);

ret.put("signature", signature);

ret.put("jsapi_ticket", ticket);

ret.put("appId", "wx154f74654ae04891");

return ret;

}

/**

* 随机加密

* @param hash

* @return

*/

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 getHttpResult(String url) {

String result = "";

HttpGet httpRequest = new HttpGet(url);

try {

HttpResponse httpResponse = HttpClients.createDefault().execute(httpRequest);

if (httpResponse.getStatusLine().getStatusCode() == 200) {

result = EntityUtils.toString(httpResponse.getEntity());

}

} catch (ClientProtocolException e) {

e.printStackTrace();

result = e.getMessage().toString();

} catch (IOException e) {

e.printStackTrace();

result = e.getMessage().toString();

}

return result;

}

/**

* 产生随机串--由程序自己随机产生

* @return

*/

private static String create_nonce_str() {

return UUID.randomUUID().toString();

}

/**

* 由程序自己获取当前时间

* @return

*/

private static String create_timestamp() {

return Long.toString(System.currentTimeMillis() / 1000);

}

}

官方文档示例:

参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html

用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api./cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

4 第四步:

前台进入页面:`

@RequestMapping(value = "/tiaoma")

public String tiaoma( HttpServletRequest request,GoodsVO goods) throws Exception {

String Url=request.getRequestURL()+"?"+request.getQueryString().toString();;

Map resMap = new HashMap();

resMap = JsSignUtil.sign(Url);

request.setAttribute("nonceStr", resMap.get("nonceStr"));

request.setAttribute("timestamp", resMap.get("timestamp"));

request.setAttribute("signature", resMap.get("signature"));

request.setAttribute("appId", resMap.get("appId"));

request.setAttribute("url", resMap.get("url"));

request.setAttribute("jsapi_ticket", resMap.get("jsapi_ticket"));

return "index/tiaoma";

}`

以上所述是小编给大家介绍的JS 调用微信扫一扫功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。