别来无恙`` 2018-04-06 10:39 采纳率: 100%
浏览 9701
已采纳

请问微信的wx.config参数怎么获得?越详细越好

wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: '' , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});

  • 写回答

2条回答 默认 最新

  • phphis 2018-04-07 06:50
    关注

    这三个参数都是在你点击验证的时候 通过url get的方式返回给到你的。
    timestamp为当前的时间戳 就是服务器的时间转换为的毫秒数
    nonceStr是自己写的一个随机字符串
    jsapi_ticket 呢要先获取access_token
    有了access_token 比如你获取到的access_token为abc 后呢发送这个https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=abc&type=jsapi
    你就会得到一个json格式的数据 里面就包含有jsapi_ticket
    具体方式如下:
    package com.test.util;

    import java.io.UnsupportedEncodingException;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.Arrays;

    public class CheckUtil {

    private static final String token = "mytest";
    
    public static boolean checkSignature(String signaure, String timestamp,
            String nonce) {
    
        String[] arr = new String[] {token, timestamp, nonce };
        // 排序
        Arrays.sort(arr);
        // 生成字符串
        StringBuffer content = new StringBuffer();
        for (int i = 0; i < arr.length; i++) {
            content.append(arr);
        }
        // sha1加密
        String temp = getSha1(content.toString());
        return temp.equals(signaure);
    }
    
    
    
    public static String getSha1(String str) {
        if (null == str || 0 == str.length()) {
            return null;
        }
        char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                'A', 'B', 'C', 'D', 'E', 'F' };
        try {
            MessageDigest mdTemp = MessageDigest.getInstance("SHA1");
            mdTemp.update(str.getBytes("UTF-8"));
            byte[] md = mdTemp.digest();
            int j = md.length;
            char[] buf = new char[j * 2];
            int k = 0;
            for (int i = 0; i < j; i++) {
                byte byte0 = md;
                buf[k++] = hexDigits[byte0 >>> 4 & 0xf];
                buf[k++] = hexDigits[byte0 & 0xf];
            }
            return new String(buf);
        } catch (Exception e) {
            return null;
        }
    }
    

    }

    protected void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
    PrintWriter out = res.getWriter();

        String signature = req.getParameter("signature");
        String timestamp = req.getParameter("timestamp");
        String nonce = req.getParameter("nonce");
        String echostr = req.getParameter("echostr");
        String jsapi_ticket = req.getParameter("jsapi_ticket");
        if(CheckUtil.checkSignature(signature, timestamp, nonce)){
            System.out.println("nonce:"+nonce);
            System.out.println("timestamp:"+timestamp);
            System.out.println("signature:"+signature);
            System.out.println("echo:"+echostr);
            out.print(echostr);
        }
    

    还请认真看一下官方api

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?