微信开发文档 扫一扫接口_java 开发微信接口开发文档 - CSDN
  • 微信公众号开发--微信JS-SDK扫一扫功能

    万次阅读 多人点赞 2016-03-02 08:55:10
    首先请阅读微信JS-SDK说明文档,了解微信JS的相关说明。 根据官方的使用步骤,关键的有以下几步 绑定域名(很关键) 引入JS文件(很简单) 通过config接口注入权限验证配置(很重要) 通过ready接口处理成功验证...

    首先请阅读微信JS-SDK说明文档,了解微信JS的相关说明。
    根据官方的使用步骤,关键的有以下几步

    1. 绑定域名(很关键
    2. 引入JS文件(很简单)
    3. 通过config接口注入权限验证配置(很重要
    4. 通过ready接口处理成功验证(还没用到)
    5. 通过error接口处理失败验证(还没用到)

    绑定域名

    绑定域名
    如果域名绑定有误,会出现如下错误提示
    错误的域名配置示例:

    `http://gwchsk.imwork.net/wechat/order/test.html`
    

    域名配置错误的提示信息:
    {“errMsg”:”config:invalid url domain”}

    这里写图片描述

    所以,域名配置的时候一定要注意
    1. 域名不要以http:开头
    2. 域名不要配置到具体的页面
    配置成功的提示如下

    这里写图片描述

    引入JS文件

    一行代码就可以了

    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

    通过config接口注入权限验证配置

    这一步非常重要,也是最关键的一步,这一部分
    先看官方的示例

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

    这里需要从服务器端网页面传递的参数有timestamp、nonceStr和signature而appId和jsApiList都是固定的,这里直接写在页面中。

    首先,编写服务器端代码,生成timestampnonceStrsignature
    在生成timestamp、nonceStr和signature的时候有两个参数需要获取
    一个是access_token,另一个是jsapi_ticket

    access_token的获取需要AppIdAppSecret,获取地址如下,发送GET请求

    https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

    通过HttpClient发送http请求就可以获取到access_token

    得到access_token之后,采用http GET方式请求获得jsapi_ticket

    https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi

    注意,access_token和jsapi_ticket得有效期为7200秒,开发者必须在自己的服务全局缓存

    获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。

    签名算法

    签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

    签名算法的实现

    最难的就是签名算法的实现部分,幸好微信给了demo,网上好多人都在找,这里我把签名算法的实现贴出来,代码来自微信demo
    这里写图片描述
    下载地址
    java代码如下,做了一点点修改

    package com.gwc.wechat.utils.wechat;
    
    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;
    
    public class WxJSUtil {
        public static void main(String[] args) {
    
            // 注意 URL 一定要动态获取,不能 hardcode
            String url = "http://gwchsk.imwork.net/wechat/order/test.html";
            Map<String, String> ret = sign(url);
            for (Map.Entry entry : ret.entrySet()) {
                System.out.println(entry.getKey() + "=" + entry.getValue());
            }
        };
    
        public static Map<String, String> sign(String url) {
            Map<String, String> ret = new HashMap<String, String>();
            //这里的jsapi_ticket是获取的jsapi_ticket。
            String jsapi_ticket = JSAPITicketTool.getTicket();
            String nonce_str = create_nonce_str();
            String timestamp = create_timestamp();
            String string1;
            String signature = "";
    
            //注意这里参数名必须全部小写,且必须有序
            string1 = "jsapi_ticket=" + jsapi_ticket +
                      "&noncestr=" + nonce_str +
                      "&timestamp=" + 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);
        }
    }
    

    Controller的代码

    @Controller
    @RequestMapping(value = "/order")
    public class OrderController {
    @RequestMapping(value = "/test.html", method = RequestMethod.GET)
        public String testPage(Model model) {
    
            String url = Constant.AppURL + "/order/test.html";
            Map<String, String> ret = WxJSUtil.sign(url);
             for (Map.Entry entry : ret.entrySet()) {
                    System.out.println(entry.getKey() + "=" + entry.getValue());
                    model.addAttribute(entry.getKey().toString(), entry.getValue());
                }
            return "jqueryMobile";
        }
    }

    在Controller中将如下参数写进了jsp页面

        timestamp=1449132293
        nonceStr=fb4eaa58-6d53-40a8-a8fa-7033e9768a8a
        signature=7ad32da3f82cb36492de935a60727d3053d33f4b

    其次编写jsp页面的代码
    在jsp页面中需要将wx.config重的参数进行配置

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

    在页面中读值

        <input id="timestamp" type="hidden" value="${timestamp}" />
        <input id="noncestr" type="hidden" value="${nonceStr}" />
        <input id="signature" type="hidden" value="${signature}" />

    然后赋值

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

    写一个按钮和输入框,将扫描的结果放进输入框

    <input id="id_securityCode_input">
    <button id="scanQRCode">扫码</button>

    给按钮绑定事件,并执行微信扫码

    $("#scanQRCode").click(function() {
                wx.scanQRCode({
                    // 默认为0,扫描结果由微信处理,1则直接返回扫描结果
                    needResult : 1,
                    desc : 'scanQRCode desc',
                    success : function(res) {
                        //扫码后获取结果参数赋值给Input
                        var url = res.resultStr;
                        //商品条形码,取","后面的
                        if(url.indexOf(",")>=0){
                            var tempArray = url.split(',');
                            var tempNum = tempArray[1];
                            $("#id_securityCode_input").val(tempNum);
                        }else{
                            $("#id_securityCode_input").val(url);
                        }
                    }
                });
            });

    运行结果如图
    扫一包抽纸

    抽纸

    扫描结果

    放进input

    扫网址

    这里写图片描述

    这里写图片描述

    微信JS-SDK中的扫一扫就基本实现了。

    参考文献

    微信JS-SDK说明文档
    一篇博客

    展开全文
  • 功能需求:微信公众号里网页需要调用扫一扫功能 实现工具:微信JS-SDK接口 接口官方文档微信JS-SDK说明文档 微信JS-SDK介绍: 微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。 ...

    功能需求:微信公众号里网页需要调用扫一扫功能

    实现工具:微信JS-SDK接口

    接口官方文档:微信JS-SDK说明文档

    微信JS-SDK介绍:

    微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。

    通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

    JSSDK使用步骤:

    步骤一:获得域名

    先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

    步骤二:引入JS文件

    在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.4.0.js

    如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)。

    备注:支持使用 AMD/CMD 标准模块加载方法加载

    步骤三:通过config接口,验证权限配置

    所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

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

    JS-SDK使用权限签名算法

    签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

    步骤四:通过ready接口处理成功验证

    wx.ready(function(){
        // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
    //config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,
    //则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,
    //则可以直接调用,不需要放在ready函数中。
    });

    步骤五:通过error接口处理失败验证

    wx.error(function(res){
        // config信息验证失败会执行error函数,如签名过期导致验证失败,
    //具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,
    //对于SPA可以在这里更新签名。
    });

     接口调用说明

    所有接口通过wx对象(也可使用jWeixin对象)来调用,参数是一个对象,除了每个接口本身需要传的参数之外,还有以下通用参数:

    1.success:接口调用成功时执行的回调函数。

    2.fail:接口调用失败时执行的回调函数。

    3.complete:接口调用完成时执行的回调函数,无论成功或失败都会执行。

    4.cancel:用户点击取消时的回调函数,仅部分有用户取消操作的api才会用到。

    5.trigger: 监听Menu中的按钮点击时触发的方法,该方法仅支持Menu中的相关接口。

    备注:不要尝试在trigger中使用ajax异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用ajax的回包会还没有返回。

    以上几个函数都带有一个参数,类型为对象,其中除了每个接口本身返回的数据之外,还有一个通用属性errMsg,其值格式如下:

    调用成功时:"xxx:ok" ,其中xxx为调用的接口名

    用户取消时:"xxx:cancel",其中xxx为调用的接口名

    调用失败时:其值为具体错误信息

    在步骤三确认config配置成功之后,就可以调用微信的各种接口了,以调用扫一扫为例

    调起微信扫一扫接口

    wx.scanQRCode({
    needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
    scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
    success: function (res) {
    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
    }
    });

     

    参考文章:利用微信JSSDK调用微信扫一扫功能

    调用微信扫一扫接口 获取签名

     

     

     

    展开全文
  • 根据微信api,整理了一下调用微信扫一扫功能。如有问题请指正: 以下是具体步骤: 1、绑定域名(很关键)2、引入JS文件(很简单) script src="http://res.wx.qq.com/open/js/jweixin-1.1.0.js">script>3、通过...

    根据微信api,整理了一下调用微信扫一扫功能。如有问题请指正:

    以下是具体步骤:

    1. 1、绑定域名(很关键
    2. 2、引入JS文件(很简单)<scriptsrc="http://res.wx.qq.com/open/js/jweixin-1.1.0.js"></script>
    3. 3、通过config接口注入权限验证配置(很重要
    4. 4、通过ready接口处理成功验证(还没用到)
    5. 5、通过error接口处理失败验证(还没用到)
    绑定域名(第一步):


    以下是通过config接口注入权限验证配置(第三步):

    下面是js代码:

    $.ajax({
                type : "post",
                url : "/weixin/open/weixinOAuthCallback_sign.action",
                data : {
                    "url" : location.href.split('#')[0]
                },
                dataType : "json",
                success : function(data) {
                    wx.config({ 
                        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。   
                        appId: data.appId, // 必填,公众号的唯一标识
                        timestamp: data.timestamp, // 必填,生成签名的时间戳
                        nonceStr: data.nonceStr, // 必填,生成签名的随机串
                        signature: data.signature,// 必填,签名,见附录1
                        jsApiList: [
                                      'checkJsApi',
                                      'startRecord',
                                      'stopRecord',
                                      'translateVoice',
                                      'scanQRCode',// 微信扫一扫接口
                                      'openCard'
                                   ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 
                    }); 
                    wx.error(function(res) {
                        alert("出错了:" + res.errMsg);//这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
                    });
    
                    wx.ready(function() {
                        wx.checkJsApi({
                             jsApiList : ['scanQRCode'],
                             success : function(res) {
    
                             }
                        });
                    });
                    //点击按钮扫描二维码
                    $("#scanQRCode").click(function(){
                        wx.scanQRCode({
                            needResult : 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                            scanType : [ "qrCode"], // 可以指定扫二维码还是一维码,默认二者都有
                            success : function(res) {
                                var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                                window.location.href = result;//因为我这边是扫描后有个链接,然后跳转到该页面
                            },
                            error : function(){
                                console.log('123');
                            }
                        });
                    });
                }
            });
    

    下面是后台java代码,用于获取sign签名AppID:微信公众号应用的唯一标识,AppSecret微信公众号的私匙(相当于密码)

    /**
           * 得到jsApi-ticket
           * @return
           */
          @SuppressWarnings({ "static-access", "unused" })
          private String getJsapiTicket(){
                HttpServletRequest request = ServletActionContext.getRequest();
                String code = request.getParameter("code");
            String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?"; 
            String params = "grant_type=client_credential&appid=" + APPID + "&secret=" + APP_SECRET + ""; 
            String result = this.httpGet(requestUrl+params); 
            String accessToken = com.alibaba.fastjson.JSONObject.parseObject(result).getString("access_token"); 
           
            requestUrl = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?"; 
            params = "access_token=" + accessToken + "&type=jsapi"; 
            result = this.httpGet(requestUrl+params); 
            String jsapi_ticket = com.alibaba.fastjson.JSONObject.parseObject(result).getString("ticket"); 
            return jsapi_ticket;
        }
          /**
           * 获取sign签名
           * @return
           */
          public String sign() {
                HttpServletRequest request = ServletActionContext.getRequest();
            Map ret = new HashMap();
            String url = request.getParameter("url");
            String jsapi_ticket= getJsapiTicket();
            String nonce_str = create_nonce_str();
            String timestamp = create_timestamp();
            String string1;
            String signature = "";
            int length=url.indexOf("#");
                String uri = url;
                if(length > 0){
                      uri=url.substring(0,length);//当前网页的URL,不包含#及其后面部分
                }
            //注意这里参数名必须全部小写,且必须有序
            string1 = "jsapi_ticket=" + jsapi_ticket +
                      "&noncestr=" + nonce_str +
                      "&timestamp=" + 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("appId", APPID);
            ret.put("url", uri);
            ret.put("jsapi_ticket", jsapi_ticket);
            ret.put("nonceStr", nonce_str);
            ret.put("timestamp", timestamp);
            ret.put("signature", signature);
            System.out.println(signature);
            this.setJsonString(JsonUtil.toJSONString(ret));
            return "json";
        }
        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);
        }
          /**
         * 发送get请求
         * @param url    路径
         * @return
         */ 
        public static String httpGet(String url){ 
            //get请求返回结果 
             String strResult = null; 
            try { 
                DefaultHttpClient client = new DefaultHttpClient(); 
                //发送get请求 
                HttpGet request = new HttpGet(url); 
                HttpResponse response = client.execute(request); 
      
                /**请求发送成功,并得到响应**/ 
                if (response.getStatusLine().getStatusCode() == org.apache.http.HttpStatus.SC_OK) { 
                    /**读取服务器返回过来的json字符串数据**/ 
                      strResult = EntityUtils.toString(response.getEntity()); 
                } else { 
                    logger.error("get请求提交失败:" + url); 
                } 
            } catch (IOException e) { 
                logger.error("get请求提交失败:" + url, e); 
            } 
            return strResult; 
        }
    

    展开全文
  • 微信开发之调用扫一扫接口

    千次阅读 2017-12-01 22:39:33
    前言这是自己第次进行微信开发,自己之前一直以为很简单,但是自己真正来做的时候才发现会遇到很多问题。认识的个小伙伴进行微信开发已经挺久了,如果需要可以直接问他或者将他的源代码拿过来。但是想想这个项目...

    前言

    这是自己第一次进行微信开发,自己之前一直以为很简单,但是自己真正来做的时候才发现会遇到很多问题。认识的一个小伙伴进行微信开发已经挺久了,如果需要可以直接问他或者将他的源代码拿过来。但是想想这个项目并不是很赶时间,因为做的算是一个公益项目,负责人对自己也很好。所以自己就憋着不去问别人,自己独立完成。折腾了一番以后,发现了很多坑,在点击按钮,弹出扫一扫界面的那一刹那,什么感觉呢?程序猿都懂的。

    调用扫一扫接口遇到的那些坑

    1、太过于相信官方的东西

    太过于相信官方的东西(这里没有黑腾讯的意思),调用接口如果想要一个demo的话,大家都会下载官方的demo,demo里面说的很清楚

    JAVA, Node, Python 部分代码只实现了签名算法,需要开发者传入 jsapi_ticket 和 url ,其中 jsapi_ticket 需要通过 http://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=ACCESS_TOKEN 接口获取,url 为调用页面的完整 url 。
    
    PHP 部分代码包括了获取 access_token 和 jsapi_ticket 的操作,只需传入 appid 和 appsecret 即可,但要注意如果已有其他业务需要使用 access_token 的话,应修改获取 access_token 部分代码从全局缓存中获取,防止重复获取 access_token ,超过调用频率。
    
    注意事项:
    1. jsapi_ticket 的有效期为 7200 秒,开发者必须全局缓存 jsapi_ticket ,防止超过调用频率。

    这里说的是php部分代码只需要传入appid,appsecret即可,但是我们真的这样传入的时候是不行的。因为自己接触服务器不久,就还没有看错误日志的习惯,不过现在我发现这个真的是太重要了。错误日志一定要看,一定要看,一定要看。打开错误日志,我们看看错误日志的内容

    PHP Notice:  curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in /var/www/html/wx/jssdk.php on line 95

    这是什么情况?额,原来是curl_setopt中的第三个参数并不是传入true,现在是应该传入2。当然不同的php版本我也不清楚,还希望看到的大佬能够指教。如果你的服务器的错误日志出现这个错误,那么就需要修改。

    2、invalid signature

    如果微信开发没有遇到这个问题,那就是不完整的人生,哈哈。网上遇到这个问题的人一大堆,解决的方法也是各种各样,我这里只是总结一下我解决的方法。还是从错误日志出发

    PHP Notice:  Undefined property: stdClass::$access_token

    这里的主要原因是json_decode函数的问题,官方文档是这样的

    $res = json_decode($this->httpGet($url));

    但是可以运行的是这样的,既然这里这样修改了,那么后面获取也不能通过->获取,而是通过[]获取。

    $res = json_decode($this->httpGet($url),true);

    总结

    虽然短短几句话就把自己遇到的坑说完了,但是解决过程却不是那么简单,不过每遇到这样一个问题,也就更加进步一点点。主要的收获首先就是看错误日志。根绝错误日志来寻找答案,会快很多。另外就是不要过分相信权威,因为版本或者其他问题,有些地方总是会不兼容。

    展开全文
  • 参考微信JS-SDK说明文档 尽管作用不是很大1.首先在JSP页面引入http://res.wx.qq.com/open/js/jweixin-1.1.0.js2.通过config接口注入权限验证配置
  • Java调用微信扫一扫

    千次阅读 热门讨论 2019-07-24 18:49:48
    公司公众号二次开发需要调用微信扫一扫接口,在网上查了很多相关资料感觉也不是特别的全,在此特意整理一遍资料,供给自己和大家参考,如有相关缺陷请大家指出。 步骤一:绑定域名 ...id=mp1421141115打开微信官方...
  • 微信开发js文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 自己可以先看下对应的文档,里面有介绍,主要的就是 配置js安全域名,前端配置wx.config,调用对应的接口; 首先需要...
  • 现实项目中业务需要开发微信公众号,业务场景其中有需求要使用微信扫一扫,奇怪的问题产生了,第一次进入页面的时候调用成功没有问题,当做别的操作之后,在点击调用微信扫一扫 发现无路如何都调用不起来了。...
  • 微信开发(微信扫一扫)商品创建

    千次阅读 2016-10-06 19:26:40
    微信公众平台开放“扫一扫”功能,同时开放相关接口供有权限的...扫一扫接口主要调用流程如下:    权限获取 扫一扫功能申请只能在公众平台上完成,功能申请开通后将直接获得接口权限。权限包括:商品经营类目
  • 在实现微信扫一扫功能时需要做三件事: 1.在需要调用微信扫一扫的页面加载微信的js: <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> 2.在调用接口...
  • 1、安装、引用微信js-sdk #通过yarn安装 yarn add weixin-js-sdk #通过npm安装 npm i weixin-js-sdk 项目中的引用 import wx from 'weixin-js-sdk' ...wx.scanQRCode 调用微信扫一扫接口(官...
  • 微信开发 --- 调用微信接口

    千次阅读 2018-11-17 15:31:02
    调用微信扫接口 步骤:绑定域名 微信公众号绑定域名 步骤二:引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js 请注意,如果你的页面启用...
  • H5如何拉起微信扫一扫

    万次阅读 2018-03-19 10:57:22
    扫一扫功能 项目开发中有很多场景需要拉起微信扫一扫,在这里主要记录下开发过程中遇到的一些问题,以及解决方案。仅供参考 拉起方法 官方的sdk文档关于使用方法写的很详细 ...基本上对照官方文档的做法都能完成 ...
  • JAVA调用微信扫一扫

    千次阅读 2016-09-26 16:19:27
    java开发,调用微信扫一扫功能。
  • 微信小程序扫一扫的功能实现

    千次阅读 2018-12-06 11:08:44
    突然接到了个小程序的项目,手上的管理后台终于可以放下一段时间了 ,算了一下,今年几乎都在写...今天写一个关于微信小程序扫一扫的功能。 小程序开发其实还是比较简单的,有完善的api文档和大多数前辈的网络博客助...
  • 微信小程序开发之扫码 扫一扫 wx.scanCode()

    万次阅读 热门讨论 2017-02-12 22:04:07
    仔细读了文档,这个API只是调起了客户端码界面,码成功后返回对应的结果. 微信小程序中并没有提供打开链接的API.那么这个码是做什么用的呢?不可能像我一样个文字玩玩. 想象空间很大啊. API实在简单,我...
  • 最近一段时间由于业务需要在搞微信公众号开发,业务里面涉及到了微信公众号开发JS-SDK开发中扫一扫功能,由于没有之前没有这方面经验,首先肯定先仔细阅读微信开发文档了。 首先先说一下JS-SDK微信扫一扫功能接入...
  • 最近微信公众号网页开发项目遇到一个问题:在吊起扫一扫功能的时候,Android端正常,iOS端总是提示config:fail 或者签名失败(sigxxxxxx)Vue的项目,前几个类似的项目没遇到这种问题。这次微信配置和吊起的代码也...
  • 由于需要调用微信扫一扫功能,所以要先配置一下微信需要的信息 1.官方接口文档微信JS-SDK说明文档 2.配置js安全域名:登录公众号 -》公众号设置 -》功能设置 -》JS接口安全域名 开发步骤: 1.引入js文件 CDN引入...
1 2 3 4 5 ... 20
收藏数 6,890
精华内容 2,756
关键字:

微信开发文档 扫一扫接口