首先请看网址:

https://www.w3cschool.cn/weixinkaifawendang/h8ap1qe5.html

重点说下怎么配置wx.config(为了安全,所有的参数都在服务端获取)

var link = location.href;
$.ajax({
  url: "/WxJSSDK/WxJS_SDK.aspx/GetInfoMation",//后台给你提供的接口
  type: "Post",
  data: "{ 'url': '"+link+"' }",
  async: false,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (data) {
    var datad = JSON.parse(data.d); //转译为Json字符串
    wx.config({
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
      appId: datad.appid, // 必填,公众号的唯一标识
      timestamp: datad.timestamp, // 必填,生成签名的时间戳
      nonceStr: datad.noncestr, // 必填,生成签名的随机串
      signature: datad.signature,// 必填,签名,见附录1
      jsApiList: [
        "openLocation"
      ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    });
    wx.error(function (res) {
      layer.msg(res);
    });
  },
  error: function (error) {
    layer.msg(error)
  }
});

访问的页面方法:

        #region 获取AccessToken
private static string GetAccessToken()
{
//https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
string tokenUrl = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", "client_credential", ConfigurationManager.AppSettings["appid"], ConfigurationManager.AppSettings["secret"]);
var wc = new WebClient();
var strReturn = wc.DownloadString(tokenUrl);return strReturn;
}
#endregion
#region 获取Jsapi_Ticket
private static string GetWeiXinJsapi_Ticket(string accessToken)
{
string tokenUrl = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type={1}", accessToken, "jsapi");
var wc = new WebClient();
var strReturn = wc.DownloadString(tokenUrl); //取得微信返回的json数据 return strReturn;
}
#endregion
#region 基础字符
private static string[] strs = new string[]
{
"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"
};
#endregion
#region 创建随机字符串
private static string CreatenNonce_str()
{
Random r = new Random();
var sb = new StringBuilder();
var length = strs.Length;
for (int i = ; i < ; i++)
{
sb.Append(strs[r.Next(length - )]);
}
return sb.ToString();
}
#endregion
#region 创建时间戳
private static long CreatenTimestamp()
{
return (DateTime.Now.ToUniversalTime().Ticks - ) / ;
}
#endregion
#region 签名算法
/// <summary>
/// 签名算法
///本代码来自开源微信SDK项目:https://github.com/night-king/weixinSDK
/// </summary>
/// <param name="jsapi_ticket">jsapi_ticket</param>
/// <param name="noncestr">随机字符串(必须与wx.config中的nonceStr相同)</param>
/// <param name="timestamp">时间戳(必须与wx.config中的timestamp相同)</param>
/// <param name="url">当前网页的URL,不包含#及其后面部分(必须是调用JS接口页面的完整URL)</param>
/// <returns></returns>
public static string GetSignature(string jsapi_ticket, string noncestr, long timestamp, string url, out string string1)
{
var string1Builder = new StringBuilder();
string1Builder.Append("jsapi_ticket=").Append(jsapi_ticket).Append("&")
.Append("noncestr=").Append(noncestr).Append("&")
.Append("timestamp=").Append(timestamp).Append("&")
.Append("url=").Append(url.IndexOf("#") >= ? url.Substring(, url.IndexOf("#")) : url);
string1 = string1Builder.ToString();return FormsAuthentication.HashPasswordForStoringInConfigFile(string1, "SHA1");
}
#endregion //GET api/GetInfoMation
/// <summary>
///初始化的数据调用微信接口返回参数
/// </summary>
/// <returns></returns>
[WebMethod]
public static string GetInfoMation(string url)
{
try
{
//生成tokcen
string tocken = GetAccessToken();
JObject TokenJO = (JObject)JsonConvert.DeserializeObject(tocken);
//验证签名
string Jsapi_Ticket = GetWeiXinJsapi_Ticket(TokenJO["access_token"].ToString());
JObject Jsapi_TicketJo = (JObject)JsonConvert.DeserializeObject(Jsapi_Ticket);
#region
string rtn = "";
string jsapi_ticket = Jsapi_TicketJo["ticket"].ToString();
string noncestr = CreatenNonce_str();
long timestamp = CreatenTimestamp();
string outstring = "";
string JS_SDK_Result = GetSignature(jsapi_ticket, noncestr, timestamp, url, out outstring);
//拼接json串返回前台
rtn = "{\"appid\":\"" + ConfigurationManager.AppSettings["appid"] + "\",\"jsapi_ticket\":\"" + jsapi_ticket + "\",\"noncestr\":\"" + noncestr + "\",\"timestamp\":\"" + timestamp + "\",\"outstring\":\"" + outstring + "\",\"signature\":\"" + JS_SDK_Result.ToLower() + "\"}";#endregion
return rtn;
}
catch (Exception ex)
{
return string.Empty;
}
}

调用接口方法(例如:打开地图):

//打开地图
function funOpenLocation(id)
{
var dataArray = [[40.036692, 116.425381, "北苑大酒店", "双营路12号 "], [40.020808, 116.433250, "北京会议中心", "北京市朝阳区来广营西路88号"], [39.818720, 119.505420, "国海宾馆", "河北省秦皇岛市北戴河东经路154号"]];
wx.openLocation({
latitude: dataArray[id][], // 纬度,浮点数,范围为90 ~ -90
longitude: dataArray[id][], // 经度,浮点数,范围为180 ~ -180。
name: dataArray[id][], // 位置名
address: dataArray[id][], // 地址详情说明
scale: , // 地图缩放级别,整形值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
});
}

调用微信内置的方法及wx.config的配置问题的更多相关文章

  1. 微信公众号对接JS-SDK接口 调用微信内置地图

    微信js-sdk开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 1.页面配置 引用微信js- ...

  2. 微信内置浏览器和小程序的 User Agent 区别及判断方法

    通过UA来判断不同的设备或者浏览器是开发者最常用的方式方法,而对于微信开发和小程序也是同样的一个情况,我们可以通过微信内置浏览器 User Agent 信息来判断其具体类型或者设备. 所以子凡就通过徒 ...

  3. 微信内置浏览器的JS API

    /**! * 微信内置浏览器的Javascript API,功能包括: * * 1.分享到微信朋友圈 * 2.分享给微信好友 * 3.分享到腾讯微博 * 4.新的分享接口,包含朋友圈.好友.微博的分享 ...

  4. 微信内置浏览器的JsAPI(WeixinJSBridge续)[转载]

    原文地址:  http://www.baidufe.com/item/f07a3be0b23b4c9606bb.html 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript ...

  5. 微信内置浏览器的JsAPI(WeixinJSBridge续)_Alien的笔记

    微信内置浏览器的JsAPI(WeixinJSBridge续)_Alien的笔记 微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏 之前有写过几篇关于微信内置浏览器(WebView) ...

  6. 微信内置浏览器私有接口WeixinJSBridge介绍(转)

    这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友.分享函数.隐藏工具栏.隐藏三个点按钮等功能,需要的朋友可以参考下 微信网页进入,右上角有三个小点,没错, ...

  7. 关于微信内置浏览器在ios上播放提示音的经验分享

    document.addEventListener("WeixinJSBridgeReady", function () { window.audio= new Audio() w ...

  8. 微信内置浏览器私有接口WeixinJSBridge介绍

    原文地址:http://www.3lian.com/edu/2015/05-25/216227.html 这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友 ...

  9. 微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏

    微信内置浏览器的JsAPI(WeixinJSBridge续)进入全屏 之前有写过几篇关于微信内置浏览器(WebView)中特有的Javascript API(Javascript Interface) ...

随机推荐

  1. (Java实现) 洛谷 P1319 压缩技术

    题目描述 设某汉字由N X N的0和1的点阵图案组成,如下图.我们依照以下规则生成压缩码.连续一组数值:从汉字点阵图案的第一行第一个符号开始计算,按书写顺序从左到右,由上至下.第一个数表示连续有几个0 ...

  2. Java实现 LeetCode 572 另一个树的子树(遍历树)

    572. 另一个树的子树 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树.s 的一个子树包括 s 的一个节点和这个节点的所有子孙.s 也可以看做它自身的一棵子树 ...

  3. Java实现 蓝桥杯VIP 算法训练 求完数

    问题描述 如果一个自然数的所有小于自身的因子之和等于该数,则称为完数.设计算法,打印1-9999之间的所有完数. 样例输出 与上面的样例输入对应的输出. 例: 数据规模和约定 1-9999 publi ...

  4. Java实现LeetCode_0035_SearchInsertPosition

    package javaLeetCode.primary; public class SearchInsertPosition_35 { public static void main(String[ ...

  5. svg 贝塞尔曲线图解(记录)

    path路径绘制中,绘制贝塞尔曲线的命令包括: Q 二次贝赛尔曲线 x1,y1 x,y T 平滑二次贝塞尔曲线 x,y C 曲线(curveto) x1,y1 x2,y2 x,y S 平滑曲线 x2, ...

  6. centos7上安装redis以及PHP安装redis扩展(二)

    PHP 使用 Redis 安装 开始在 PHP 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP. 接下来让我们安装 PH ...

  7. Github上可以涨薪30k的Java教程和实战项目终于可以免费下载了

    写在前面 大家都知道 Github 是一个程序员福地,这里有各种厉害的开源框架.软件或者教程.这些东西对于我们学习和进步有着莫大的进步,所以我有了这个将 Github 上非常棒的 Java 开源项目整 ...

  8. Source insight 提示: it is not currently available for write access

    点击阅读原文 使用sourceinsight编辑linux内核文件后不能保存,并且弹出窗口揭示:Error: "Z:\linux\kernel\kernel-2.6.13\scripts\k ...

  9. JVM内存结构详解

    从java编程语言说起... 1. Java编程语言简介 1.1 编程语言概述 系统级和应用级 系统级:C,C++,go,erlang 应用级:C#,Java,Python,Perl,Ruby,php ...

  10. [noi.ac省选模拟赛20200606]赌怪

    题目   点这里看题目. 分析   先特判掉\(K=2\)的情况.   首先可以考虑到一个简单 DP :   \(f(i)\):前\(i\)张牌的最大贡献.   转移可以\(O(n^2)\)地枚举区间 ...