1.申请微信公众账号
https://mp.weixin.qq.com/
2.公众账号配置配置
http://jingyan.baidu.com/article/d3b74d64c517051f77e609ed.html
3.Webconfig配置
<!--微信公共号配置 2017-03-29 by LHB-->
<!--微信AppId-->
<add key="WeixinCommonAccountAppId" value="----------------"/>
<!--微信AppSecret-->
<add key="WeixinCommonAccountAppSecret" value="------------------------"/>
4.cs代码(WXApiHelper)生成变量
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Senparc.Weixin.MP.Helpers;
using Senparc.Weixin.MP.Containers;
using Common;
using Util;
using Senparc.Weixin.Exceptions;
using System.Web.Caching;
namespace ZCJ
{
public class WXApiHelper
{
private const string JssWeixinTicket = "JssWeixinTicket";
public static readonly string appID = SysConfig.WeixinCommonAccountAppId;
public static readonly string appSecret = SysConfig.WeixinCommonAccountAppSecret;
public static string timestamp = JSSDKHelper.GetTimestamp();//生成签名的时间戳
public static string nonceStr = JSSDKHelper.GetNoncestr();//生成签名的随机串
/// <summary>
/// 分享微信:签名 参数配置
/// </summary>
public static string GetShareWeixinSignature(string url)
{
if (url.ToStringExt("").ToLower().Contains((SysConfig.WAPSiteDomain + "/dp/default.aspx").ToLower()))
{
url = url.Replace("default.aspx", "");
}
string ticket = string.Empty;
string signature = string.Empty;
//获取凭证ticket
ticket = GetWeixinTicket(appID, appSecret);
//签名
signature = JSSDKHelper.GetSignature(ticket, nonceStr, timestamp, url);
return signature;
}
/// <summary>
/// 最新获取/存取缓存(JssWeixinTicket)微信凭证
/// </summary>
/// <returns></returns>
private static string GetWeixinTicket(string appID, string appSecret)
{
string cacheValue = HttpContext.Current.Cache[JssWeixinTicket].ToStringExt();
if (string.IsNullOrWhiteSpace(cacheValue))
{
string ticket = string.Empty;
//获取凭证ticket
try
{
ticket = JsApiTicketContainer.TryGetJsApiTicket(appID, appSecret);
}
catch (ErrorJsonResultException ex)
{
ticket = "";
}
CacheItemRemovedCallback callBack = new CacheItemRemovedCallback(CallBack);
DateTime timeout = DateTime.Now.AddSeconds(7100);//缓存7100秒 ;微信保存时间7200秒(防止过期无法访问)
HttpContext.Current.Cache.Insert(JssWeixinTicket, ticket, null, timeout, Cache.NoSlidingExpiration, CacheItemPriority.Default, callBack);
}
string result = HttpContext.Current.Cache[JssWeixinTicket].ToStringExt("");
return result;
}
//缓存结束之后执行该处
private static void CallBack(string Keys, object Value, CacheItemRemovedReason reason)
{
}
}
}
5.js部分
<%--微信分享//必须引用该文件--%>
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script type="text/javascript">
wx.config({
debug: false, //调式模式,设置为ture后会直接在网页上弹出调试信息,用于排查问题
appId: appId, //必填,公众号的唯一标识
timestamp: timestamp, //必填,生成签名的时间戳
nonceStr: nonceStr, //必填,生成签名的随机串
signature: signature, // 必填,签名,见附录1
jsApiList: [ //需要使用的网页服务接口
'checkJsApi', //判断当前客户端版本是否支持指定JS接口
'onMenuShareTimeline', //分享给好友
'onMenuShareAppMessage', //分享到朋友圈
'onMenuShareQQ', //分享到QQ
'onMenuShareWeibo', //分享到微博
'onMenuShareQZone'//分享到QQ空间
]
});
wx.ready(function () { //ready函数用于调用API,如果你的网页在加载后就需要自定义分享和回调功能,需要在此调用分享函数。//如果是微信游戏结束后,需要点击按钮触发得到分值后分享,这里就不需要调用API了,可以在按钮上绑定事件直接调用。因此,微信游戏由于大多需要用户先触发获取分值,此处请不要填写如下所示的分享API
var title = "理财之家 | 小白理财新门户";
var link = '<%=Common.SysConfig.WAPSiteDomain%>';
var desc = "国企《理财周刊》杂志旗下新媒体平台,供应快速、全面、靠谱、实用的理财资讯和知识点。";
var imgUrl = '<%=Common.SysConfig.WAPSiteDomain %>/_static/Images/article-ico.jpg';
//1.分享到朋友圈
wx.onMenuShareTimeline({ //例如分享到朋友圈的API
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//2.分享给朋友
wx.onMenuShareAppMessage({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
//type: '', // 分享类型,music、video或link,不填默认为link
//dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//3.分享到QQ
wx.onMenuShareQQ({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//4.分享到腾讯微博
wx.onMenuShareWeibo({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
//5.分享到QQ空间
wx.onMenuShareQZone({
title: title, // 分享标题
desc: desc, // 分享描述
link: link, // 分享链接
imgUrl: imgUrl, // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
},
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
});
wx.error(function (res) {
myApp.alert(res.errMsg, ""); //打印错误消息。及把 debug:false,设置为debug:ture就可以直接在网页上看到弹出的错误提示
});
</script>