微信自定义分享功能

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>








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值