微信开发之 获取用户地址

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.Security;
using System.Web.Script.Serialization;
using sohovan.com.wxapi;

namespace WXKF
{
    public class JsApi
    {
        JavaScriptSerializer Jss = new JavaScriptSerializer();

        public JsApi() { }

        #region 验证JsApi权限配置
        /// <summary>
        /// 获取JsApi权限配置的数组/四个参数
        /// </summary>
        /// <param name="Appid">应用id</param>
        /// <param name="Appsecret">密钥</param>
        /// <returns>json格式的四个参数</returns>
        public string GetJsApiInfo(string Appid, string Appsecret)
        {
            string timestamp = CommonMethod.CommonMethod.ConvertDateTimeInt(DateTime.Now).ToString();//生成签名的时间戳
            string nonceStr = CommonMethod.CommonMethod.GetRandCode(16);//生成签名的随机串
            string url = System.Web.HttpContext.Current.Request.Url.AbsoluteUri.ToString();//当前的地址
            string jsapi_ticket = "";
            //ticket 缓存7200秒
            if (System.Web.HttpContext.Current.Session["jsapi_ticket"] == null)
            {
                jsapi_ticket = CommonMethod.CommonMethod.WebRequestPostOrGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + BasicApi.GetTokenSession(Appid, Appsecret) + "&type=jsapi", "");
                System.Web.HttpContext.Current.Session["jsapi_ticket"] = jsapi_ticket;
                System.Web.HttpContext.Current.Session.Timeout = 7200;
            }
            else
            {
                jsapi_ticket = System.Web.HttpContext.Current.Session["jsapi_ticket"].ToString();
            }
            Dictionary<string, object> respDic = (Dictionary<string, object>)Jss.DeserializeObject(jsapi_ticket);
            jsapi_ticket = respDic["ticket"].ToString();//获取ticket
            string[] ArrayList = { "jsapi_ticket=" + jsapi_ticket, "timestamp=" + timestamp, "noncestr=" + nonceStr, "url=" + url };
            Array.Sort(ArrayList);
            string signature = string.Join("&", ArrayList);
            signature = FormsAuthentication.HashPasswordForStoringInConfigFile(signature, "SHA1").ToLower();
            return "{\"appId\":\"" + Appid + "\", \"timestamp\":" + timestamp + ",\"nonceStr\":\"" + nonceStr + "\",\"signature\":\"" + signature + "\"}";
        }
        #endregion
    }
}

  

 public string appId;
        public string timestamp;
        public string nonceStr;
        public string signature;
        protected void Page_Load(object sender, EventArgs e)
        {
            JsApi jsapi = new JsApi();
            string data = jsapi.GetJsApiInfo("***", "***");
            JObject jo = (JObject)JsonConvert.DeserializeObject(data);
            appId = jo["appId"].ToString();
            timestamp = jo["timestamp"].ToString();
            nonceStr = jo["nonceStr"].ToString();
            signature = jo["signature"].ToString();
            //Response.Write("<script type=‘text/javascript‘>btn();</script>");
            // ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>btn();</script>"); 

        }

  

    <title>请稍等,定位中。。。</title>
    <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script src="Scripts/jquery-1.7.1.min.js"></script>
     <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=IWf1r4wh9pdpXUPOwGvkLxYW"></script>
    <script src="Scripts/cvi_busy_lib.js"></script>

    <script>
        function wxconfig() {
            wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: ‘<% =appId%>‘, // 必填,公众号的唯一标识
                timestamp: ‘<% =timestamp%>‘, // 必填,生成签名的时间戳
                nonceStr: ‘<% =nonceStr%>‘, // 必填,生成签名的随机串
                signature: ‘<% =signature%>‘,// 必填,签名,见附录1
                jsApiList: [
                      ‘onMenuShareTimeline‘,
                       ‘onMenuShareAppMessage‘,
                       ‘onMenuShareQQ‘,
                       ‘onMenuShareWeibo‘,
                       ‘getLocation‘,
                       ‘openLocation‘

                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
            });
        }
        var getParam = function (name) {
            var search = document.location.search;
            var pattern = new RegExp("[?&]" + name + "\=([^&]+)", "g");
            var matcher = pattern.exec(search);
            var items = null;
            if (null != matcher) {
                try {
                    items = decodeURIComponent(decodeURIComponent(matcher[1]));
                } catch (e) {
                    try {
                        items = decodeURIComponent(matcher[1]);
                    } catch (e) {
                        items = matcher[1];
                    }
                }
            }
            return items;
        };
        wx.ready(function () {
            wx.getLocation({
                type: ‘wgs84‘, // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入‘gcj02‘
                success: function (res) {
                    var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
                    var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
                    var speed = res.speed; // 速度,以米/每秒计
                    var accuracy = res.accuracy; // 位置精度
                  alert("维度:" + latitude + "     经度:" + longitude);

                },
                cancel: function (res) {
                    alert(res);
                    alert(‘用户拒绝授权获取地理位置‘);
                }
            });
        });
        wxconfig();

    </script>

  

时间: 2024-12-21 08:24:11

微信开发之 获取用户地址的相关文章

微信商城中使用微信支付接口获取用户地址

授人以鱼不如授人以渔 微信支付获取用户地址 使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能. 微信商城中,使用微信支付获取用户的收货地址,可以省略用户输入地址信息的繁复流程,提高用户体验. 但是可能是因为牵扯到用户隐私,所以在使用过程中,需要用户自己主动选择使用该功能,并且是通过点击的操作,我们才可以获取到用户的收货地址,这一点是要注意的. 操作流程如下: 1.用户打开购物车页面,点击结算,跳转到一个微信的oauth2的页面,地址为:https://open.we

c# 微信开发 《获取用户的信息》

public const string WeiXin_User_GetInfoUrl = "https://api.weixin.qq.com/cgi-bin/user/info?access_token={0}&openid={1}&lang=zh_CN"; /// <summary> /// 根据OpenID 获取用户在微信的基本信息(需关注公众号) /// </summary> /// <param name="openId

.NET 微信开发之 获取用户数据

通过微信接口获取用户信息主要分为以下几个步骤: a.获取公众号的access_token b.通过查询所有用户OPenid接口获取所有用户. string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token=" + access_token; c.通过获取用户openid,然后通过openid获取用户数据 d.把用户信息添加到数据库中. 1.参数化查询以及添加用户信息到数据库方法 public void AddT

微信开发一获取用户授权(静默授权方式)

/// <summary> /// 获取用户授权返回json序列化为UserAuthorizeInfo /// </summary> /// <param name="code"></param> /// <returns></returns> public static UserAuthorizeInfo GetDicUserAuthorize(string code) { string url = "

asp微信公众号获取用户地址信息源码,可以获取省市县及坐标

============================================= 互相学习电话微信:18611436777(加微信注明事由) <!--#include file="Function.asp" --><% timestamp = Datediff("s","1970-01-01 00:00:00",now) nonceStr = MakeRandStr(32) signature = Get_Sign()

微信公众平台开发(85) 获取用户地理位置

本文介绍在微信公众平台上如何使用高级接口开发获取用户地理位置的功能. 一.获取用户地理位置接口 开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,上报地理位置以推送XML数据包到开发者填写的URL来实现. 推送XML数据包示例: <xml> <ToUserName><![CDATA[t

微信公众平台开发(86) 获取用户基本信息

本文介绍在微信公众平台上如何使用高级接口开发获取用户基本信息的功能. 一.获取用户基本信息接口 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的.对于不同公众号,同一用户的openid不同).公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称.头像.性别.所在城市.语言和关注时间. 获取用户基本信息 开发者可通过OpenID来获取用户基本信息.请使用https协议. 接口调用请求说明 http请求方式: GE

微信公众号获取用户信息致跳过的坑

有一段时间没有搞微信开发了 ,今天突然要改一下程序! 回头一看 微信的帮助文档太tm的稀烂的,太难懂了,这做个笔记以后看着方便 微信有2个ACCESS_TOKEN, 1,基础接口的token 获取接口是 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 2,用户网页授权access_token 获取接口地址是 https://api.weixin

微信小程序-获取用户信息和openid,session_key,

1:微信小程序获取用户信息:比如常用的 avatarUrl (用户头像),nickName (用户名称) 等等, (1):获取用户信息调用 wx.getUserInfo 代码如下: 直接请求接口就可以了,随后把数据存放到storage中,下次直接取 就不用再请求接口,, 2:获取 openid (1):请求wx.login 接口,代码如下: url:是微信提供的 appid:是小程序的appid secret:是小程序开发设置的 AppSecret 只要获取到这两项,用户信息可以用于页面,ope