微信小程序调用扫一扫开发代码
微信小程序扫一扫自推出起就受到大众的青睐,因为它和支付宝扫一扫一样,实在太便捷了!今天小编带来的就是微信小程序调用扫一扫开发代码。
第一步:设置调用微信js安全域名
第二步:将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[]
第三步:后台获取签名代码:
package com.epoch.wapmon;
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..HttpResponse;
import org.apache..client.ClientProtocolException;
import org.apache..client.methods.HttpGet;
import org.apache..impl.client.HttpClients;
import org.apache..util.EntityUtils;
import com.epochmon.utils.JsonUtil;
/**
* 官方给的使用js的验证工具
* @author Administrator
*
*/
public class JsSignUtil {
public static String accessToken = null;
public static Map sign(String url) {
String sendUrl = "api.weixin.qq/cgi-bin/token?grant_type=client_credential&appid=**appid**&secret= **secret**";
String result = getHttpResult(sendUrl);
Object accessResult = JsonUtil.getValueFromJson(result, "access_token");
String signUrl = "api.weixin.qq/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 +
"×tamp=" + 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 Request = new HttpGet(url);
try {
HttpResponse Response = HttpClients.createDefault().execute(Request);
if (Response.getStatusLine().getStatusCode() == 200) {
result = EntityUtils.toString(Response.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);
}
} 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
官方文档示例:
参考以下文档获取access_token(有效期7200秒,小程序开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html
用第一步拿到的access_token 采用 GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):api.weixin.qq/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";
}`
以上就是微信小程序调用扫一扫的操作步骤和具体小程序码了,大家在进行开发的时候一定要仔细对照,不能出错,更多相关资料请关注微信小程序素材网。
微信小程序扫一扫接口开发
微信小程序扫一扫功能怎么使用?
小程序扫一扫怎么扫?小程序功能介绍
上一篇:小程序扫一扫功能实现有什么好处?
下一篇:微信小程序扫一扫接口开发