微信jssdk配置的问题,使用MVC制作的demo
一,view代码
<script src="~/Scripts/jquery-3.3.1.js"></script> <script src="~/Scripts/jweixin-1.4.0.js"></script> @*<script src="~/Scripts/jweixin-1.0.0.js"></script>*@ <script>wx.config({debug: true,appId: "@ViewBag.AppId",timestamp: "@ViewBag.timestamp",nonceStr: "@ViewBag.nonceStr",signature: "@ViewBag.signature",jsApiList: ["checkJsApi","onMenuShareAppMessage",]});wx.ready(function () {wx.checkJsApi({jsApiList: ['onMenuShareAppMessage'], // 需要检测的JS接口列表,所有JS接口列表见附录2, success: function (res) {// 以键值对的形式返回,可用的api值true,不可用为false// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"} }});wx.error(function (res) {//alert(res); });wx.onMenuShareAppMessage({title: '测试', // 分享标题desc: '测试', // 分享描述link: 'http://chwmay.51mypc.cn/Home/Index', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致imgUrl: 'https://i.vzan.cc/image/liveimg/jpeg/2018/4/13/185209cf7bdd0050fd4ced84b0a64aded068ef.jpeg', // 分享图标type: 'link',dataUrl: '',success: function () {alert(1);},cancel: function () {// 用户取消分享后执行的回调函数 }});}) </script>
二,控制器代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using WebTestDemo.Code;namespace WebTestDemo.Controllers {/// <summary>/// 微信JSSDK的使用/// </summary>public class JssdkController : BaseController{public static string AppId = "";public static string timestamp = "";public static string nonceStr = "";public static string signature = "";public ActionResult Index(){timestamp = JssdkHelper.ConvertDateTimeInt(DateTime.Now).ToString(); //时间戳获取当前时间nonceStr = "Test" + new Random().Next(1, 1000) + "Demo"; //随机字符串没有固定的字符和没有特定的格式string url = HttpContext.Request.Url.ToString(); // url(当前网页的URL,不包含#及其后面部分)url = url.Substring(0, url.IndexOf('#') == -1 ? url.Length : url.IndexOf('#'));signature = JssdkHelper.ReturnSignature(timestamp, nonceStr, url);ViewBag.AppId = JssdkHelper.appid;ViewBag.timestamp = timestamp;ViewBag.nonceStr = nonceStr;ViewBag.signature = signature;return View();}} }
三,JSSDK帮助类代码
public static class JssdkHelper{public const string appid = "你的appid";public const string appsecret = "你的appsecret ";public const string baseurl = "https://api.weixin.qq.com/";public const string openurl = "https://open.weixin.qq.com/";public const string token = "test";public static int ConvertDateTimeInt(DateTime time){DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));return (int)(time - startTime).TotalSeconds;}/// <summary>/// 返回签名/// </summary>/// <param name="signature"></param>/// <param name="timestamp"></param>/// <param name="nonce"></param>/// <returns></returns>public static string ReturnSignature(string timestamp, string nonce, string url){string tmpStr = string.Empty;string jsapi_ticket = Getjsapi_ticket();SortedList<string, string> SLString = new SortedList<string, string>();SLString.Add("jsapi_ticket", jsapi_ticket);SLString.Add("noncestr", nonce);SLString.Add("timestamp", timestamp);SLString.Add("url", url);foreach (KeyValuePair<string, string> des in SLString) //返回的是KeyValuePair,在学习的时候尽量少用var,起码要知道返回的是什么 {tmpStr += des.Key + "=" + des.Value + "&";}if (tmpStr.Length > 0)tmpStr = tmpStr.Substring(0, tmpStr.Length - 1);return Utils.SHA1Encrypt(tmpStr);}/// <summary>/// 获取Token/// </summary>/// <returns></returns>public static string GetToken(){string token = CookieHelper.GetCookie(CookieHelper.StrWXTokenCookieName);if (string.IsNullOrEmpty(token)){string url = string.Format("{0}cgi-bin/token?grant_type=client_credential&appid={1}&secret={2}", baseurl, appid, appsecret);string str = Utils.HttpGet(url);JObject j = JObject.Parse(str);token = j.Value<string>("access_token");}return token;}public static string Getjsapi_ticket(){string access_token = GetToken();string url = string.Format("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={0}&type=jsapi", access_token);string backStr = HttpClientHelper.GetResponse(url);//string backStr = "{ \"errcode\":0,\"errmsg\":\"ok\",\"ticket\":\"kgt8ON7yVITDhtdwci0qeZWDYY9llY5RrKsWxKD--zOUIRYqJ1XwMo305bwZhG22b5hOl-TZ-gZAXCbMMHwvCw\",\"expires_in\":7200}";string str_ticket = backStr.Split(',')[2].Split(':')[1];string Jsapi_ticket = str_ticket.Substring(1, str_ticket.Length - 2);return Jsapi_ticket;}}
四,invalid url domain出现后的解决方法
在微信开发文档中有一个这样的解决方法,当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,仅支持80(http)和443(https)两个端口,因此不需要填写端口号,但这个是什么意思呢?
1,建议在IIS部署的网站是80端口,如果是还出现问题就看2,就是JS接口安全域名这里的配置有问题,js安全域名怎么配置呢?
2,先去掉http,比如我们的域名是www,xxx.com,我们不能配置成http://www,xxx.com/Jssdk/Index,要去掉http://以及后面的文件目录(/Jssdk/Index),写成www,xxx.com即可
转载于:https://www.cnblogs.com/May-day/p/9662878.html
微信jssdk配置的问题,使用MVC制作的demo相关推荐
- php调用jssdk转发_php一个文件搞定微信jssdk配置
php一个文件搞定微信jssdk配置: 包括缓存,包括https通讯,获取微信access_token,签名什么的都有.但是防范性编程做得比较少,商业用的话,需要完善下代码. 使用姿势 ^ajax(C ...
- php微信sdk接口文档,php一个文件搞定微信jssdk配置
学习PHP的小伙伴在处理微信jssdk配置的时候可能会遇到一些问题.以下是百分网小编精心为大家整理的php一个文件搞定微信jssdk配置,希望对大家有所帮助!更多内容请关注应届毕业生网! 包括缓存,包 ...
- 微信分享链接自定义文案,微信jssdk配置
需要公众号appid,APPSECRET,与公众号绑定的js安全域名 三样就可以完成微信jssdk的配置,这里以微信分享自定义文案链接为例 一.前端vue页面编写 1.设置data参数 2.设置js参 ...
- java 配置微信js sdk_解析微信JS-SDK配置授权,实现分享接口
微信开放的JS-SDK面向网页开发者提供了基于微信内的网页开发工具包,最直接的好处就是我们可以使用微信分享.扫一扫.卡券.支付等微信特有的能力.7月份的时候,因为这个分享的证书获取问题深深的栽了一坑, ...
- 微信jssdk,实现多图上传的一点心得
一.首先在common.js里封装一个函数,在需要调用jsSDK的页面引用此方法即可实现微信的信息配置function signatureJSSDK() { var url = window.loca ...
- vue 使用微信jssdk, 调用微信相册上传图片
vue 使用微信jssdk 1.引入weixin-js-sdk npm install weixin-js-sdk 使用文档 https://www.npmjs.com/package/weixin- ...
- java公众号图片上传_java微信公众号上传下载图片,springmvc demo
[实例简介] 微信上传下项目使用说明: 1.本项目适合学习springmvc学者(springmvc demo), url(http://localhost:8082/com.demo.weixin/ ...
- 使用weixin4j开发微信JS-SDK微信配置接口实现分享朋友圈
微信JS-SDK网页开发 本文带大家使用weixin4j生成wx.config所需要的参数. 说明:微信JSSDK使用的基础步骤请参考官方文档. 开发案例 本文以springmvc框架restful为 ...
- 微信JSSDK开发信息配置
微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享 ...
最新文章
- wchar用wcout输出正常cout是?
- 验证Ross《随机过程》(第二版)1.9C
- ES6新特性_Promise实践练习-多个文件内容读取---JavaScript_ECMAScript_ES6-ES11新特性工作笔记028
- 监控三个指标 并不代表你能监控Tuxedo
- 什么时候应该避免注释代码?
- JVM监控及诊断工具GUI篇之Arthas(四):monitor、watch、trace相关指令
- 机器学习基石 之 三大学习原则(Three Learning Principles)
- 达梦数据库DSC小记
- 结构性用工荒也是用工荒
- Android黄油刀插件使用记录
- Alist+PotPlayer实现高清影视在线观看
- i5功耗最低的cpu_i5并非必须 教你配高效低功耗游戏平台
- 二段式FPGA的状态机
- VS2019+OpenCV配置
- 电视云视听服务器无响应怎么回事,云视听企鹅停服怎么办?原因是什么?
- 远程控制软件PcAnyWhere教程图解
- 【编程之路(007)扫雷游戏】(C语言实现)
- 计算机Zoom和Trace功能键,求corel painter快捷键完全版?
- linux中安装软件格式错误,linux安装文件报错
- HTML怎么制作镂空文字遮罩,用纯CSS实现镂空效果的示例代码