微信公众号获取用户定位信息

描述:

用户扫描公众号二维码,公众号获取用户的定位信息

此功能需要使用微信JS-SDK来进行功能的实现,此处附上官网文档地址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

实现流程:(官方文档说明)

流程 详解:

页面js代码

1.首先在你要获取定位的html中引入js文件

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

2.config接口注入权限参数

var appIdd= '{$signPackage["appId"]}';
  var timestampd='{$signPackage["timestamp"]}';
  var nonceStrd='{$signPackage["nonceStr"]}';
  var signatured='{$signPackage["signature"]}';
  var mid = "{$mid}";
  wx.config({
    debug: true,
    appId:appIdd,
    timestamp:timestampd,
    nonceStr:nonceStrd ,
    signature:signatured,
    jsApiList: [
    // 所有要调用的 API 都要加到这个列表中
    'getLocation',
  ]
  });

3.通过ready接口处理成功/失败验证

wx.ready(function () {
    wx.checkJsApi({
      jsApiList: [
        'checkJsApi',
        'openLocation',
        'getLocation'
      ],
      success: function (res) {
        if (res.checkResult.getLocation == false) {
          alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');
          return;
        }
      }
    });
    wx.error(function(res){
      alert("接口调取失败")
    });

4.获取地理位置信息

wx.getLocation({
      success: function (res) {
        $.ajax({
          url:'/response/order/getMachineLocation',
          type: 'POST',
          data:{
            result:res,
            mid:mid
          }
        });
        // alert(JSON.stringify(res));
      },
      cancel: function (res) {
        alert('用户拒绝授权获取地理位置');
      }
    });

PHP代码

说明:获取签名包数据是利用的微信开发者包集成环境来实现的

1.导入开发者工具包,获取配置文件信息,主要是获取的appid

     import('include',EXTEND_PATH.'WeChatDeveloper/');
        $config = Config::get('wxconfig');
     //        $domain_name = Config::get('domain_name');
        $domain_name=request()->url();
        $JsApiSign=new WeChatScript($config);
        $data=$JsApiSign->getJsSign($domain_name);
    注意 URL 一定要动态获取

2.assign数据

$signPackage['appId']=$data['appId'];
        $signPackage['timestamp']=$data['timestamp'];
        $signPackage['nonceStr']=$data['nonceStr'];
        $signPackage['signature']=$data['signature'];
        
        $this->assign('signPackage',$signPackage);

效果图:

原文地址:https://www.cnblogs.com/lingxiukeji-wyj/p/14240248.html