您当前的位置: 首页 > 知识百科 > 微信小程序调用扫一扫开发代码

微信小程序调用扫一扫开发代码

时间:2023-07-01 14:05 阅读数:117 人阅读 分类:知识百科

  微信小程序扫一扫自推出起就受到大众的青睐,因为它和支付宝扫一扫一样,实在太便捷了!今天小编带来的就是微信小程序调用扫一扫开发代码。

  第一步:设置调用微信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";

  }`

  以上就是微信小程序调用扫一扫的操作步骤和具体小程序码了,大家在进行开发的时候一定要仔细对照,不能出错,更多相关资料请关注微信小程序素材网。

  

  微信小程序扫一扫接口开发

  微信小程序扫一扫功能怎么使用?

  小程序扫一扫怎么扫?小程序功能介绍