• 微信公众平台开发


    1.使用JSSDK的时候,getLocation返回的坐标在openLocation有偏差,因为getLocation返回的是gps坐标,openLocation打开的腾讯地图为火星坐标,需要第三方自己做转换,6.2版本开始已经支持直接获取火星坐标

    方式:type属性传入参数改为 gcj02 即可.

    wx.getLocation({
        type: 'gcj02', //默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
        success: function (res) {
            //do some thing...
       },
       cancel: function (res) {
           alert('用户拒绝授权获取地理位置');
       }
    });

    在调用wx.openLocation的方法在模拟器和安卓手机上都可以用,在苹果手机上报错:config:openLocation, invalid_coordinate

    原因:微信默认将组件上绑定的参数都当作字符串了,所以认为坐标点不正确,强制转换成number类型即可

    function set() {
        var wd = Number($("#wd").val());
        var jd = Number($("#jd").val());
        wx.openLocation({
            latitude: wd, // 纬度,浮点数,范围为90 ~ -90
            longitude: jd, // 经度,浮点数,范围为180 ~ -180。
            name: '未知', // 位置名
            address: '未知', // 地址详情说明
            scale: 14, // 地图缩放级别,整形值,范围从1~28。默认为最大
            infoUrl: 'http://weixin.qq.com' // 在查看位置界面底部显示的超链接,可点击跳转
        });
    }

    如果要根据经纬度查找详细地址,则可以用相关的地图API去调用获取.

    2.调取微信扫一扫SDK时,有的设备,有的时候会直接弹出扫描结果,就是整个页面只显示扫描结果,不知道原因,知道的网友请告知,谢谢

    我的解决方式:在调用wx.scanQRCode后的回调函数中执行页面页面跳转
    wx.scanQRCode({
        needResult:1,// 默认为0,扫描结果由微信处理,1则直接返回扫描结果(必需参数)
        desc:'scanQRCode desc',//(不知道)
        scanType:["qrCode","barCode"], //可以指定扫二维码还是一维码,默认二者都有(可选参数)
        success: function (res) {
            $.ajax({
          url:
    "请求页面做些事情",       data: {参数...},       type: "post",       dataType: "text",
          success:
    function (msg) { //do some thing... },       error: function (data) { alert(data, "error");       },       complete: function (data) { if (data.responseText.indexOf('|')) { location.href = "PumpBindCar.aspx"; //不管怎么样做一下页面跳转,可屏蔽此问题 } } });} });

     3.在做后台为调用微信JSSDK进行签名,获取url参数的时候,是需要获取调用者所在的页面的路径的.而在Jquery Mobile框架中,使用<a>标签做跳转页面,herf到另一个页面时,默认是以ajax的方式去请求该页面的,此时可以发现请求过去的页面中的Request.UrlReferrer.AbsolutePath路径仍旧是原页面。所以需要在a标签上面加上data-ajax=“false”,这样就是跳转页面而非回传页面,使用后台获取的路径也是对的.

    此时解决方式:将a标签上加上data-ajax="false" 属性。

     4.微信调用JS SDK的时候,调用某接口,提示Config:invalid signature(签名无效)
    我遇到的原因是URl不正确,在微信中测试不能直接复制链接来查看其URL,那个URL并非签名所需的URL,要查看正确的URL,需要使用js查看:location.href.split('#')[0]。
    官方:invalid signature签名错误。建议按如下顺序检查:
    • 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
    • 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
    • 确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。
    • 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
    • 确保一定缓存access_token和jsapi_ticket。
    • 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败

    5.使用JSSDK接口时,wx.config 中配置的参数均正确,且能通过js接口工具的校验,若提示错误:

    config:invalid url donmain 

    则是微信号中js域名未配置的原因,将此处域名配置好,然后按照设置中的操作将用于验证用的txt文档下载放到网站根目录下即可

    若提示:config:invalid signature 

    排除配置及url不正确的情况,因为Access_token和Jsapi_ticket 是获取之后存到数据库,过期再重新获取的,所以将上次获取的全部删掉让其重新获取,然后就可以了....

  • 相关阅读:
    re正则表达式公式讲解3
    re正则表达式2
    re正则表达式公式讲解1
    洛谷 P2962 [USACO09NOV]灯Lights
    9.26模拟赛
    BZOJ 1567: [JSOI2008]Blue Mary的战役地图

    洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
    洛谷P3252 [JLOI2012]树
    P3183 [HAOI2016]食物链
  • 原文地址:https://www.cnblogs.com/sky-gfan/p/5044923.html
Copyright © 2020-2023  润新知